Files
document-haness/docs/TechLog/tech-log-studio/values-lost-between-boundaries/concept/concept-eleven-boundaries-a-value-crosses.md
T
DongHyeonkaandClaude Opus 5 f6c825e858 docs(TechLog): 글감 56개를 기록으로 쓴다
주제 13개 · Case 28 · Concept 5 · Reference 15 · Question 4 · Decision 4.
계약의 노드마다 종류가 요구하는 칸을 채우고, 본문이 있는 두 종류에는 SSOT 가 이미
그려 둔 도식 셋(value-boundaries · decision-path-404 · topic-variant-model)을
tech-log-studio/ 로 옮겨 붙였다. 새로 그린 그림은 없다.

검사 셋 전부 통과한다.
  check_body.mjs      56 편 중 본문이 있는 33 편 PASS
  check_prose.mjs     56 편 error 0
  check_evidence.mjs  --repo 포함 문제 없음
  verify-tech-log-tree.py  프로젝트 5 · error 0 · warn 0

인용한 코드블록은 전부 SSOT 에서 찾아 대조했다. check_evidence.mjs 가 본문의 각 줄과
source 앵커와 계약 제목을 다시 확인한다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 15:29:33 +09:00

3.8 KiB

kind, slug, title, topic, topicName, project, status, basisVersion, assets, sourceRevision, source
kind slug title topic topicName project status basisVersion assets sourceRevision source
CONCEPT eleven-boundaries-a-value-crosses 공개 화면 한 줄이 그려지기까지 값이 지나는 경계 열한 개 values-lost-between-boundaries 값이 경계에서 사라진다 TechLog 게시 전 tech-log-backend · tech-log-frontend 2026-09-02 · OpenAPI 3.1 계약 3종을 반입해 쓰는 구조
key file
value-boundaries ../../../final/assets/tech-log-studio/value-boundaries.svg
tech-log@2026-09-02
final/document.md#§1.2
final/document.md#§17.1

공개 화면 한 줄이 그려지기까지 값이 지나는 경계 열한 개

공개 화면의 한 줄은 PostgreSQL 의 투영 테이블에서 출발해 열한 번 모양을 바꾼 뒤에 그려진다. 그 사이 어느 한 곳이 값을 담지 않아도 오류가 나지 않는다. undefined 는 빈 문자열로 그려지고 빈 배열은 「항목이 없습니다」로 그려진다.

관계

  • 공개 Reference 가 통째로 비어 있었다 — 이름이 어긋났고 본문은 다른 테이블에 있었다 이 경계 중 두 곳에서 값이 사라진 사건이다.
  • 관계의 요약이 경계 세 곳을 지나며 사라졌다 한 값이 연달아 세 경계에서 버려진 사건이다.
  • 한 경계를 고쳤으면 값의 여정 끝에서 확인한다 이 경계 수가 그 규칙의 근거다.

본문

열한 번 모양이 바뀐다

PostgreSQL 테이블
  └─ public_resource_projection (게시 시점에 굳어진 투영)
       └─ JDBC 어댑터의 SQL (컬럼 이름을 컴파일러가 검사하지 않는다)
            └─ *View 레코드 (application-core)
                 └─ *ResponseMapper (adapter/inbound/web)
                      └─ 생성된 DTO (계약이 만든 모양)
                           └─ HTTP envelope
                                └─ openapi-typescript 타입
                                     └─ http-public-content-gateway 의 매퍼
                                          └─ 포트 타입 (application/ports)
                                               └─ 화면 컴포넌트

:::evidence key="value-boundaries" alt="저장·백엔드 조립·HTTP envelope·프론트엔드 조립·화면 다섯 묶음을 세 저장소 구역으로 나눠 이은 흐름도" caption=" " zoom="true" :::

저장 쪽에 둘, 백엔드 조립에 넷, 전선에 하나, 프론트엔드 조립에 셋, 화면에 하나다.

어디서 검사가 끊기는가

경계마다 무엇이 값을 지키는지가 다르다.

JDBC 어댑터의 SQL 은 컬럼 이름을 문자열로 적는다. 컬럼이 없거나 이름이 다르면 실행할 때 알게 된다.

계약이 만든 DTO 와 생성된 타입 사이는 생성기가 지킨다. 다만 생성기가 보는 것은 스키마의 모양이고, 그 칸에 값이 담기는지는 보지 않는다.

게이트웨이의 매퍼는 계약의 타입을 읽는다. as 단언을 쓰면 그 확인이 사라진다.

포트 타입과 화면 컴포넌트 사이는 TypeScript 가 지킨다. 포트와 어댑터가 타입을 따로 들고 있으면 그 확인도 사라진다.

값을 버려도 오류가 나지 않는다

이 경계들은 값을 담지 않았다고 말하지 않는다. 담지 않은 채 다음으로 넘긴다.

undefined 는 화면에서 빈 문자열이 된다. 빈 배열은 「항목이 없습니다」가 된다. 그래서 화면만 보면 값이 없는 것과 값을 잃은 것이 같아 보인다.

두 화면이 같은 데이터를 볼 때

Studio 와 공개 화면은 같은 DB 를 보지만 계약이 다르다. Studio 는 작성 계약을, 공개 화면은 조회 계약을 지난다. 한쪽에만 값이 보이면 그 사이의 계약에 칸이 없다.