Files
progcode/web/public/assets/editorial/2021/search-indexing-pipeline-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

80 lines
5.1 KiB
XML
Raw Permalink 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" width="720" height="1480" viewBox="0 0 720 1480" role="img" aria-labelledby="title desc">
<title id="title">Учебный путь документа от source до поисковой выдачи</title>
<desc id="desc">Вертикальная схема показывает сохранение документа version 7, идемпотентную постановку ingest, pending index, stale query до refresh, явный refresh и успешный query после перехода видимости.</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 31px system-ui, sans-serif; fill: #f8fafc; }
.subtitle { font: 400 20px system-ui, sans-serif; fill: #b6c4d6; }
.card-title { font: 700 25px system-ui, sans-serif; fill: #f8fafc; }
.body { font: 400 21px system-ui, sans-serif; fill: #d7e1ee; }
.small { font: 600 19px system-ui, sans-serif; fill: #d7e1ee; }
.good { fill: #66d9a0; }
.warn { fill: #ffc857; }
.muted { fill: #a8b6c8; }
</style>
</defs>
<rect width="720" height="1480" fill="#0b1220"/>
<rect x="24" y="24" width="672" height="82" rx="18" fill="#121d31" stroke="#273755" stroke-width="2"/>
<text x="48" y="59" class="title">Путь одного учебного документа</text>
<text x="48" y="87" class="subtitle">version 7 · локальная fixture · не схема кластера</text>
<rect x="54" y="136" width="612" height="158" rx="18" fill="#172842" stroke="#4a85c5" stroke-width="3"/>
<circle cx="91" cy="183" r="20" fill="#4a85c5"/>
<text x="84" y="190" class="small">1</text>
<text x="126" y="179" class="card-title">Source-of-truth</text>
<text x="126" y="213" class="body">id article-2021-07-42</text>
<text x="126" y="244" class="body">version 7 сохранена в модели</text>
<text x="126" y="275" class="small muted">сохранение не равно search visibility</text>
<path d="M360 306 L360 340" stroke="#78dce8" stroke-width="5" marker-end="url(#arrow)"/>
<text x="382" y="329" class="small muted">id + version</text>
<rect x="54" y="358" width="612" height="194" rx="18" fill="#172842" stroke="#7a6ff0" stroke-width="3"/>
<circle cx="91" cy="406" r="20" fill="#7a6ff0"/>
<text x="84" y="413" class="small">2</text>
<text x="126" y="402" class="card-title">Ingest-постановка</text>
<text x="126" y="436" class="body">key: article-2021-07-42:7</text>
<text x="126" y="467" class="body">первый вызов: ingest-enqueued</text>
<text x="126" y="498" class="body">повтор: duplicate-ingest-suppressed</text>
<text x="126" y="529" class="small muted">в модели остаётся одна задача</text>
<path d="M360 564 L360 598" stroke="#78dce8" stroke-width="5" marker-end="url(#arrow)"/>
<rect x="54" y="616" width="612" height="183" rx="18" fill="#172842" stroke="#d08c3f" stroke-width="3"/>
<circle cx="91" cy="664" r="20" fill="#d08c3f"/>
<text x="84" y="671" class="small">3</text>
<text x="126" y="660" class="card-title">Pending index</text>
<text x="126" y="694" class="body">event.version сверена с source.version</text>
<text x="126" y="725" class="body">документ подготовлен, но не видим</text>
<text x="126" y="756" class="small warn">query до refresh: 0 попаданий</text>
<path d="M360 811 L360 846" stroke="#78dce8" stroke-width="5" marker-end="url(#arrow)"/>
<rect x="54" y="864" width="612" height="136" rx="18" fill="#173b3a" stroke="#3bbd9c" stroke-width="3"/>
<circle cx="91" cy="912" r="20" fill="#3bbd9c"/>
<text x="84" y="919" class="small">4</text>
<text x="126" y="908" class="card-title">Refresh</text>
<text x="126" y="942" class="body">явный переход pending → visible</text>
<text x="126" y="973" class="small muted">в fixture нет HTTP, shard или interval</text>
<path d="M360 1012 L360 1048" stroke="#78dce8" stroke-width="5" marker-end="url(#arrow)"/>
<rect x="54" y="1066" width="612" height="179" rx="18" fill="#173b3a" stroke="#66d9a0" stroke-width="3"/>
<circle cx="91" cy="1114" r="20" fill="#66d9a0"/>
<text x="84" y="1121" class="small">5</text>
<text x="126" y="1110" class="card-title">Visible index</text>
<text x="126" y="1144" class="body">version 7 получила visibleAt</text>
<text x="126" y="1175" class="body">sourceSavedAt → visibleAt = 60</text>
<text x="126" y="1206" class="small good">условные мс для assertion, не SLA</text>
<path d="M360 1257 L360 1292" stroke="#78dce8" stroke-width="5" marker-end="url(#arrow)"/>
<rect x="54" y="1310" width="612" height="128" rx="18" fill="#162e29" stroke="#66d9a0" stroke-width="3"/>
<text x="88" y="1360" class="card-title">Query «свежести»</text>
<text x="88" y="1394" class="body">1 hit · current version 7</text>
<text x="88" y="1422" class="small muted">дальше проверяем scope, filter и анализ текста</text>
</svg>