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

42 lines
4.5 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 680" role="img" aria-labelledby="title desc">
<title id="title">Таблица публичного API formatting package</title>
<desc id="desc">В зелёной колонке указаны root package specifier, formatMoney и formatIsoDate с примитивными входами. В красной колонке — запрещённые InvoiceStatus и internal subpath. Нижняя полоса поясняет, что public API является контрактом, а не каталогом файлов.</desc>
<rect width="960" height="680" fill="#F7F9FC"/>
<rect x="44" y="36" width="872" height="72" rx="16" fill="#16325C"/>
<text x="78" y="78" fill="#FFFFFF" font-family="Arial, sans-serif" font-size="30" font-weight="700">Public API: обещание, а не каталог файлов</text>
<text x="78" y="98" fill="#DCE8FF" font-family="Arial, sans-serif" font-size="16">Одна utility знает формат, но не доменную модель счёта</text>
<rect x="56" y="148" width="416" height="430" rx="16" fill="#ECF9F0" stroke="#26834A" stroke-width="4"/>
<rect x="56" y="148" width="416" height="68" rx="14" fill="#26834A"/>
<text x="84" y="191" fill="#FFFFFF" font-family="Arial, sans-serif" font-size="25" font-weight="700">Разрешённый public API</text>
<text x="84" y="250" fill="#154B2A" font-family="Arial, sans-serif" font-size="18" font-weight="700">specifier</text>
<text x="84" y="278" fill="#245B37" font-family="Arial, sans-serif" font-size="18">@synthetic/platform-formatting</text>
<line x1="84" y1="301" x2="444" y2="301" stroke="#9CCCAE" stroke-width="2"/>
<text x="84" y="338" fill="#154B2A" font-family="Arial, sans-serif" font-size="18" font-weight="700">names</text>
<text x="84" y="366" fill="#245B37" font-family="Arial, sans-serif" font-size="18">formatMoney</text>
<text x="84" y="393" fill="#245B37" font-family="Arial, sans-serif" font-size="18">formatIsoDate</text>
<line x1="84" y1="416" x2="444" y2="416" stroke="#9CCCAE" stroke-width="2"/>
<text x="84" y="453" fill="#154B2A" font-family="Arial, sans-serif" font-size="18" font-weight="700">formatMoney input → output</text>
<text x="84" y="481" fill="#245B37" font-family="Arial, sans-serif" font-size="17">amountMinor, currencyCode, locale</text>
<text x="84" y="509" fill="#245B37" font-family="Arial, sans-serif" font-size="17">→ formatted string</text>
<text x="84" y="548" fill="#245B37" font-family="Arial, sans-serif" font-size="15">owner reviews every new root export</text>
<rect x="500" y="148" width="404" height="430" rx="16" fill="#FFF1F3" stroke="#C83349" stroke-width="4"/>
<rect x="500" y="148" width="404" height="68" rx="14" fill="#C83349"/>
<text x="528" y="191" fill="#FFFFFF" font-family="Arial, sans-serif" font-size="25" font-weight="700">Не является public API</text>
<text x="528" y="251" fill="#8D1D31" font-family="Arial, sans-serif" font-size="18" font-weight="700">domain model</text>
<text x="528" y="280" fill="#A93649" font-family="Arial, sans-serif" font-size="19">InvoiceStatus</text>
<text x="528" y="306" fill="#A93649" font-family="Arial, sans-serif" font-size="15">utility не интерпретирует статус счёта</text>
<line x1="528" y1="329" x2="876" y2="329" stroke="#E5A7B1" stroke-width="2"/>
<text x="528" y="366" fill="#8D1D31" font-family="Arial, sans-serif" font-size="18" font-weight="700">consumer deep import</text>
<text x="528" y="395" fill="#A93649" font-family="Arial, sans-serif" font-size="17">platform-formatting/internal/*</text>
<text x="528" y="421" fill="#A93649" font-family="Arial, sans-serif" font-size="15">file layout is not a stable promise</text>
<line x1="528" y1="444" x2="876" y2="444" stroke="#E5A7B1" stroke-width="2"/>
<text x="528" y="481" fill="#8D1D31" font-family="Arial, sans-serif" font-size="18" font-weight="700">utility outgoing route</text>
<text x="528" y="510" fill="#A93649" font-family="Arial, sans-serif" font-size="17">→ @synthetic/billing-domain</text>
<text x="528" y="536" fill="#A93649" font-family="Arial, sans-serif" font-size="15">requires a separate adapter or domain owner</text>
<rect x="44" y="616" width="872" height="34" rx="10" fill="#DCE8FF"/>
<text x="62" y="638" fill="#274873" font-family="Arial, sans-serif" font-size="15">Public API = specifier + names + input/output + owner. Это не реальная export map и не lint report.</text>
</svg>