51 lines
5.0 KiB
XML
51 lines
5.0 KiB
XML
<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>
|