{ "version": "1.1", "id": "summary-drop-path", "title": "summary가 세 경계에서 사라진 경로", "question": "계약과 DB에 있던 summary가 공개 relation 목록까지 오지 못한 세 유실 지점은 어디였는가?", "type": "data-flow", "direction": "LR", "audience": [ "프론트엔드 개발자", "계약 설계자" ], "summary": "계약에는 summary가 있었지만 flattenRelations가 담지 않았고, ResolvedRelation에는 칸이 없었고, 화면 목록으로 넘길 때 다시 버렸다.", "alt": "Contract summary에서 flattenRelations, ResolvedRelation, 화면 목록으로 이어지는 흐름. 세 중간 지점에 DROP 1, 칸 없음, DROP 3이 표시되어 있다.", "long_description": "왼쪽 Contract에는 summary가 있다. flattenRelations가 그 값을 담지 않아 첫 번째로 끊긴다. 다음 ResolvedRelation 계약에는 summary 칸 자체가 없어 두 번째로 막힌다. 그 칸을 추가한 뒤에도 화면 목록으로 넘길 때 값을 버려 세 번째로 끊겼다. 최종 수정에서는 세 경계를 모두 이어 공개 relation 목록까지 summary가 도착하게 했다.", "source_context": { "document": "docs/TechLog/final/document.md", "document_sha256": "c3a7de37b778fff7b6ea555a3ad7338c91c6fb15d685e7734f89472b4924d955", "anchor": { "kind": "heading", "value": "5. 계약에 자리가 없어 값이 경계에서 사라진다", "line": 516 } }, "composition": { "profile": "component-flow", "diagram_only": true, "reference_ids": [ "payment-event-flow" ], "rationale": "본문 자체가 계약에서 화면 목록까지 summary가 지나가는 순서를 네 단계로 적고 세 유실 지점을 명시한다.", "focus_node": "resolved-relation" }, "groups": [], "nodes": [ { "id": "contract", "label": "Contract summary", "kind": "message", "role": "source", "details": [ "summary 있음" ], "evidence": [ { "start_line": 540, "end_line": 547 } ], "assumption": false }, { "id": "flatten", "label": "flattenRelations", "kind": "component", "role": "service", "details": [ "DROP #1" ], "evidence": [ { "start_line": 544, "end_line": 547 } ], "assumption": false, "emphasis": "warning" }, { "id": "resolved-relation", "label": "ResolvedRelation", "kind": "component", "role": "service", "details": [ "summary 칸 없음", "additionalProperties: false" ], "evidence": [ { "start_line": 546, "end_line": 552 } ], "assumption": false, "emphasis": "warning" }, { "id": "screen-list", "label": "화면 relation 목록", "kind": "component", "role": "sink", "details": [ "DROP #3" ], "evidence": [ { "start_line": 547, "end_line": 552 } ], "assumption": false, "emphasis": "warning" } ], "edges": [ { "id": "to-flatten", "from": "contract", "to": "flatten", "label": "summary", "kind": "data", "evidence": [ { "start_line": 544, "end_line": 545 } ], "assumption": false }, { "id": "to-model", "from": "flatten", "to": "resolved-relation", "label": "렌더 모델", "kind": "data", "evidence": [ { "start_line": 545, "end_line": 550 } ], "assumption": false }, { "id": "to-screen", "from": "resolved-relation", "to": "screen-list", "label": "화면 전달", "kind": "data", "evidence": [ { "start_line": 546, "end_line": 552 } ], "assumption": false } ], "legend": [], "metadata": { "rationale": "상위 Concept의 11경계 그림과 겹치지 않도록 이번 사고에서 실제로 summary가 끊긴 세 지점만 그린다.", "layout_note": "네 경계를 한 줄로 따라가는 사고 경로라 LR을 유지한다. 이 그림은 전체 11경계가 아니라 세 유실 지점만 좁힌다." } }