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 one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,164 @@
{
"version": "1.1",
"id": "composition-root-seam",
"title": "테스트가 끊긴 곳과 실제 런타임이 지나는 합성 루트",
"question": "게이트웨이 테스트와 화면 테스트가 통과했는데 왜 합성 루트의 credential 결함은 운영에서만 드러났는가?",
"type": "component",
"direction": "LR",
"audience": [
"프론트엔드 개발자",
"테스트 설계자"
],
"summary": "화면 테스트는 게이트웨이를 스텁하고 게이트웨이 테스트는 실행기를 스텁해서, 실제 런타임만 지나는 합성 루트의 credential 결정이 두 테스트에서 빠졌다.",
"alt": "화면, 게이트웨이, 합성 루트의 credential 결정, 실제 런타임 어댑터가 이어진 경로. 화면에는 게이트웨이 스텁, 게이트웨이에는 실행기 스텁이 표시되고 합성 루트가 테스트 공백으로 강조되어 있다.",
"long_description": "왼쪽에서 오른쪽으로 실제 런타임 경로를 읽는다. 화면에서 게이트웨이로 가고 합성 루트에서 credential을 결정한 뒤 실제 런타임 어댑터가 배포된 백엔드의 실제 404 본문을 읽는다. 화면 테스트는 게이트웨이를 스텁하고 게이트웨이 테스트는 실행기를 스텁했기 때문에 가운데 합성 루트의 credential 결정은 두 테스트가 지나지 않았다.",
"source_context": {
"document": "docs/TechLog/final/document.md",
"document_sha256": "c3a7de37b778fff7b6ea555a3ad7338c91c6fb15d685e7734f89472b4924d955",
"anchor": {
"kind": "heading",
"value": "7. 테스트가 지나지 않는 이음매",
"line": 690
}
},
"composition": {
"profile": "component-flow",
"diagram_only": true,
"reference_ids": [
"payment-event-flow"
],
"rationale": "본문은 화면·게이트웨이 테스트가 스텁에서 끊기는 반면 실제 런타임 어댑터가 합성 루트의 credential 결정을 지나가는 경로를 설명한다.",
"focus_node": "composition-root"
},
"groups": [],
"nodes": [
{
"id": "screen",
"label": "화면",
"kind": "component",
"role": "source",
"details": [
"화면 테스트: gateway stub"
],
"evidence": [
{
"start_line": 740,
"end_line": 742
},
{
"start_line": 770,
"end_line": 771
}
],
"assumption": false
},
{
"id": "gateway",
"label": "Gateway",
"kind": "service",
"role": "service",
"details": [
"gateway 테스트: executor stub"
],
"evidence": [
{
"start_line": 766,
"end_line": 771
}
],
"assumption": false
},
{
"id": "composition-root",
"label": "Composition Root",
"kind": "component",
"role": "service",
"details": [
"credential decision",
"테스트 공백"
],
"evidence": [
{
"start_line": 748,
"end_line": 767
}
],
"assumption": false,
"emphasis": "warning"
},
{
"id": "runtime-adapter",
"label": "Runtime Adapter + 404",
"kind": "service",
"role": "sink",
"details": [
"실제 어댑터",
"배포된 백엔드 404 본문"
],
"evidence": [
{
"start_line": 769,
"end_line": 771
}
],
"assumption": false
}
],
"edges": [
{
"id": "screen-gateway",
"from": "screen",
"to": "gateway",
"label": "요청",
"kind": "request",
"evidence": [
{
"start_line": 740,
"end_line": 742
},
{
"start_line": 766,
"end_line": 771
}
],
"assumption": false
},
{
"id": "gateway-root",
"from": "gateway",
"to": "composition-root",
"label": "runtime 조립",
"kind": "request",
"evidence": [
{
"start_line": 766,
"end_line": 771
}
],
"assumption": false
},
{
"id": "root-adapter",
"from": "composition-root",
"to": "runtime-adapter",
"label": "credential 판정",
"kind": "request",
"evidence": [
{
"start_line": 755,
"end_line": 767
},
{
"start_line": 769,
"end_line": 771
}
],
"assumption": false
}
],
"legend": [],
"metadata": {
"rationale": "테스트 두 개를 별도 카드로 다시 그리지 않고 실제 런타임 경로에 각 테스트가 어디에서 스텁되는지 details로 표시했다.",
"layout_note": "선형 4단계라 LR을 유지한다. 테스트가 끊기는 두 지점과 가운데 composition-root 공백을 한 시야에서 비교하는 것이 목적이다."
}
}