fix: 제목 아래에 문서의 요약을 그린다

Reference 머리말에 「이 기준을 쓰는 이유」와 같은 글이 나오고 있었다. Case 도 마찬가지로
바로 아래 「문제」와 같은 글을 두 번 말했다.

문서가 스스로 밝히는 한 줄 요약이 공개 응답에 없어서, 화면이 유형별 요약
(`problemSummary` / `scopeSummary`)을 대신 쓰고 있었다. Question 에는 이미 `summary` 가
있었으므로 셋이 같은 자리를 갖게 한다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XEHXspz4rv5pB5wiiSsVDu
This commit is contained in:
DongHyeonka
2026-08-25 21:01:52 +09:00
co-authored by Claude Opus 5
parent 7211dd1a92
commit b3119952d5
8 changed files with 30 additions and 11 deletions
+5 -5
View File
@@ -38,28 +38,28 @@
}, },
"contractSet": { "contractSet": {
"setAlgorithm": "CA_CONTRACT_SET_V1", "setAlgorithm": "CA_CONTRACT_SET_V1",
"setDigest": "sha256:bafc39b2210dc792a763567b3a0f69da42004949899a8ec289c8c0ea9ad7a064", "setDigest": "sha256:104bab24221f6d1a4c5fa7df68f5d027d227325a88fa507ebfcccebb439eb7c4",
"packages": [ "packages": [
{ {
"packageId": "@tech-log/management-contract", "packageId": "@tech-log/management-contract",
"version": "1.0.0", "version": "1.0.0",
"digest": "sha256:72650735061fde627f5037571eb986cb758f44a546f065c88408399f8eec4a55", "digest": "sha256:72650735061fde627f5037571eb986cb758f44a546f065c88408399f8eec4a55",
"runtimeProtocolVersion": 1, "runtimeProtocolVersion": 1,
"sourceRevision": "ff0c12a" "sourceRevision": "0ffbc28"
}, },
{ {
"packageId": "@tech-log/public-contract", "packageId": "@tech-log/public-contract",
"version": "2.1.0", "version": "2.1.0",
"digest": "sha256:34efa8d2fdba959373081e5b2aace252be86bef243a80c238d8c4af50fa8eb0a", "digest": "sha256:79949b286e2b4d28333d3376945960a319d247b675b23a73f50b75ce10994c5e",
"runtimeProtocolVersion": 1, "runtimeProtocolVersion": 1,
"sourceRevision": "ff0c12a" "sourceRevision": "0ffbc28"
}, },
{ {
"packageId": "@tech-log/studio-contract", "packageId": "@tech-log/studio-contract",
"version": "3.1.0", "version": "3.1.0",
"digest": "sha256:18dd46898be64b07f7e826409d19347512613ee2e22420028a4a0644f50f37dd", "digest": "sha256:18dd46898be64b07f7e826409d19347512613ee2e22420028a4a0644f50f37dd",
"runtimeProtocolVersion": 1, "runtimeProtocolVersion": 1,
"sourceRevision": "ff0c12a" "sourceRevision": "0ffbc28"
} }
] ]
} }
@@ -147,7 +147,9 @@ export function createHttpPublicContentGateway(
return Object.freeze({ return Object.freeze({
...baseOf("CASE", slug, { ...baseOf("CASE", slug, {
title: body.title as string, title: body.title as string,
summary: body.problemSummary as string, // 제목 바로 아래에 오는 것은 문서의 요약이다. 유형별 요약(문제/범위)을 쓰면 바로 아래
// 블록과 같은 글을 두 번 말한다.
summary: (body.summary as string) ?? "",
path: canonicalPath, path: canonicalPath,
primaryTopic: body.primaryTopic as never, primaryTopic: body.primaryTopic as never,
primaryProject: body.primaryProject as never, primaryProject: body.primaryProject as never,
@@ -192,7 +194,7 @@ export function createHttpPublicContentGateway(
return Object.freeze({ return Object.freeze({
...baseOf("REFERENCE", slug, { ...baseOf("REFERENCE", slug, {
title: body.title as string, title: body.title as string,
summary: body.scopeSummary as string, summary: (body.summary as string) ?? "",
path: canonicalPath, path: canonicalPath,
primaryTopic: body.primaryTopic as never, primaryTopic: body.primaryTopic as never,
primaryProject: body.primaryProject as never, primaryProject: body.primaryProject as never,
@@ -2,7 +2,7 @@
"packageId": "@tech-log/management-contract", "packageId": "@tech-log/management-contract",
"version": "1.0.0", "version": "1.0.0",
"digest": "sha256:72650735061fde627f5037571eb986cb758f44a546f065c88408399f8eec4a55", "digest": "sha256:72650735061fde627f5037571eb986cb758f44a546f065c88408399f8eec4a55",
"sourceRevision": "ff0c12a", "sourceRevision": "0ffbc28",
"operationIds": [ "operationIds": [
"createCaseDraft", "createCaseDraft",
"getCaseForEdit", "getCaseForEdit",
@@ -1,8 +1,8 @@
{ {
"packageId": "@tech-log/public-contract", "packageId": "@tech-log/public-contract",
"version": "2.1.0", "version": "2.1.0",
"digest": "sha256:34efa8d2fdba959373081e5b2aace252be86bef243a80c238d8c4af50fa8eb0a", "digest": "sha256:79949b286e2b4d28333d3376945960a319d247b675b23a73f50b75ce10994c5e",
"sourceRevision": "ff0c12a", "sourceRevision": "0ffbc28",
"operationIds": [ "operationIds": [
"getPublicSite", "getPublicSite",
"getPublicHome", "getPublicHome",
@@ -536,6 +536,7 @@ export interface components {
indexable: boolean; indexable: boolean;
case: { case: {
title: string; title: string;
summary?: string;
problemSummary: string; problemSummary: string;
conclusionSummary: string; conclusionSummary: string;
environmentSummary?: string[]; environmentSummary?: string[];
@@ -571,6 +572,7 @@ export interface components {
indexable: boolean; indexable: boolean;
reference: { reference: {
title: string; title: string;
summary?: string;
scopeSummary: string; scopeSummary: string;
appliesTo: string[]; appliesTo: string[];
excludedScope: string[]; excludedScope: string[];
@@ -1239,6 +1239,12 @@ components:
properties: properties:
title: title:
type: string type: string
# 문서가 스스로 밝히는 한 줄 요약이다. 제목 바로 아래에 온다.
#
# 이 자리가 없어서 화면은 problemSummary / scopeSummary 를 대신 썼고, 그러면 머리말이
# 바로 아래의 "문제" 나 "이 기준을 쓰는 이유" 와 같은 글을 두 번 말한다.
summary:
type: string
problemSummary: problemSummary:
type: string type: string
conclusionSummary: conclusionSummary:
@@ -1325,6 +1331,12 @@ components:
properties: properties:
title: title:
type: string type: string
# 문서가 스스로 밝히는 한 줄 요약이다. 제목 바로 아래에 온다.
#
# 이 자리가 없어서 화면은 problemSummary / scopeSummary 를 대신 썼고, 그러면 머리말이
# 바로 아래의 "문제" 나 "이 기준을 쓰는 이유" 와 같은 글을 두 번 말한다.
summary:
type: string
scopeSummary: scopeSummary:
type: string type: string
appliesTo: appliesTo:
@@ -2,7 +2,7 @@
"packageId": "@tech-log/studio-contract", "packageId": "@tech-log/studio-contract",
"version": "3.1.0", "version": "3.1.0",
"digest": "sha256:18dd46898be64b07f7e826409d19347512613ee2e22420028a4a0644f50f37dd", "digest": "sha256:18dd46898be64b07f7e826409d19347512613ee2e22420028a4a0644f50f37dd",
"sourceRevision": "ff0c12a", "sourceRevision": "0ffbc28",
"operationIds": [ "operationIds": [
"getStudioSession", "getStudioSession",
"getStudioDashboard", "getStudioDashboard",
@@ -20,6 +20,8 @@ type ReferenceBody =
test("the public Reference contract keeps the fields the screen reads", () => { test("the public Reference contract keeps the fields the screen reads", () => {
const reference = { const reference = {
title: "", title: "",
// 제목 바로 아래에 오는 것은 문서의 요약이다. scopeSummary 는 그 아래 "이 기준을 쓰는 이유"다.
summary: "",
scopeSummary: "", scopeSummary: "",
appliesTo: [], appliesTo: [],
excludedScope: [], excludedScope: [],
@@ -46,6 +48,7 @@ test("the public Reference contract keeps the fields the screen reads", () => {
"publishedAt", "publishedAt",
"rules", "rules",
"scopeSummary", "scopeSummary",
"summary",
"tags", "tags",
"title", "title",
"updatedAt", "updatedAt",