This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="720" viewBox="0 0 1200 720" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Диагностика retry и локального rollback формы</title>
|
||||
<desc id="desc">Схема разделяет блокировку локально невалидного ввода, блокировку второго retry, игнорирование старого ответа, принятие нового и одноразовый локальный rollback последнего снимка.</desc>
|
||||
<rect width="1200" height="720" fill="#f8f9fc"/>
|
||||
<text x="60" y="66" font-family="Arial, sans-serif" font-size="38" font-weight="700" fill="#172033">Диагностика: что остановить и что можно вернуть</text>
|
||||
<text x="60" y="110" font-family="Arial, sans-serif" font-size="25" fill="#536079">Retry создаёт новую попытку. Rollback возвращает только локальный accepted snapshot.</text>
|
||||
<g font-family="Arial, sans-serif">
|
||||
<rect x="70" y="170" width="255" height="110" rx="16" fill="#fff0f0" stroke="#c73743" stroke-width="3"/>
|
||||
<text x="98" y="210" font-size="28" font-weight="700" fill="#172033">1. local invalid</text><text x="98" y="244" font-size="22" fill="#33415c">submit blocked</text>
|
||||
<rect x="70" y="372" width="255" height="110" rx="16" fill="#fff8de" stroke="#b18200" stroke-width="3"/>
|
||||
<text x="98" y="412" font-size="28" font-weight="700" fill="#172033">2. active attempt</text><text x="98" y="446" font-size="22" fill="#33415c">second retry blocked</text>
|
||||
<rect x="455" y="170" width="295" height="110" rx="16" fill="#e3f5f4" stroke="#147a75" stroke-width="3"/>
|
||||
<text x="483" y="210" font-size="28" font-weight="700" fill="#172033">3. old response</text><text x="483" y="244" font-size="22" fill="#33415c">stale → ignored</text>
|
||||
<rect x="455" y="372" width="295" height="110" rx="16" fill="#e9edff" stroke="#536dfe" stroke-width="3"/>
|
||||
<text x="483" y="412" font-size="28" font-weight="700" fill="#172033">4. matching retry</text><text x="483" y="446" font-size="22" fill="#33415c">accepted snapshot stored</text>
|
||||
<rect x="865" y="270" width="270" height="140" rx="16" fill="#e7f6ed" stroke="#198754" stroke-width="3"/>
|
||||
<text x="893" y="310" font-size="28" font-weight="700" fill="#172033">5. local rollback</text><text x="893" y="344" font-size="22" fill="#33415c">restore accepted values</text><text x="893" y="374" font-size="22" fill="#33415c">version++ · one use</text>
|
||||
</g>
|
||||
<g fill="none" stroke="#536079" stroke-width="3" marker-end="url(#arrow)"><path d="M325 225H445"/><path d="M325 427H445"/><path d="M750 427H855"/><path d="M1000 410V510H602V492"/></g>
|
||||
<g font-family="Arial, sans-serif" font-size="21" fill="#3e4a63"><text x="340" y="206">fix locally</text><text x="339" y="408">wait for result</text><text x="762" y="408">later local edit</text><text x="664" y="536">second rollback: nothing to rollback</text></g>
|
||||
<rect x="60" y="602" width="1080" height="56" rx="11" fill="#172033"/>
|
||||
<text x="84" y="637" font-family="Arial, sans-serif" font-size="20" fill="#ffffff">Нет вывода о HTTP abort, status code, server compensation или реальной доступности: это другие проверки.</text>
|
||||
<defs><marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" fill="#536079"/></marker></defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.5 KiB |
@@ -0,0 +1,24 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="720" viewBox="0 0 1200 720" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Связь server error с declared semantic payload</title>
|
||||
<desc id="desc">Диаграмма показывает, как совпавшие attemptId и версия создают запись ошибки поля и declared semantic payload. Правка поля очищает payload. Отдельно указано, что accessibility tree не наблюдается.</desc>
|
||||
<rect width="1200" height="720" fill="#f8f9fc"/>
|
||||
<text x="62" y="64" font-family="Arial, sans-serif" font-size="38" font-weight="700" fill="#172033">Одна error branch — один источник семантики</text>
|
||||
<text x="62" y="110" font-family="Arial, sans-serif" font-size="25" fill="#536079">Сначала совпадение attempt и version, затем text, invalid state и id сообщения</text>
|
||||
<g font-family="Arial, sans-serif">
|
||||
<rect x="60" y="180" width="270" height="208" rx="16" fill="#eef1ff" stroke="#536dfe" stroke-width="3"/>
|
||||
<text x="88" y="220" font-size="29" font-weight="700" fill="#172033">request snapshot</text>
|
||||
<text x="88" y="258" font-size="24" fill="#33415c">attemptId: 2</text><text x="88" y="293" font-size="24" fill="#33415c">email version: 2</text><text x="88" y="328" font-size="24" fill="#33415c">email: taken@…</text>
|
||||
<rect x="455" y="180" width="290" height="208" rx="16" fill="#fff0f0" stroke="#c73743" stroke-width="3"/>
|
||||
<text x="483" y="220" font-size="29" font-weight="700" fill="#172033">server error record</text>
|
||||
<text x="483" y="258" font-size="23" fill="#33415c">field: email</text><text x="483" y="291" font-size="23" fill="#33415c">source: server-declared</text><text x="483" y="324" font-size="22" fill="#33415c">message: другой адрес</text>
|
||||
<rect x="860" y="150" width="280" height="270" rx="16" fill="#e3f5f4" stroke="#147a75" stroke-width="3"/>
|
||||
<text x="888" y="190" font-size="29" font-weight="700" fill="#172033">declared payload</text>
|
||||
<text x="888" y="228" font-size="23" fill="#33415c">invalid: true</text><text x="888" y="260" font-size="22" fill="#33415c">id: email-server-error</text><text x="888" y="292" font-size="22" fill="#33415c">describedBy: hint + error</text><text x="888" y="324" font-size="22" fill="#33415c">next: исправить email</text><text x="888" y="366" font-size="20" fill="#536079">not an accessibility tree</text>
|
||||
</g>
|
||||
<g fill="none" stroke="#536079" stroke-width="3" marker-end="url(#arrow)"><path d="M330 284H446"/><path d="M745 284H850"/><path d="M1000 420V516H280"/></g>
|
||||
<g font-family="Arial, sans-serif" font-size="21" fill="#3e4a63"><text x="348" y="262">id + version match</text><text x="754" y="262">one reducer transition</text><text x="448" y="505">next edit: v3 → clear error and payload</text></g>
|
||||
<rect x="80" y="538" width="1040" height="98" rx="14" fill="#fff8de" stroke="#b18200" stroke-width="2"/>
|
||||
<text x="108" y="577" font-family="Arial, sans-serif" font-size="25" font-weight="700" fill="#172033">Граница доказательства</text>
|
||||
<text x="108" y="612" font-family="Arial, sans-serif" font-size="20" fill="#33415c">Fixture проверяет данные. DOM, уникальность id, browser и screen reader — отдельная проверка.</text>
|
||||
<defs><marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" fill="#536079"/></marker></defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.5 KiB |
@@ -0,0 +1,34 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="720" viewBox="0 0 1200 720" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Автомат учебной формы с обработкой устаревшего ответа</title>
|
||||
<desc id="desc">Схема показывает состояния ready, submitting, editing after submit, stale response ignored, server error и accepted. Нижняя примечание отделяет модель данных от HTTP и браузера.</desc>
|
||||
<rect width="1200" height="720" fill="#f7f8fc"/>
|
||||
<text x="60" y="66" font-family="Arial, sans-serif" font-size="38" font-weight="700" fill="#172033">Форма: response применим только к снимку input</text>
|
||||
<text x="60" y="110" font-family="Arial, sans-serif" font-size="25" fill="#536079">attemptId + versions, а не «последний callback»</text>
|
||||
<g font-family="Arial, sans-serif" text-anchor="middle">
|
||||
<rect x="70" y="230" width="180" height="92" rx="16" fill="#e9edff" stroke="#536dfe" stroke-width="3"/>
|
||||
<text x="160" y="269" font-size="30" font-weight="700" fill="#172033">ready</text><text x="160" y="300" font-size="21" fill="#536079">current values</text>
|
||||
<rect x="330" y="230" width="220" height="92" rx="16" fill="#fff0dd" stroke="#d77700" stroke-width="3"/>
|
||||
<text x="440" y="269" font-size="30" font-weight="700" fill="#172033">submitting</text><text x="440" y="300" font-size="21" fill="#536079">attempt 1 · v2</text>
|
||||
<rect x="630" y="230" width="230" height="92" rx="16" fill="#fff7de" stroke="#b18200" stroke-width="3"/>
|
||||
<text x="745" y="269" font-size="27" font-weight="700" fill="#172033">editing after submit</text><text x="745" y="300" font-size="21" fill="#536079">email v3</text>
|
||||
<rect x="940" y="230" width="190" height="92" rx="16" fill="#e7f6ed" stroke="#198754" stroke-width="3"/>
|
||||
<text x="1035" y="269" font-size="29" font-weight="700" fill="#172033">accepted</text><text x="1035" y="300" font-size="20" fill="#536079">save snapshot</text>
|
||||
<rect x="450" y="420" width="255" height="102" rx="16" fill="#ffe7e8" stroke="#c73743" stroke-width="3"/>
|
||||
<text x="578" y="459" font-size="29" font-weight="700" fill="#172033">server error</text><text x="578" y="490" font-size="20" fill="#536079">matching attempt + version</text>
|
||||
<rect x="810" y="420" width="265" height="102" rx="16" fill="#e2f5f4" stroke="#147a75" stroke-width="3"/>
|
||||
<text x="943" y="459" font-size="28" font-weight="700" fill="#172033">stale ignored</text><text x="943" y="490" font-size="20" fill="#536079">old error has no effect</text>
|
||||
</g>
|
||||
<g fill="none" stroke="#536079" stroke-width="3" marker-end="url(#arrow)">
|
||||
<path d="M250 276H322"/><path d="M550 276H622"/><path d="M860 276H932"/>
|
||||
<path d="M745 322V382H943V412"/><path d="M440 322V382H578V412"/>
|
||||
<path d="M578 522V570H160V332"/><path d="M943 522V570H250V322"/>
|
||||
</g>
|
||||
<g font-family="Arial, sans-serif" font-size="21" fill="#3e4a63">
|
||||
<text x="267" y="252">submit → snapshot</text><text x="570" y="252">edit field</text><text x="869" y="252">matching success</text>
|
||||
<text x="820" y="374">old response, v2 ≠ v3</text><text x="462" y="374">matching error</text>
|
||||
<text x="304" y="557">retry from current values</text><text x="695" y="557">retry</text>
|
||||
</g>
|
||||
<rect x="60" y="626" width="1080" height="54" rx="10" fill="#172033"/>
|
||||
<text x="84" y="660" font-family="Arial, sans-serif" font-size="20" fill="#ffffff">Граница fixture: только in-memory state. Нет HTTP, Fetch, задержки, DOM, browser или server status.</text>
|
||||
<defs><marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M 0 0 L 10 5 L 0 10 z" fill="#536079"/></marker></defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
Reference in New Issue
Block a user