Files
progcode/web/public/assets/editorial/2023/contract-tests-2023-verification-gate.svg
T
huncode 5cbd53d8ec
Build and deploy / deploy (push) Successful in 16s
revise July 2023 contract testing articles
2026-07-31 15:00:15 +03:00

55 lines
5.5 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 720" role="img" aria-labelledby="title desc">
<title id="title">Шлюз выпуска для contract change</title>
<desc id="desc">Схема показывает последовательность consumer scenario, versioned contract, provider state, provider verification и release decision с точками остановки.</desc>
<defs>
<marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
<path d="M 0 0 L 10 5 L 0 10 z" fill="#93c5fd"/>
</marker>
</defs>
<rect width="1200" height="720" rx="32" fill="#0b1220"/>
<text x="55" y="65" fill="#f8fafc" font-family="Inter, Arial, sans-serif" font-size="34" font-weight="700">Release gate: от contract scenario к решению о выпуске</text>
<text x="55" y="103" fill="#cbd5e1" font-family="Inter, Arial, sans-serif" font-size="20">Каждый блок добавляет отдельное evidence; форма JSON не перепрыгивает через verification.</text>
<rect x="48" y="168" width="205" height="200" rx="20" fill="#172554" stroke="#60a5fa" stroke-width="3"/>
<text x="72" y="212" fill="#dbeafe" font-family="Inter, Arial, sans-serif" font-size="23" font-weight="700">1. Consumer</text>
<text x="72" y="250" fill="#bfdbfe" font-family="Inter, Arial, sans-serif" font-size="18">Один сценарий</text>
<text x="72" y="280" fill="#bfdbfe" font-family="Inter, Arial, sans-serif" font-size="18">и decision UI</text>
<text x="72" y="326" fill="#93c5fd" font-family="Inter, Arial, sans-serif" font-size="17">Нужна дата действия</text>
<path d="M 258 268 H 290" fill="none" stroke="#93c5fd" stroke-width="5" marker-end="url(#arrow)"/>
<rect x="300" y="168" width="205" height="200" rx="20" fill="#134e4a" stroke="#5eead4" stroke-width="3"/>
<text x="324" y="212" fill="#ccfbf1" font-family="Inter, Arial, sans-serif" font-size="23" font-weight="700">2. Contract</text>
<text x="324" y="250" fill="#99f6e4" font-family="Inter, Arial, sans-serif" font-size="18">Request, response,</text>
<text x="324" y="280" fill="#99f6e4" font-family="Inter, Arial, sans-serif" font-size="18">scenario, version</text>
<text x="324" y="326" fill="#5eead4" font-family="Inter, Arial, sans-serif" font-size="17">Schema + meaning</text>
<path d="M 510 268 H 542" fill="none" stroke="#93c5fd" stroke-width="5" marker-end="url(#arrow)"/>
<rect x="552" y="168" width="205" height="200" rx="20" fill="#3f2a12" stroke="#fbbf24" stroke-width="3"/>
<text x="576" y="212" fill="#fef3c7" font-family="Inter, Arial, sans-serif" font-size="23" font-weight="700">3. Provider</text>
<text x="576" y="250" fill="#fde68a" font-family="Inter, Arial, sans-serif" font-size="18">Точная версия</text>
<text x="576" y="280" fill="#fde68a" font-family="Inter, Arial, sans-serif" font-size="18">и provider state</text>
<text x="576" y="326" fill="#fcd34d" font-family="Inter, Arial, sans-serif" font-size="17">Не production trace</text>
<path d="M 762 268 H 794" fill="none" stroke="#93c5fd" stroke-width="5" marker-end="url(#arrow)"/>
<rect x="804" y="168" width="205" height="200" rx="20" fill="#3b1f55" stroke="#c084fc" stroke-width="3"/>
<text x="828" y="212" fill="#f3e8ff" font-family="Inter, Arial, sans-serif" font-size="23" font-weight="700">4. Verify</text>
<text x="828" y="250" fill="#e9d5ff" font-family="Inter, Arial, sans-serif" font-size="18">Исполнить все</text>
<text x="828" y="280" fill="#e9d5ff" font-family="Inter, Arial, sans-serif" font-size="18">нужные interaction</text>
<text x="828" y="326" fill="#d8b4fe" font-family="Inter, Arial, sans-serif" font-size="17">PASS/FAIL + version</text>
<path d="M 1014 268 H 1046" fill="none" stroke="#93c5fd" stroke-width="5" marker-end="url(#arrow)"/>
<rect x="1056" y="168" width="96" height="200" rx="20" fill="#14532d" stroke="#4ade80" stroke-width="3"/>
<text x="1104" y="218" text-anchor="middle" fill="#dcfce7" font-family="Inter, Arial, sans-serif" font-size="20" font-weight="700">5.</text>
<text x="1104" y="251" text-anchor="middle" fill="#dcfce7" font-family="Inter, Arial, sans-serif" font-size="17" font-weight="700">Release</text>
<text x="1104" y="278" text-anchor="middle" fill="#bbf7d0" font-family="Inter, Arial, sans-serif" font-size="15">owner</text>
<text x="1104" y="305" text-anchor="middle" fill="#bbf7d0" font-family="Inter, Arial, sans-serif" font-size="15">decision</text>
<path d="M 654 384 V 454" fill="none" stroke="#f87171" stroke-width="5" marker-end="url(#arrow)"/>
<rect x="155" y="470" width="890" height="92" rx="18" fill="#7f1d1d" stroke="#f87171" stroke-width="3"/>
<text x="600" y="509" text-anchor="middle" fill="#fee2e2" font-family="Inter, Arial, sans-serif" font-size="24" font-weight="700">Нет contract version, provider state или verification result → STOP</text>
<text x="600" y="540" text-anchor="middle" fill="#fecaca" font-family="Inter, Arial, sans-serif" font-size="18">Schema PASS сам по себе не даёт production compatibility и не отменяет отдельный rollback plan.</text>
<rect x="155" y="596" width="890" height="64" rx="16" fill="#1e293b" stroke="#64748b" stroke-width="2"/>
<text x="600" y="635" text-anchor="middle" fill="#e2e8f0" font-family="Inter, Arial, sans-serif" font-size="19">Rollback: версии клиентов, обратимое переключение, владелец и отдельная проверка после изменения.</text>
</svg>