Files
progcode/web/public/assets/editorial/2021/architecture-review-decision-2021.svg
T
huncode 15a25c35d3
Build and deploy / deploy (push) Successful in 16s
revise December 2021 architecture review articles
2026-07-31 13:25:10 +03:00

68 lines
4.3 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 650" role="img" aria-labelledby="title desc">
<title id="title">Проверка архитектурного решения через требования и доказательства</title>
<desc id="desc">Brief с пятью требованиями сравнивается с тремя вариантами. Синхронная запись с проекцией и синхронное чтение имеют gaps. Transactional outbox закрывает учебный brief. Evidence и assumption идут отдельными ветками.</desc>
<defs>
<marker id="arrow" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto"><path d="M0,0 L10,5 L0,10 Z" fill="#335e8a"/></marker>
<style>
.bg { fill: #f7f6f1; }
.title { fill: #17212b; font: 700 28px system-ui, -apple-system, sans-serif; }
.sub { fill: #52616d; font: 400 16px system-ui, -apple-system, sans-serif; }
.label { fill: #17212b; font: 700 18px system-ui, -apple-system, sans-serif; }
.text { fill: #334452; font: 400 15px system-ui, -apple-system, sans-serif; }
.mini { fill: #52616d; font: 600 13px system-ui, -apple-system, sans-serif; letter-spacing: .3px; }
.line { stroke: #335e8a; stroke-width: 3; marker-end: url(#arrow); }
.brief { fill: #eaf2fb; stroke: #2e6da4; stroke-width: 2; }
.option { fill: #fff; stroke: #8a969f; stroke-width: 2; }
.selected { fill: #e8f5ef; stroke: #25734f; stroke-width: 3; }
.decision { fill: #f1edf9; stroke: #7253a6; stroke-width: 3; }
.evidence { fill: #eaf2fb; stroke: #2e6da4; stroke-width: 2; }
.assumption { fill: #fff5dd; stroke: #b67813; stroke-width: 2; stroke-dasharray: 7 6; }
</style>
</defs>
<rect class="bg" width="960" height="650" rx="24"/>
<text class="title" x="48" y="54">Решение: requirements → gaps → выбранная граница</text>
<text class="sub" x="48" y="82">Нет score и «лучшего паттерна»: есть соответствие конкретному учебному brief.</text>
<rect class="brief" x="48" y="126" width="248" height="326" rx="16"/>
<text class="mini" x="74" y="158">BRIEF</text>
<text class="label" x="74" y="191">5 requirements</text>
<text class="text" x="74" y="225">• canonical write</text>
<text class="text" x="74" y="255">• recorded intent</text>
<text class="text" x="74" y="285">• independent read</text>
<text class="text" x="74" y="315">• explicit delay</text>
<text class="text" x="74" y="345">• replay key</text>
<text class="mini" x="74" y="404">NON-GOALS</text>
<text class="text" x="74" y="430">не distributed transaction</text>
<line class="line" x1="296" y1="285" x2="356" y2="285"/>
<rect class="option" x="356" y="118" width="250" height="96" rx="14"/>
<text class="label" x="380" y="151">sync write + projection</text>
<text class="text" x="380" y="184">gaps: intent, delay</text>
<rect class="selected" x="356" y="252" width="250" height="118" rx="14"/>
<text class="label" x="380" y="288">transactional outbox</text>
<text class="text" x="380" y="320">all declared requirements</text>
<text class="text" x="380" y="346">relay has explicit key</text>
<rect class="option" x="356" y="408" width="250" height="96" rx="14"/>
<text class="label" x="380" y="441">synchronous query</text>
<text class="text" x="380" y="474">gap: independent read</text>
<line class="line" x1="606" y1="311" x2="678" y2="311"/>
<rect class="decision" x="678" y="241" width="238" height="142" rx="16"/>
<text class="mini" x="704" y="275">DECISION</text>
<text class="label" x="704" y="310">accepted</text>
<text class="text" x="704" y="340">brief + option +</text>
<text class="text" x="704" y="363">reversibility</text>
<rect class="evidence" x="88" y="520" width="370" height="86" rx="14"/>
<text class="mini" x="114" y="550">EVIDENCE</text>
<text class="text" x="114" y="579">claim связан с brief и fixture</text>
<path d="M458 563 C535 563 596 473 680 378" fill="none" stroke="#2e6da4" stroke-width="2.5" marker-end="url(#arrow)"/>
<rect class="assumption" x="532" y="520" width="364" height="86" rx="14"/>
<text class="mini" x="558" y="550">ASSUMPTION</text>
<text class="text" x="558" y="579">condition for later review, not evidence</text>
</svg>