65 lines
6.1 KiB
XML
65 lines
6.1 KiB
XML
<?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="payment-request" name="승인된 결제는 주문 상태 갱신 후 이벤트로 확산된다">
|
|
<mxGraphModel dx="1214" dy="587" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1214" pageHeight="1169" math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0"/>
|
|
<mxCell id="1" parent="0"/>
|
|
<mxCell id="n_client" value="클라이언트" tooltip="로그인 세션과 장바구니 식별자를 가지고 결제를 요청한다. | Evidence: L7-L7, L11-L11" 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="70.0" y="281.0" width="150.0" height="64.0" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="n_auth-gateway" value="인증 게이트웨이" tooltip="세션을 검증하고 유효한 요청만 체크아웃 API로 전달한다. | Evidence: L7-L7, L11-L11" 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="380.0" y="281.0" width="150.0" height="64.0" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="n_checkout-api" value="체크아웃 API" tooltip="주문 상태를 저장하고 결제 승인 및 이벤트 발행을 조정한다. | Evidence: L7-L7, L11-L13" 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="690.0" y="281.0" width="150.0" height="64.0" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="n_event-bus" value="이벤트 버스" tooltip="승인된 결제를 payment.approved 이벤트로 수신한다. | Evidence: L13-L13" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;rounded=1;arcSize=50;fillColor=#f6f1fb;" vertex="1" parent="1">
|
|
<mxGeometry x="1002.2" y="145.0" width="150.0" height="64.0" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="n_orders-db" value="PostgreSQL 주문 저장소" tooltip="주문을 PENDING으로 기록하고 승인 후 PAID로 갱신한다. | Evidence: L13-L13" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;shape=cylinder3;boundedLbl=1;backgroundOutline=1;fillColor=#eef6fb;" vertex="1" parent="1">
|
|
<mxGeometry x="1000.0" y="281.0" width="154.4" height="64.0" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="n_payment-provider" value="결제 제공자 API" tooltip="체크아웃 API의 결제 승인 요청을 처리하고 승인 응답을 반환한다. | Evidence: L13-L13" 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="1002.2" y="417.0" width="150.0" height="64.0" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="e_authorization-approved" value="승인 응답" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_payment-provider" target="n_checkout-api">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="853.1" y="499.0" as="offset"/>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="e_authorization-request" value="승인 요청" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_checkout-api" target="n_payment-provider">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="907.1" y="385.4" as="offset"/>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="e_client-request" value="HTTPS 결제 요청" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_client" target="n_auth-gateway">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="300.0" y="285.0" as="offset"/>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="e_create-pending" value="PENDING 주문 기록" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_checkout-api" target="n_orders-db">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="944.0" y="303.5" as="offset"/>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="e_mark-paid" value="PAID 상태 갱신" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_checkout-api" target="n_orders-db">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="924.5" y="341.0" as="offset"/>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="e_publish-approved" value="payment.approved 발행" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;dashed=1;" edge="1" parent="1" source="n_checkout-api" target="n_event-bus">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="945.1" y="235.1" as="offset"/>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="e_validated-request" value="검증된 요청 전달" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_auth-gateway" target="n_checkout-api">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="610.0" y="285.0" as="offset"/>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
</mxfile>
|