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
@@ -1,35 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="app.diagrams.net" modified="2026-07-23T00:00:00.000Z" agent="techviz-harness" version="24.7.17" type="device">
<diagram id="open-questions-answered" name="열린 질문 네 개가 닿은 곳">
<mxGraphModel dx="680" dy="677" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<mxGraphModel dx="707" dy="605" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="n_questions" value="열린 질문 네 개&lt;br/&gt;Q1 · Q2 · Q3 · Q4" tooltip="설계로는 답할 수 없었다. | Evidence: L682-L690" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#2563eb;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="73.5" y="60.0" width="153.0" height="71.0" as="geometry"/>
<mxCell id="n_questions" value="열린 질문 네 개&lt;br/&gt;Q1 · Q2 · Q3 · Q4" tooltip="설계만으로는 닫히지 않았던 Q1부터 Q4다. | Evidence: L1223-L1228" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#2563eb;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="70.0" y="274.5" width="153.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="n_store-choice" value="저장소 선택&lt;br/&gt;Redis · PostgreSQL" tooltip="다중 인스턴스와 재시작은 여기서 풀린다. | Evidence: L682-L692" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="70.0" y="227.0" width="160.0" height="71.0" as="geometry"/>
<mxCell id="n_q1" value="Q1 · 저장소와 스키마&lt;br/&gt;외부 저장소 · 세션 id 없는 PK" tooltip="①②는 외부 저장소로 풀리고 ③④는 기본키 문제로 남는다. | Evidence: L1225-L1225" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
<mxGeometry x="435.5" y="60.0" width="174.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="n_schema" value="스키마와 조회 키&lt;br/&gt;키에 세션 id 없음" tooltip="덮어쓰기와 정리 누락은 여기가 원인이다. | Evidence: L682-L694" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
<mxGeometry x="75.0" y="394.0" width="150.0" height="71.0" as="geometry"/>
<mxCell id="n_q2" value="Q2 · 회전 경쟁&lt;br/&gt;이긴 새 token도 사용 불가" tooltip="경쟁이 감지되면 client session이 지워진다. | Evidence: L1226-L1226" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
<mxGeometry x="446.0" y="203.0" width="153.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="n_snapshot" value="세션 스냅샷&lt;br/&gt;옛 클레임 값" tooltip="IdP 에서 클레임을 바꿔도 재인증까지 옛 값이 간다. | Evidence: L682-L696" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
<mxGeometry x="75.0" y="561.0" width="150.0" height="71.0" as="geometry"/>
<mxCell id="n_q3" value="Q3 · 조회 키 분리&lt;br/&gt;session id · principal" tooltip="Session과 AuthorizedClient는 각각 결정해야 한다. | Evidence: L1227-L1227" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="428.5" y="346.0" width="188.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="e_q-s" value="1차 검토" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_questions" target="n_store-choice">
<mxCell id="n_q4" value="Q4 · Edge 신뢰 경계&lt;br/&gt;permitAll 200 · JWT 401 · 삭제 처방 미검증" tooltip="헤더 도착과 인가 우회는 다르고 claim은 재인증까지 snapshot이다. | Evidence: L1228-L1228" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
<mxGeometry x="383.0" y="489.0" width="279.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="e_questions-q1" value="답" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_questions" target="n_q1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="174.0" y="179.0" as="offset"/>
<mxPoint x="353.2" y="191.7" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_s-sc" value="미해결 잔여" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_store-choice" target="n_schema">
<mxCell id="e_questions-q2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_questions" target="n_q2">
<mxGeometry relative="1" as="geometry">
<mxPoint x="174.0" y="346.0" as="offset"/>
<mxPoint x="358.5" y="270.6" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_sc-sn" value="최종 잔여" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_schema" target="n_snapshot">
<mxCell id="e_questions-q3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_questions" target="n_q3">
<mxGeometry relative="1" as="geometry">
<mxPoint x="174.0" y="513.0" as="offset"/>
<mxPoint x="349.8" y="349.4" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_questions-q4" value="답" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_questions" target="n_q4">
<mxGeometry relative="1" as="geometry">
<mxPoint x="327.0" y="428.3" as="offset"/>
</mxGeometry>
</mxCell>
</root>