diff --git a/src/adapter/inbound/web/src/main/java/dev/caskeleton/adapter/inbound/web/techlog/publicapi/mapper/DocumentResponseMapper.java b/src/adapter/inbound/web/src/main/java/dev/caskeleton/adapter/inbound/web/techlog/publicapi/mapper/DocumentResponseMapper.java index 311caf4..f0687d5 100644 --- a/src/adapter/inbound/web/src/main/java/dev/caskeleton/adapter/inbound/web/techlog/publicapi/mapper/DocumentResponseMapper.java +++ b/src/adapter/inbound/web/src/main/java/dev/caskeleton/adapter/inbound/web/techlog/publicapi/mapper/DocumentResponseMapper.java @@ -37,6 +37,7 @@ public final class DocumentResponseMapper { PublishedDocumentView doc = view.document(); CaseDetailResponseCase body = new CaseDetailResponseCase(); body.setTitle(doc.title()); + body.setSummary(doc.summary()); body.setProblemSummary(doc.primarySummary()); body.setConclusionSummary(doc.secondarySummary()); body.setEnvironmentSummary(doc.environmentSummary()); @@ -72,6 +73,7 @@ public final class DocumentResponseMapper { PublishedDocumentView doc = view.document(); ReferenceDetailResponseReference body = new ReferenceDetailResponseReference(); body.setTitle(doc.title()); + body.setSummary(doc.summary()); body.setScopeSummary(doc.primarySummary()); body.setAppliesTo(doc.appliesTo()); body.setExcludedScope(doc.excludedScope()); diff --git a/src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/techlog/publicsite/JdbcPublicDocumentQueryAdapter.java b/src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/techlog/publicsite/JdbcPublicDocumentQueryAdapter.java index 837d416..c6051b0 100644 --- a/src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/techlog/publicsite/JdbcPublicDocumentQueryAdapter.java +++ b/src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/techlog/publicsite/JdbcPublicDocumentQueryAdapter.java @@ -97,6 +97,7 @@ public class JdbcPublicDocumentQueryAdapter implements PublicDocumentQueryPort { // 컬럼(`public_resource_projection.last_verified_at`)은 `upsertProjection` 이 // 채우지 않아 언제나 null 이었다. + " p.navigation_path, p.published_at, p.updated_at, d.last_verified_at," + + " d.summary," + " r.rules, r.examples," + " t.name AS topic_name, t.slug AS topic_slug," + " pr.name AS project_name, pr.slug AS project_slug," @@ -127,6 +128,7 @@ public class JdbcPublicDocumentQueryAdapter implements PublicDocumentQueryPort { type, rs.getString("navigation_path"), rs.getString("title"), + rs.getString("summary"), // Case 는 문제/결론, Reference 는 범위/적용이 각각 앞뒤 요약 자리에 온다. isCase ? rs.getString("problem_summary") : rs.getString("scope_summary"), isCase ? rs.getString("conclusion_summary") : null, diff --git a/src/application-core/src/main/java/dev/caskeleton/application/techlog/publicsite/model/PublishedDocumentView.java b/src/application-core/src/main/java/dev/caskeleton/application/techlog/publicsite/model/PublishedDocumentView.java index 62f9095..313f3cc 100644 --- a/src/application-core/src/main/java/dev/caskeleton/application/techlog/publicsite/model/PublishedDocumentView.java +++ b/src/application-core/src/main/java/dev/caskeleton/application/techlog/publicsite/model/PublishedDocumentView.java @@ -9,12 +9,16 @@ import java.util.List; *
계약의 {@code CaseDetailResponse.case} 와 {@code ReferenceDetailResponse.reference} 는 담는 필드가
* 다르지만(문제/결론 vs 범위/적용), 원천이 같은 {@code document} + 유형별 detail 이라 하나의 레코드로 읽고 웹 계층에서 유형별 모양으로 나눈다.
*
+ * @param summary 문서가 스스로 밝히는 한 줄 요약. 제목 바로 아래에 온다 — 유형별 요약({@code primarySummary}: Case 는 문제,
+ * Reference 는 범위)과 다르다. 이 자리가 없던 동안 화면은 유형별 요약을 대신 썼고, 그러면 머리말이 바로 아래의 "문제" 나 "이 기준을 쓰는 이유" 와
+ * 같은 글을 두 번 말했다.
* @param content Markdown 원문이다. studio 의 렌더 블록이 아니다 — 공개 계약은 {@code contentFormat} 과 함께 원문을 준다.
*/
public record PublishedDocumentView(
String type,
String canonicalPath,
String title,
+ String summary,
String primarySummary,
String secondarySummary,
List