refactor: 문서 개선 중

This commit is contained in:
donghyeon-ka
2026-09-21 14:30:55 +09:00
parent c93cdea150
commit 805a18f486
1497 changed files with 525837 additions and 59152 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -5,23 +5,28 @@
"question": "계약은 앵커 주소를 적어 두었는데 방문자는 왜 404 를 만났는가?",
"type": "sequence",
"direction": "TB",
"audience": ["백엔드 개발자", "프론트엔드 개발자"],
"audience": [
"백엔드 개발자",
"프론트엔드 개발자"
],
"summary": "만드는 쪽 두 곳이 계약과 다른 슬래시 주소를 만들었고, 그 주소가 게시 시점에 저장돼 방문자에게 그대로 나갔다.",
"alt": "계약, 게시 시점 경로 생성, 저장 테이블, 조회 시점 경로 생성, 방문자, 공개 라우트 여섯 참가자 사이에서 주소가 만들어져 저장되고 방문 시 404 로 끝나는 순서도.",
"long_description": "위에서 아래로 여섯 번의 이동이 있다. 계약 ProjectDecisionItem 은 공개 주소가 decisions#{slug} 앵커라고 규정한다. 게시 시점의 PublicPaths.forKind 는 그 대신 decisions/{slug} 를 만들어 public_resource_projection 에 저장한다. 조회 시점의 PublicSql.pathOf 가 저장된 주소를 읽고 방문자에게 링크로 내보낸다. 방문자가 그 주소를 요청하면 공개 라우트에는 projects/{slug}/decisions 하나뿐이라 맞는 라우트가 없고 404 가 돌아온다.",
"source_context": {
"document": "document.md",
"document_sha256": "93b9fec4884efa0e6231de07dc27e2b0ac36c9052d3720e28d102d9747ac4f8f",
"document": "docs/TechLog/final/document.md",
"document_sha256": "c3a7de37b778fff7b6ea555a3ad7338c91c6fb15d685e7734f89472b4924d955",
"anchor": {
"kind": "marker",
"value": "decision-path-404",
"line": 673
"line": 916
}
},
"composition": {
"profile": "sequence",
"diagram_only": true,
"reference_ids": ["payment-approval-sequence"],
"reference_ids": [
"payment-approval-sequence"
],
"rationale": "본문은 주소가 계약에서 규정되고, 게시 시점에 만들어져 저장되고, 조회 시점에 읽혀 방문자에게 나가고, 방문했을 때 404 가 되는 순서를 적는다. 「주소가 게시 시점에 굳는다」가 이 결함의 핵심이라 시점의 순서가 그림의 뼈대여야 한다."
},
"nodes": [
@@ -31,7 +36,12 @@
"kind": "participant",
"role": "participant",
"description": "공개 주소를 앵커로 규정한 OpenAPI 계약.",
"evidence": [{ "start_line": 676, "end_line": 678 }],
"evidence": [
{
"start_line": 919,
"end_line": 921
}
],
"assumption": false
},
{
@@ -39,10 +49,17 @@
"label": "PublicPaths.forKind",
"kind": "participant",
"role": "participant",
"details": ["게시 시점"],
"details": [
"게시 시점"
],
"emphasis": "warning",
"description": "게시할 때 공개 주소를 만드는 코드.",
"evidence": [{ "start_line": 677, "end_line": 678 }],
"evidence": [
{
"start_line": 919,
"end_line": 921
}
],
"assumption": false
},
{
@@ -51,7 +68,12 @@
"kind": "participant",
"role": "participant",
"description": "만들어진 주소가 저장되는 투영 테이블.",
"evidence": [{ "start_line": 682, "end_line": 683 }],
"evidence": [
{
"start_line": 925,
"end_line": 926
}
],
"assumption": false
},
{
@@ -59,10 +81,17 @@
"label": "PublicSql.pathOf",
"kind": "participant",
"role": "participant",
"details": ["조회 시점"],
"details": [
"조회 시점"
],
"emphasis": "warning",
"description": "조회할 때 공개 주소를 만드는 코드.",
"evidence": [{ "start_line": 677, "end_line": 678 }],
"evidence": [
{
"start_line": 919,
"end_line": 921
}
],
"assumption": false
},
{
@@ -71,7 +100,12 @@
"kind": "actor",
"role": "participant",
"description": "「다음에 읽을 것」 링크를 따라간 사람.",
"evidence": [{ "start_line": 670, "end_line": 671 }],
"evidence": [
{
"start_line": 913,
"end_line": 914
}
],
"assumption": false
},
{
@@ -79,9 +113,16 @@
"label": "공개 라우트",
"kind": "participant",
"role": "participant",
"details": ["/projects/{slug}/decisions 하나뿐"],
"details": [
"/projects/{slug}/decisions 하나뿐"
],
"description": "결정에는 상세 화면이 없어 라우트가 하나뿐이다.",
"evidence": [{ "start_line": 675, "end_line": 676 }],
"evidence": [
{
"start_line": 918,
"end_line": 919
}
],
"assumption": false
}
],
@@ -93,7 +134,12 @@
"label": "…/decisions#{slug} 로 규정",
"kind": "request",
"order": 1,
"evidence": [{ "start_line": 676, "end_line": 678 }],
"evidence": [
{
"start_line": 919,
"end_line": 921
}
],
"assumption": false
},
{
@@ -104,7 +150,16 @@
"kind": "request",
"order": 2,
"emphasis": "warning",
"evidence": [{ "start_line": 675, "end_line": 678 }],
"evidence": [
{
"start_line": 919,
"end_line": 921
},
{
"start_line": 925,
"end_line": 926
}
],
"assumption": false
},
{
@@ -114,7 +169,12 @@
"label": "저장된 주소 조회",
"kind": "response",
"order": 3,
"evidence": [{ "start_line": 682, "end_line": 683 }],
"evidence": [
{
"start_line": 919,
"end_line": 926
}
],
"assumption": false
},
{
@@ -124,7 +184,12 @@
"label": "같은 형태로 링크 전달",
"kind": "response",
"order": 4,
"evidence": [{ "start_line": 677, "end_line": 678 }],
"evidence": [
{
"start_line": 913,
"end_line": 921
}
],
"assumption": false
},
{
@@ -134,7 +199,12 @@
"label": "…/decisions/{slug} 요청",
"kind": "request",
"order": 5,
"evidence": [{ "start_line": 670, "end_line": 675 }],
"evidence": [
{
"start_line": 913,
"end_line": 919
}
],
"assumption": false
},
{
@@ -145,7 +215,12 @@
"kind": "response",
"order": 6,
"emphasis": "warning",
"evidence": [{ "start_line": 670, "end_line": 675 }],
"evidence": [
{
"start_line": 913,
"end_line": 919
}
],
"assumption": false
}
],