Files
progcode/web/public/assets/editorial/2024/package-boundaries-2024-package-graph.svg
T
huncode a93936ecbf
Build and deploy / deploy (push) Successful in 16s
revise March 2024 package boundary articles
2026-07-31 15:43:02 +03:00

51 lines
5.0 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 680" role="img" aria-labelledby="title desc">
<title id="title">Граф границ пакета platform formatting</title>
<desc id="desc">Orders feature и billing domain используют root API formatting package. Formatting package использует platform runtime. Пунктирная красная стрелка от formatting package к billing domain запрещена: utility не должна импортировать доменную модель.</desc>
<rect width="960" height="680" fill="#F7F9FC"/>
<rect x="44" y="36" width="872" height="72" rx="16" fill="#16325C"/>
<text x="80" y="78" fill="#FFFFFF" font-family="Arial, sans-serif" font-size="30" font-weight="700">Граница shared utility: направление зависимостей</text>
<text x="80" y="98" fill="#DCE8FF" font-family="Arial, sans-serif" font-size="16">Учебная схема: public API меньше внутреннего устройства пакета</text>
<rect x="76" y="166" width="252" height="118" rx="14" fill="#E8F1FF" stroke="#2767BE" stroke-width="3"/>
<text x="102" y="210" fill="#16325C" font-family="Arial, sans-serif" font-size="24" font-weight="700">orders feature</text>
<text x="102" y="240" fill="#294B77" font-family="Arial, sans-serif" font-size="17">consumer</text>
<text x="102" y="263" fill="#294B77" font-family="Arial, sans-serif" font-size="15">formatMoney from root API</text>
<rect x="76" y="410" width="252" height="118" rx="14" fill="#E8F1FF" stroke="#2767BE" stroke-width="3"/>
<text x="102" y="454" fill="#16325C" font-family="Arial, sans-serif" font-size="24" font-weight="700">billing domain</text>
<text x="102" y="484" fill="#294B77" font-family="Arial, sans-serif" font-size="17">owner InvoiceStatus</text>
<text x="102" y="507" fill="#294B77" font-family="Arial, sans-serif" font-size="15">may use root API</text>
<rect x="386" y="276" width="286" height="150" rx="16" fill="#E8F7ED" stroke="#26834A" stroke-width="4"/>
<text x="414" y="321" fill="#154B2A" font-family="Arial, sans-serif" font-size="23" font-weight="700">platform formatting</text>
<text x="414" y="351" fill="#245B37" font-family="Arial, sans-serif" font-size="17">public: formatMoney</text>
<text x="414" y="376" fill="#245B37" font-family="Arial, sans-serif" font-size="17">public: formatIsoDate</text>
<text x="414" y="401" fill="#245B37" font-family="Arial, sans-serif" font-size="15">inputs: primitive values only</text>
<rect x="748" y="276" width="154" height="150" rx="14" fill="#FFF4D8" stroke="#AA6A00" stroke-width="3"/>
<text x="772" y="328" fill="#6A4200" font-family="Arial, sans-serif" font-size="21" font-weight="700">platform</text>
<text x="772" y="356" fill="#6A4200" font-family="Arial, sans-serif" font-size="21" font-weight="700">runtime</text>
<text x="772" y="385" fill="#825607" font-family="Arial, sans-serif" font-size="15">Intl adapter</text>
<path d="M328 225 C354 225 358 292 386 316" fill="none" stroke="#2767BE" stroke-width="5" marker-end="url(#arrowBlue)"/>
<text x="260" y="180" fill="#2767BE" font-family="Arial, sans-serif" font-size="15" font-weight="700">root import</text>
<path d="M328 469 C358 469 358 413 386 385" fill="none" stroke="#2767BE" stroke-width="5" marker-end="url(#arrowBlue)"/>
<text x="219" y="555" fill="#2767BE" font-family="Arial, sans-serif" font-size="15" font-weight="700">root import</text>
<path d="M672 351 L748 351" fill="none" stroke="#AA6A00" stroke-width="5" marker-end="url(#arrowGold)"/>
<text x="678" y="328" fill="#825607" font-family="Arial, sans-serif" font-size="14" font-weight="700">allowed runtime</text>
<path d="M442 426 C397 534 322 556 243 528" fill="none" stroke="#C83349" stroke-width="5" stroke-dasharray="12 10" marker-end="url(#arrowRed)"/>
<rect x="380" y="526" width="294" height="74" rx="12" fill="#FFF0F2" stroke="#C83349" stroke-width="2"/>
<text x="400" y="555" fill="#8D1D31" font-family="Arial, sans-serif" font-size="18" font-weight="700">запрещено: utility → domain</text>
<text x="400" y="579" fill="#8D1D31" font-family="Arial, sans-serif" font-size="15">InvoiceStatus остаётся у billing owner</text>
<rect x="44" y="630" width="872" height="24" rx="8" fill="#DCE8FF"/>
<text x="60" y="648" fill="#274873" font-family="Arial, sans-serif" font-size="14">Это fixed synthetic diagram: не import scan, не package.json и не production evidence.</text>
<defs>
<marker id="arrowBlue" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M 0 0 L 10 5 L 0 10 z" fill="#2767BE"/></marker>
<marker id="arrowGold" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M 0 0 L 10 5 L 0 10 z" fill="#AA6A00"/></marker>
<marker id="arrowRed" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M 0 0 L 10 5 L 0 10 z" fill="#C83349"/></marker>
</defs>
</svg>