init: technical-visualization-haness 하네스 설계
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
# 대체 설명
|
||||
|
||||
웹·배치·CLI 인바운드 어댑터와 결제·저장소·이벤트 아웃바운드 어댑터가 포트를 통해 애플리케이션 코어에 연결되는 구조.
|
||||
|
||||
전역 제목·부제·footer는 보이는 캔버스에 포함하지 않는다. 접근성용 SVG `<title>`과 `<desc>`는 보이지 않는 메타데이터로 유지한다.
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"id": "order-ports-adapters",
|
||||
"visual_grammar": "ports_adapters",
|
||||
"reader_question": "어댑터의 의존성은 어떤 포트를 통해 애플리케이션 코어로 향하는가?",
|
||||
"diagram_only": true,
|
||||
"visible_text_scope": [
|
||||
"node labels",
|
||||
"boundary labels",
|
||||
"edge labels",
|
||||
"state/time annotations required to decode the relation"
|
||||
],
|
||||
"forbidden_visible_elements": [
|
||||
"global title",
|
||||
"subtitle paragraph",
|
||||
"footer",
|
||||
"takeaway band",
|
||||
"pattern number",
|
||||
"generator watermark",
|
||||
"decorative metric card",
|
||||
"gradient",
|
||||
"drop shadow",
|
||||
"glow"
|
||||
],
|
||||
"palette_policy": "grayscale plus one primary accent; status colors only when semantic",
|
||||
"required_renderer_capabilities": [
|
||||
"hexagonal core",
|
||||
"port sockets",
|
||||
"inbound/outbound adapters"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
# Context
|
||||
|
||||
독자가 확인해야 할 질문: **어댑터의 의존성은 어떤 포트를 통해 애플리케이션 코어로 향하는가?**
|
||||
|
||||
이 fixture는 문서 본문이 이미 문제와 결론을 설명한다고 가정한다. 따라서 SVG에는 다이어그램 관계를 해독하는 데 필요한 기술 레이블만 둔다.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 54 KiB |
@@ -0,0 +1,73 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="650" viewBox="0 0 1440 650" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Ports and adapters</title>
|
||||
<desc id="desc">웹·배치·CLI 인바운드 어댑터와 결제·저장소·이벤트 아웃바운드 어댑터가 포트를 통해 애플리케이션 코어에 연결되는 구조.</desc>
|
||||
<metadata>{"generator":"examples/build_examples.py","version":"0.3.0","canvas_policy":"diagram-only","decorative_effects":false}</metadata>
|
||||
<defs>
|
||||
<marker id="arrow-ink" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#24272B"/></marker>
|
||||
<marker id="arrow-muted" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#667085"/></marker>
|
||||
<marker id="arrow-blue" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#1677FF"/></marker>
|
||||
<marker id="arrow-green" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#00A86B"/></marker>
|
||||
<marker id="arrow-red" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#D94B4B"/></marker>
|
||||
<marker id="arrow-purple" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#7556D8"/></marker>
|
||||
<marker id="arrow-white" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#FFFFFF"/></marker>
|
||||
<marker id="arrow-yellow" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#E7C51D"/></marker>
|
||||
</defs>
|
||||
<rect width="1440" height="650" fill="#FFFFFF"/>
|
||||
<polygon points="540,120 820,120 920,325 820,530 540,530 440,325" fill="#F1F6FF" stroke="#1677FF" stroke-width="2.3" />
|
||||
<text x="680" y="285" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="19" font-weight="700" fill="#0B5CC4" text-anchor="middle">Application Core</text>
|
||||
<text x="680" y="315" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="13" font-weight="500" fill="#667085" text-anchor="middle">use cases + domain model</text>
|
||||
<path d="M 555 350 L 805 350" fill="none" stroke="#A7BDE0" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<text x="680" y="380" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="12" font-weight="600" fill="#667085" text-anchor="middle">ports</text>
|
||||
<rect x="70" y="115" width="250" height="85" fill="#FAFAFA" stroke="#59616B" stroke-width="1.4" rx="8" />
|
||||
<text x="195" y="149.5" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="17" font-weight="700" fill="#24272B" text-anchor="middle">Web Adapter</text>
|
||||
<text x="195" y="176.5" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="12" font-weight="450" fill="#667085" text-anchor="middle">REST · inbound</text>
|
||||
<circle cx="440" cy="180" r="9" fill="#FFFFFF" stroke="#1677FF" stroke-width="2" />
|
||||
<path d="M 320 157 L 431 180" fill="none" stroke="#1677FF" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-blue)" />
|
||||
<rect x="333.8" y="157" width="84.4" height="20" fill="#FFFFFF" rx="2" />
|
||||
<text x="376" y="170" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="11" font-weight="600" fill="#0B5CC4" text-anchor="middle">inbound port</text>
|
||||
<rect x="70" y="270" width="250" height="85" fill="#FAFAFA" stroke="#59616B" stroke-width="1.4" rx="8" />
|
||||
<text x="195" y="304.5" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="17" font-weight="700" fill="#24272B" text-anchor="middle">Batch Adapter</text>
|
||||
<text x="195" y="331.5" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="12" font-weight="450" fill="#667085" text-anchor="middle">scheduled job</text>
|
||||
<circle cx="440" cy="325" r="9" fill="#FFFFFF" stroke="#1677FF" stroke-width="2" />
|
||||
<path d="M 320 312 L 431 325" fill="none" stroke="#1677FF" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-blue)" />
|
||||
<rect x="333.8" y="302" width="84.4" height="20" fill="#FFFFFF" rx="2" />
|
||||
<text x="376" y="315" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="11" font-weight="600" fill="#0B5CC4" text-anchor="middle">inbound port</text>
|
||||
<rect x="70" y="425" width="250" height="85" fill="#FAFAFA" stroke="#59616B" stroke-width="1.4" rx="8" />
|
||||
<text x="195" y="459.5" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="17" font-weight="700" fill="#24272B" text-anchor="middle">Admin CLI</text>
|
||||
<text x="195" y="486.5" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="12" font-weight="450" fill="#667085" text-anchor="middle">command</text>
|
||||
<circle cx="440" cy="470" r="9" fill="#FFFFFF" stroke="#1677FF" stroke-width="2" />
|
||||
<path d="M 320 467 L 431 470" fill="none" stroke="#1677FF" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-blue)" />
|
||||
<rect x="333.8" y="447" width="84.4" height="20" fill="#FFFFFF" rx="2" />
|
||||
<text x="376" y="460" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="11" font-weight="600" fill="#0B5CC4" text-anchor="middle">inbound port</text>
|
||||
<rect x="1070" y="115" width="250" height="85" fill="#FAFAFA" stroke="#59616B" stroke-width="1.4" rx="8" />
|
||||
<text x="1195" y="149.5" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="17" font-weight="700" fill="#24272B" text-anchor="middle">Payment Client</text>
|
||||
<text x="1195" y="176.5" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="12" font-weight="450" fill="#667085" text-anchor="middle">HTTP</text>
|
||||
<circle cx="920" cy="180" r="9" fill="#FFFFFF" stroke="#1677FF" stroke-width="2" />
|
||||
<path d="M 929 180 L 1070 157" fill="none" stroke="#1677FF" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-blue)" />
|
||||
<rect x="951.8" y="157" width="90.4" height="20" fill="#FFFFFF" rx="2" />
|
||||
<text x="997" y="170" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="11" font-weight="600" fill="#0B5CC4" text-anchor="middle">outbound port</text>
|
||||
<rect x="1070" y="270" width="250" height="85" fill="#FAFAFA" stroke="#59616B" stroke-width="1.4" rx="8" />
|
||||
<text x="1195" y="304.5" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="17" font-weight="700" fill="#24272B" text-anchor="middle">Order Repository</text>
|
||||
<text x="1195" y="331.5" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="12" font-weight="450" fill="#667085" text-anchor="middle">JPA</text>
|
||||
<circle cx="920" cy="325" r="9" fill="#FFFFFF" stroke="#1677FF" stroke-width="2" />
|
||||
<path d="M 929 325 L 1070 312" fill="none" stroke="#1677FF" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-blue)" />
|
||||
<rect x="951.8" y="302" width="90.4" height="20" fill="#FFFFFF" rx="2" />
|
||||
<text x="997" y="315" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="11" font-weight="600" fill="#0B5CC4" text-anchor="middle">outbound port</text>
|
||||
<rect x="1070" y="425" width="250" height="85" fill="#FAFAFA" stroke="#59616B" stroke-width="1.4" rx="8" />
|
||||
<text x="1195" y="459.5" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="17" font-weight="700" fill="#24272B" text-anchor="middle">Event Publisher</text>
|
||||
<text x="1195" y="486.5" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="12" font-weight="450" fill="#667085" text-anchor="middle">Kafka</text>
|
||||
<circle cx="920" cy="470" r="9" fill="#FFFFFF" stroke="#1677FF" stroke-width="2" />
|
||||
<path d="M 929 470 L 1070 467" fill="none" stroke="#1677FF" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-blue)" />
|
||||
<rect x="951.8" y="447" width="90.4" height="20" fill="#FFFFFF" rx="2" />
|
||||
<text x="997" y="460" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="11" font-weight="600" fill="#0B5CC4" text-anchor="middle">outbound port</text>
|
||||
<rect x="1330" y="287" width="90" height="50" fill="#FFFFFF" />
|
||||
<ellipse cx="1375" cy="287" rx="45" ry="11" fill="#FFFFFF" stroke="#59616B" stroke-width="1.6" />
|
||||
<path d="M 1330 287 L 1330 337" fill="none" stroke="#59616B" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M 1420 287 L 1420 337" fill="none" stroke="#59616B" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M 1330 337 C 1348 350, 1402 350, 1420 337" fill="none" stroke="#59616B" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<text x="1375" y="315" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="16" font-weight="700" fill="#24272B" text-anchor="middle">DB</text>
|
||||
<path d="M 1320 312 L 1330 312" fill="none" stroke="#59616B" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-ink)" />
|
||||
<rect x="1328.5" y="252" width="43.0" height="20" fill="#FFFFFF" rx="2" />
|
||||
<text x="1350" y="265" font-family='"Noto Sans CJK KR", "Apple SD Gothic Neo", sans-serif' font-size="11" font-weight="600" fill="#667085" text-anchor="middle">JDBC</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 10 KiB |
Reference in New Issue
Block a user