diff --git a/public/release-manifest.json b/public/release-manifest.json index 7284e0e..0627d5f 100644 --- a/public/release-manifest.json +++ b/public/release-manifest.json @@ -38,28 +38,28 @@ }, "contractSet": { "setAlgorithm": "CA_CONTRACT_SET_V1", - "setDigest": "sha256:bafc39b2210dc792a763567b3a0f69da42004949899a8ec289c8c0ea9ad7a064", + "setDigest": "sha256:104bab24221f6d1a4c5fa7df68f5d027d227325a88fa507ebfcccebb439eb7c4", "packages": [ { "packageId": "@tech-log/management-contract", "version": "1.0.0", "digest": "sha256:72650735061fde627f5037571eb986cb758f44a546f065c88408399f8eec4a55", "runtimeProtocolVersion": 1, - "sourceRevision": "ff0c12a" + "sourceRevision": "0ffbc28" }, { "packageId": "@tech-log/public-contract", "version": "2.1.0", - "digest": "sha256:34efa8d2fdba959373081e5b2aace252be86bef243a80c238d8c4af50fa8eb0a", + "digest": "sha256:79949b286e2b4d28333d3376945960a319d247b675b23a73f50b75ce10994c5e", "runtimeProtocolVersion": 1, - "sourceRevision": "ff0c12a" + "sourceRevision": "0ffbc28" }, { "packageId": "@tech-log/studio-contract", "version": "3.1.0", "digest": "sha256:18dd46898be64b07f7e826409d19347512613ee2e22420028a4a0644f50f37dd", "runtimeProtocolVersion": 1, - "sourceRevision": "ff0c12a" + "sourceRevision": "0ffbc28" } ] } diff --git a/src/features/tech-log/adapters/http/http-public-content-gateway.ts b/src/features/tech-log/adapters/http/http-public-content-gateway.ts index ea70279..a993965 100644 --- a/src/features/tech-log/adapters/http/http-public-content-gateway.ts +++ b/src/features/tech-log/adapters/http/http-public-content-gateway.ts @@ -147,7 +147,9 @@ export function createHttpPublicContentGateway( return Object.freeze({ ...baseOf("CASE", slug, { title: body.title as string, - summary: body.problemSummary as string, + // 제목 바로 아래에 오는 것은 문서의 요약이다. 유형별 요약(문제/범위)을 쓰면 바로 아래 + // 블록과 같은 글을 두 번 말한다. + summary: (body.summary as string) ?? "", path: canonicalPath, primaryTopic: body.primaryTopic as never, primaryProject: body.primaryProject as never, @@ -192,7 +194,7 @@ export function createHttpPublicContentGateway( return Object.freeze({ ...baseOf("REFERENCE", slug, { title: body.title as string, - summary: body.scopeSummary as string, + summary: (body.summary as string) ?? "", path: canonicalPath, primaryTopic: body.primaryTopic as never, primaryProject: body.primaryProject as never, diff --git a/src/features/tech-log/contracts/management/canonical-source.json b/src/features/tech-log/contracts/management/canonical-source.json index 3c1a4f3..05f7eff 100644 --- a/src/features/tech-log/contracts/management/canonical-source.json +++ b/src/features/tech-log/contracts/management/canonical-source.json @@ -2,7 +2,7 @@ "packageId": "@tech-log/management-contract", "version": "1.0.0", "digest": "sha256:72650735061fde627f5037571eb986cb758f44a546f065c88408399f8eec4a55", - "sourceRevision": "ff0c12a", + "sourceRevision": "0ffbc28", "operationIds": [ "createCaseDraft", "getCaseForEdit", diff --git a/src/features/tech-log/contracts/public/canonical-source.json b/src/features/tech-log/contracts/public/canonical-source.json index b2d328c..538cf49 100644 --- a/src/features/tech-log/contracts/public/canonical-source.json +++ b/src/features/tech-log/contracts/public/canonical-source.json @@ -1,8 +1,8 @@ { "packageId": "@tech-log/public-contract", "version": "2.1.0", - "digest": "sha256:34efa8d2fdba959373081e5b2aace252be86bef243a80c238d8c4af50fa8eb0a", - "sourceRevision": "ff0c12a", + "digest": "sha256:79949b286e2b4d28333d3376945960a319d247b675b23a73f50b75ce10994c5e", + "sourceRevision": "0ffbc28", "operationIds": [ "getPublicSite", "getPublicHome", diff --git a/src/features/tech-log/contracts/public/generated.ts b/src/features/tech-log/contracts/public/generated.ts index 2957253..321c040 100644 --- a/src/features/tech-log/contracts/public/generated.ts +++ b/src/features/tech-log/contracts/public/generated.ts @@ -536,6 +536,7 @@ export interface components { indexable: boolean; case: { title: string; + summary?: string; problemSummary: string; conclusionSummary: string; environmentSummary?: string[]; @@ -571,6 +572,7 @@ export interface components { indexable: boolean; reference: { title: string; + summary?: string; scopeSummary: string; appliesTo: string[]; excludedScope: string[]; diff --git a/src/features/tech-log/contracts/public/public-api.openapi.yaml b/src/features/tech-log/contracts/public/public-api.openapi.yaml index bc34691..28dd4f5 100644 --- a/src/features/tech-log/contracts/public/public-api.openapi.yaml +++ b/src/features/tech-log/contracts/public/public-api.openapi.yaml @@ -1239,6 +1239,12 @@ components: properties: title: type: string + # 문서가 스스로 밝히는 한 줄 요약이다. 제목 바로 아래에 온다. + # + # 이 자리가 없어서 화면은 problemSummary / scopeSummary 를 대신 썼고, 그러면 머리말이 + # 바로 아래의 "문제" 나 "이 기준을 쓰는 이유" 와 같은 글을 두 번 말한다. + summary: + type: string problemSummary: type: string conclusionSummary: @@ -1325,6 +1331,12 @@ components: properties: title: type: string + # 문서가 스스로 밝히는 한 줄 요약이다. 제목 바로 아래에 온다. + # + # 이 자리가 없어서 화면은 problemSummary / scopeSummary 를 대신 썼고, 그러면 머리말이 + # 바로 아래의 "문제" 나 "이 기준을 쓰는 이유" 와 같은 글을 두 번 말한다. + summary: + type: string scopeSummary: type: string appliesTo: diff --git a/src/features/tech-log/contracts/studio/canonical-source.json b/src/features/tech-log/contracts/studio/canonical-source.json index bab32c8..6ae8885 100644 --- a/src/features/tech-log/contracts/studio/canonical-source.json +++ b/src/features/tech-log/contracts/studio/canonical-source.json @@ -2,7 +2,7 @@ "packageId": "@tech-log/studio-contract", "version": "3.1.0", "digest": "sha256:18dd46898be64b07f7e826409d19347512613ee2e22420028a4a0644f50f37dd", - "sourceRevision": "ff0c12a", + "sourceRevision": "0ffbc28", "operationIds": [ "getStudioSession", "getStudioDashboard", diff --git a/tests/features/tech-log/public-reference-mapping.test.ts b/tests/features/tech-log/public-reference-mapping.test.ts index 1499c18..50ab623 100644 --- a/tests/features/tech-log/public-reference-mapping.test.ts +++ b/tests/features/tech-log/public-reference-mapping.test.ts @@ -20,6 +20,8 @@ type ReferenceBody = test("the public Reference contract keeps the fields the screen reads", () => { const reference = { title: "", + // 제목 바로 아래에 오는 것은 문서의 요약이다. scopeSummary 는 그 아래 "이 기준을 쓰는 이유"다. + summary: "", scopeSummary: "", appliesTo: [], excludedScope: [], @@ -46,6 +48,7 @@ test("the public Reference contract keeps the fields the screen reads", () => { "publishedAt", "rules", "scopeSummary", + "summary", "tags", "title", "updatedAt",