feat: 문서 구조 변경 및 tech-visual 스킬 추가

This commit is contained in:
DongHyeonka
2026-09-04 18:20:00 +09:00
parent 43901f0abf
commit 2efb7ee1f2
683 changed files with 61180 additions and 10479 deletions
@@ -0,0 +1,59 @@
<?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="decision-path-404" name="결정 주소가 게시 시점에 굳어져 방문자가 404 를 만나기까지">
<mxGraphModel dx="1330" dy="542" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1330" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="n_contract" value="계약 ProjectDecisionItem" tooltip="공개 주소를 앵커로 규정한 OpenAPI 계약. | Evidence: L676-L678" 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="45.0" y="35.0" width="188.0" height="64.0" as="geometry"/>
</mxCell>
<mxCell id="n_publish-path" value="PublicPaths.forKind&lt;br/&gt;게시 시점" tooltip="게시할 때 공개 주소를 만드는 코드. | Evidence: L677-L678" 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="255.0" y="35.0" width="167.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="n_projection" value="public_resource_projection" tooltip="만들어진 주소가 저장되는 투영 테이블. | Evidence: L682-L683" 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="465.0" y="35.0" width="190.0" height="64.0" as="geometry"/>
</mxCell>
<mxCell id="n_read-path" value="PublicSql.pathOf&lt;br/&gt;조회 시점" tooltip="조회할 때 공개 주소를 만드는 코드. | Evidence: L677-L678" 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="675.0" y="35.0" width="150.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="n_visitor" value="방문자" tooltip="「다음에 읽을 것」 링크를 따라간 사람. | Evidence: L670-L671" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;dashed=1;fillColor=#f5f7fa;" vertex="1" parent="1">
<mxGeometry x="885.0" y="35.0" width="150.0" height="78.0" as="geometry"/>
</mxCell>
<mxCell id="n_public-route" value="공개 라우트&lt;br/&gt;/projects/{slug}/decisions 하나뿐" tooltip="결정에는 상세 화면이 없어 라우트가 하나뿐이다. | Evidence: L675-L676" 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="1095.0" y="35.0" width="190.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="e_m1" value="…/decisions#{slug} 로 규정" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_contract" target="n_publish-path">
<mxGeometry relative="1" as="geometry">
<mxPoint x="238.8" y="128.0" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_m2" value="…/decisions/{slug} 저장" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_publish-path" target="n_projection">
<mxGeometry relative="1" as="geometry">
<mxPoint x="449.2" y="190.0" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_m3" value="저장된 주소 조회" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_projection" target="n_read-path">
<mxGeometry relative="1" as="geometry">
<mxPoint x="655.0" y="252.0" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_m4" value="같은 형태로 링크 전달" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_read-path" target="n_visitor">
<mxGeometry relative="1" as="geometry">
<mxPoint x="855.0" y="314.0" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_m5" value="…/decisions/{slug} 요청" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_visitor" target="n_public-route">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1075.0" y="376.0" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_m6" value="404" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_public-route" target="n_visitor">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1075.0" y="438.0" as="offset"/>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>