From b3119952d50bda7191f047ef3abb546d69b4d938 Mon Sep 17 00:00:00 2001 From: DongHyeonka Date: Tue, 25 Aug 2026 21:01:52 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=A0=9C=EB=AA=A9=20=EC=95=84=EB=9E=98?= =?UTF-8?q?=EC=97=90=20=EB=AC=B8=EC=84=9C=EC=9D=98=20=EC=9A=94=EC=95=BD?= =?UTF-8?q?=EC=9D=84=20=EA=B7=B8=EB=A6=B0=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reference 머리말에 「이 기준을 쓰는 이유」와 같은 글이 나오고 있었다. Case 도 마찬가지로 바로 아래 「문제」와 같은 글을 두 번 말했다. 문서가 스스로 밝히는 한 줄 요약이 공개 응답에 없어서, 화면이 유형별 요약 (`problemSummary` / `scopeSummary`)을 대신 쓰고 있었다. Question 에는 이미 `summary` 가 있었으므로 셋이 같은 자리를 갖게 한다. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01XEHXspz4rv5pB5wiiSsVDu --- public/release-manifest.json | 10 +++++----- .../adapters/http/http-public-content-gateway.ts | 6 ++++-- .../contracts/management/canonical-source.json | 2 +- .../tech-log/contracts/public/canonical-source.json | 4 ++-- src/features/tech-log/contracts/public/generated.ts | 2 ++ .../contracts/public/public-api.openapi.yaml | 12 ++++++++++++ .../tech-log/contracts/studio/canonical-source.json | 2 +- .../tech-log/public-reference-mapping.test.ts | 3 +++ 8 files changed, 30 insertions(+), 11 deletions(-) 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",