Files
progcode/web/public/assets/editorial/2021/search-indexing-diagnosis-2021.svg
huncode 2a30c8816c
Build and deploy / deploy (push) Successful in 15s
revise July 2021 search indexing articles
2026-07-31 12:57:26 +03:00

69 lines
5.2 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" width="720" height="1540" viewBox="0 0 720 1540" role="img" aria-labelledby="title desc">
<title id="title">Дерево безопасной диагностики сохранённого, но не найденного документа</title>
<desc id="desc">Диагностика начинает с source и version, затем проверяет ingest, pending index, refresh и контракт query. На всех ветках сначала сохраняется evidence, а source не удаляется без подтверждённой причины.</desc>
<defs>
<marker id="arrow" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto">
<path d="M0 0 L12 6 L0 12 Z" fill="#78dce8"/>
</marker>
<style>
.title { font: 700 30px system-ui, sans-serif; fill: #f8fafc; }
.subtitle { font: 400 20px system-ui, sans-serif; fill: #b6c4d6; }
.question { font: 700 24px system-ui, sans-serif; fill: #f8fafc; }
.body { font: 400 20px system-ui, sans-serif; fill: #d7e1ee; }
.small { font: 600 18px system-ui, sans-serif; fill: #d7e1ee; }
.yes { font: 700 19px system-ui, sans-serif; fill: #66d9a0; }
.no { font: 700 19px system-ui, sans-serif; fill: #ffc857; }
</style>
</defs>
<rect width="720" height="1540" fill="#0b1220"/>
<rect x="24" y="24" width="672" height="82" rx="18" fill="#121d31" stroke="#273755" stroke-width="2"/>
<text x="48" y="58" class="title">Документ сохранён, но query пуст</text>
<text x="48" y="86" class="subtitle">сначала evidence, затем обратимое действие</text>
<rect x="54" y="140" width="612" height="124" rx="18" fill="#172842" stroke="#4a85c5" stroke-width="3"/>
<text x="86" y="184" class="question">0. Записать evidence</text>
<text x="86" y="216" class="body">id · source version · event key · query · время</text>
<text x="86" y="245" class="small">не удалять source до ответа на следующий вопрос</text>
<path d="M360 276 L360 319" stroke="#78dce8" stroke-width="5" marker-end="url(#arrow)"/>
<rect x="54" y="333" width="612" height="107" rx="18" fill="#172842" stroke="#7a6ff0" stroke-width="3"/>
<text x="86" y="376" class="question">1. Source существует по id?</text>
<text x="86" y="408" class="body">и version совпадает с ожидаемой?</text>
<path d="M360 452 L360 495" stroke="#78dce8" stroke-width="5" marker-end="url(#arrow)"/>
<text x="382" y="480" class="yes">да</text>
<rect x="54" y="509" width="612" height="112" rx="18" fill="#172842" stroke="#7a6ff0" stroke-width="3"/>
<text x="86" y="553" class="question">2. Есть ingest key id:version?</text>
<text x="86" y="585" class="body">повтор должен быть различим как duplicate</text>
<path d="M360 633 L360 676" stroke="#78dce8" stroke-width="5" marker-end="url(#arrow)"/>
<text x="382" y="661" class="yes">да</text>
<rect x="54" y="690" width="612" height="112" rx="18" fill="#2d2530" stroke="#ffc857" stroke-width="3"/>
<text x="86" y="734" class="question">3. Version лежит в pending index?</text>
<text x="86" y="766" class="body">query может быть stale до перехода видимости</text>
<path d="M360 814 L360 857" stroke="#78dce8" stroke-width="5" marker-end="url(#arrow)"/>
<text x="382" y="842" class="yes">да</text>
<rect x="54" y="871" width="612" height="134" rx="18" fill="#2d2530" stroke="#ffc857" stroke-width="3"/>
<text x="86" y="914" class="question">Действие: awaiting-refresh</text>
<text x="86" y="946" class="body">измерить gap и применить project policy</text>
<text x="86" y="976" class="small">controlled local test допустим, delete source — нет</text>
<path d="M360 1017 L360 1060" stroke="#78dce8" stroke-width="5" marker-end="url(#arrow)"/>
<rect x="54" y="1074" width="612" height="112" rx="18" fill="#173b3a" stroke="#66d9a0" stroke-width="3"/>
<text x="86" y="1118" class="question">4. Visible version актуальна?</text>
<text x="86" y="1150" class="body">source.version равна visible.version?</text>
<path d="M360 1198 L360 1241" stroke="#78dce8" stroke-width="5" marker-end="url(#arrow)"/>
<text x="382" y="1226" class="yes">да</text>
<rect x="54" y="1255" width="612" height="140" rx="18" fill="#173b3a" stroke="#66d9a0" stroke-width="3"/>
<text x="86" y="1298" class="question">5. Проверить контракт query</text>
<text x="86" y="1330" class="body">scope · filter · поле · анализ текста · права</text>
<text x="86" y="1361" class="small">точечная правка и повтор исходного query</text>
<rect x="54" y="1425" width="612" height="94" rx="16" fill="#3a2730" stroke="#f06b8a" stroke-width="3"/>
<text x="86" y="1457" class="question">На любой ветке «нет»</text>
<text x="86" y="1486" class="body">сохранить evidence; source не удалять</text>
<text x="86" y="1514" class="body">не создавать копию до подтверждения причины</text>
</svg>