arm-ka-docs/model/diagrams/part04_files_jobs.svg
Andrey Epifancev d643453dee Устаревшая документация: модель v5.17, диаграммы по частям, сделанное — в сделанное (#60)
- Ссылки на источник истины v5.13/v5.14/v5.15 → v5.17: openspec/config.yaml, KICKOFF-PROMPT, 00-workspace-layout,
  08-source-docs-index, заголовок 05-domain-rules, dev/checks.md; спека quality-checks — без привязки к версии
  (путь — переменная DBML Makefile).
- Диаграммы model/diagrams/part01…09 перерисованы по v5.17 (были v5.12): scripts/gen_model_diagrams.py
  (разбиение DBML на части + dbml-renderer + resvg через npx, версии закреплены), цель make diagrams;
  описание в 04-data-model-guide, 06-test-data, 08-source-docs-index.
- dev/frontend-api-guide.md: КПП (arm-core #52) и DB_SCHEMA (#53) — из §11 в §1, КПП в маршрутах §5.2/§5.3,
  схеме §5.8 и каталоге ошибок §9 (сверено с кодом 99669cd).
- Ссылки на заархивированные change'и (dev/README, dev/checks, api-contract-slice-3b/4), путь к v4 DBML в индексе.
- 09-delivery-plan: статусы Срезов 0, 2d, 3b, 4.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-07 23:35:44 +04:00

763 lines
91 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.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.47.0 (20210316.0004)
-->
<!-- Title: dbml Pages: 1 -->
<svg width="3716pt" height="4003pt"
viewBox="0.00 0.00 3715.82 4003.36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 3999.36)">
<title>dbml</title>
<!-- document_type -->
<g id="document_type" class="node">
<title>document_type</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="1345.56" cy="-2010.68" rx="260.84" ry="257.27"/>
<polygon fill="#29235c" stroke="transparent" points="1163.56,-2130.68 1163.56,-2190.68 1528.56,-2190.68 1528.56,-2130.68 1163.56,-2130.68"/>
<polygon fill="none" stroke="#29235c" points="1163.56,-2130.68 1163.56,-2190.68 1528.56,-2190.68 1528.56,-2130.68 1163.56,-2130.68"/>
<text text-anchor="start" x="1174.44" y="-2151.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;document_type &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1163.56,-2070.68 1163.56,-2130.68 1528.56,-2130.68 1528.56,-2070.68 1163.56,-2070.68"/>
<polygon fill="none" stroke="#29235c" points="1163.56,-2070.68 1163.56,-2130.68 1528.56,-2130.68 1528.56,-2070.68 1163.56,-2070.68"/>
<text text-anchor="start" x="1235.81" y="-2091.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;BALANCE &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1163.56,-2010.68 1163.56,-2070.68 1528.56,-2070.68 1528.56,-2010.68 1163.56,-2010.68"/>
<polygon fill="none" stroke="#29235c" points="1163.56,-2010.68 1163.56,-2070.68 1528.56,-2070.68 1528.56,-2010.68 1163.56,-2010.68"/>
<text text-anchor="start" x="1246.5" y="-2031.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;INCOME &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1163.56,-1950.68 1163.56,-2010.68 1528.56,-2010.68 1528.56,-1950.68 1163.56,-1950.68"/>
<polygon fill="none" stroke="#29235c" points="1163.56,-1950.68 1163.56,-2010.68 1528.56,-2010.68 1528.56,-1950.68 1163.56,-1950.68"/>
<text text-anchor="start" x="1276.7" y="-1971.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;OSV &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1163.56,-1890.68 1163.56,-1950.68 1528.56,-1950.68 1528.56,-1890.68 1163.56,-1890.68"/>
<polygon fill="none" stroke="#29235c" points="1163.56,-1890.68 1163.56,-1950.68 1528.56,-1950.68 1528.56,-1890.68 1163.56,-1890.68"/>
<text text-anchor="start" x="1206.49" y="-1911.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;DISCLOSURE &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1163.56,-1830.68 1163.56,-1890.68 1528.56,-1890.68 1528.56,-1830.68 1163.56,-1830.68"/>
<polygon fill="none" stroke="#29235c" points="1163.56,-1830.68 1163.56,-1890.68 1528.56,-1890.68 1528.56,-1830.68 1163.56,-1830.68"/>
<text text-anchor="start" x="1254.5" y="-1851.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;OTHER &#160;&#160;&#160;</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="1162.06,-1829.68 1162.06,-2191.68 1529.06,-2191.68 1529.06,-1829.68 1162.06,-1829.68"/>
</g>
<!-- file_type -->
<g id="file_type" class="node">
<title>file_type</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="2084.43" cy="-1063.68" rx="190.42" ry="299.63"/>
<polygon fill="#29235c" stroke="transparent" points="1952.43,-1213.68 1952.43,-1273.68 2217.43,-1273.68 2217.43,-1213.68 1952.43,-1213.68"/>
<polygon fill="none" stroke="#29235c" points="1952.43,-1213.68 1952.43,-1273.68 2217.43,-1273.68 2217.43,-1213.68 1952.43,-1213.68"/>
<text text-anchor="start" x="1963.11" y="-1234.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;file_type &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1952.43,-1153.68 1952.43,-1213.68 2217.43,-1213.68 2217.43,-1153.68 1952.43,-1153.68"/>
<polygon fill="none" stroke="#29235c" points="1952.43,-1153.68 1952.43,-1213.68 2217.43,-1213.68 2217.43,-1153.68 1952.43,-1153.68"/>
<text text-anchor="start" x="2019.12" y="-1174.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;XLS &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1952.43,-1093.68 1952.43,-1153.68 2217.43,-1153.68 2217.43,-1093.68 1952.43,-1093.68"/>
<polygon fill="none" stroke="#29235c" points="1952.43,-1093.68 1952.43,-1153.68 2217.43,-1153.68 2217.43,-1093.68 1952.43,-1093.68"/>
<text text-anchor="start" x="2008.45" y="-1114.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;XLSX &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1952.43,-1033.68 1952.43,-1093.68 2217.43,-1093.68 2217.43,-1033.68 1952.43,-1033.68"/>
<polygon fill="none" stroke="#29235c" points="1952.43,-1033.68 1952.43,-1093.68 2217.43,-1093.68 2217.43,-1033.68 1952.43,-1033.68"/>
<text text-anchor="start" x="2008.45" y="-1054.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;XLSB &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1952.43,-973.68 1952.43,-1033.68 2217.43,-1033.68 2217.43,-973.68 1952.43,-973.68"/>
<polygon fill="none" stroke="#29235c" points="1952.43,-973.68 1952.43,-1033.68 2217.43,-1033.68 2217.43,-973.68 1952.43,-973.68"/>
<text text-anchor="start" x="2017.36" y="-994.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;PDF &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1952.43,-913.68 1952.43,-973.68 2217.43,-973.68 2217.43,-913.68 1952.43,-913.68"/>
<polygon fill="none" stroke="#29235c" points="1952.43,-913.68 1952.43,-973.68 2217.43,-973.68 2217.43,-913.68 1952.43,-913.68"/>
<text text-anchor="start" x="2014.69" y="-934.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;PNG &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1952.43,-853.68 1952.43,-913.68 2217.43,-913.68 2217.43,-853.68 1952.43,-853.68"/>
<polygon fill="none" stroke="#29235c" points="1952.43,-853.68 1952.43,-913.68 2217.43,-913.68 2217.43,-853.68 1952.43,-853.68"/>
<text text-anchor="start" x="2018.24" y="-874.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;JPG &#160;&#160;&#160;</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="1950.93,-852.68 1950.93,-1274.68 2217.93,-1274.68 2217.93,-852.68 1950.93,-852.68"/>
</g>
<!-- recognition_pipeline -->
<g id="recognition_pipeline" class="node">
<title>recognition_pipeline</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="2811.98" cy="-2524.68" rx="307.68" ry="130.22"/>
<polygon fill="#29235c" stroke="transparent" points="2596.98,-2554.68 2596.98,-2614.68 3027.98,-2614.68 3027.98,-2554.68 2596.98,-2554.68"/>
<polygon fill="none" stroke="#29235c" points="2596.98,-2554.68 2596.98,-2614.68 3027.98,-2614.68 3027.98,-2554.68 2596.98,-2554.68"/>
<text text-anchor="start" x="2607.97" y="-2575.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;recognition_pipeline &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2596.98,-2494.68 2596.98,-2554.68 3027.98,-2554.68 3027.98,-2494.68 2596.98,-2494.68"/>
<polygon fill="none" stroke="#29235c" points="2596.98,-2494.68 2596.98,-2554.68 3027.98,-2554.68 3027.98,-2494.68 2596.98,-2494.68"/>
<text text-anchor="start" x="2728" y="-2515.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;tabular &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2596.98,-2434.68 2596.98,-2494.68 3027.98,-2494.68 3027.98,-2434.68 2596.98,-2434.68"/>
<polygon fill="none" stroke="#29235c" points="2596.98,-2434.68 2596.98,-2494.68 3027.98,-2494.68 3027.98,-2434.68 2596.98,-2434.68"/>
<text text-anchor="start" x="2733.35" y="-2455.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;image &#160;&#160;&#160;</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="2595.48,-2433.68 2595.48,-2615.68 3028.48,-2615.68 3028.48,-2433.68 2595.48,-2433.68"/>
</g>
<!-- period_quarter -->
<g id="period_quarter" class="node">
<title>period_quarter</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="1345.56" cy="-1520.68" rx="253.29" ry="214.92"/>
<polygon fill="#29235c" stroke="transparent" points="1168.56,-1610.68 1168.56,-1670.68 1522.56,-1670.68 1522.56,-1610.68 1168.56,-1610.68"/>
<polygon fill="none" stroke="#29235c" points="1168.56,-1610.68 1168.56,-1670.68 1522.56,-1670.68 1522.56,-1610.68 1168.56,-1610.68"/>
<text text-anchor="start" x="1179.29" y="-1631.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;period_quarter &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1168.56,-1550.68 1168.56,-1610.68 1522.56,-1610.68 1522.56,-1550.68 1168.56,-1550.68"/>
<polygon fill="none" stroke="#29235c" points="1168.56,-1550.68 1168.56,-1610.68 1522.56,-1610.68 1522.56,-1550.68 1168.56,-1550.68"/>
<text text-anchor="start" x="1288.65" y="-1571.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;Q1 &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1168.56,-1490.68 1168.56,-1550.68 1522.56,-1550.68 1522.56,-1490.68 1168.56,-1490.68"/>
<polygon fill="none" stroke="#29235c" points="1168.56,-1490.68 1168.56,-1550.68 1522.56,-1550.68 1522.56,-1490.68 1168.56,-1490.68"/>
<text text-anchor="start" x="1288.65" y="-1511.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;Q2 &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1168.56,-1430.68 1168.56,-1490.68 1522.56,-1490.68 1522.56,-1430.68 1168.56,-1430.68"/>
<polygon fill="none" stroke="#29235c" points="1168.56,-1430.68 1168.56,-1490.68 1522.56,-1490.68 1522.56,-1430.68 1168.56,-1430.68"/>
<text text-anchor="start" x="1288.65" y="-1451.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;Q3 &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1168.56,-1370.68 1168.56,-1430.68 1522.56,-1430.68 1522.56,-1370.68 1168.56,-1370.68"/>
<polygon fill="none" stroke="#29235c" points="1168.56,-1370.68 1168.56,-1430.68 1522.56,-1430.68 1522.56,-1370.68 1168.56,-1370.68"/>
<text text-anchor="start" x="1288.65" y="-1391.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;Q4 &#160;&#160;&#160;</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="1167.56,-1369.68 1167.56,-1671.68 1523.56,-1671.68 1523.56,-1369.68 1167.56,-1369.68"/>
</g>
<!-- file_status -->
<g id="file_status" class="node">
<title>file_status</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="2084.43" cy="-450.68" rx="224.31" ry="257.27"/>
<polygon fill="#29235c" stroke="transparent" points="1928.43,-570.68 1928.43,-630.68 2241.43,-630.68 2241.43,-570.68 1928.43,-570.68"/>
<polygon fill="none" stroke="#29235c" points="1928.43,-570.68 1928.43,-630.68 2241.43,-630.68 2241.43,-570.68 1928.43,-570.68"/>
<text text-anchor="start" x="1950.66" y="-591.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;file_status &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1928.43,-510.68 1928.43,-570.68 2241.43,-570.68 2241.43,-510.68 1928.43,-510.68"/>
<polygon fill="none" stroke="#29235c" points="1928.43,-510.68 1928.43,-570.68 2241.43,-570.68 2241.43,-510.68 1928.43,-510.68"/>
<text text-anchor="start" x="1961.35" y="-531.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;UPLOADED &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1928.43,-450.68 1928.43,-510.68 2241.43,-510.68 2241.43,-450.68 1928.43,-450.68"/>
<polygon fill="none" stroke="#29235c" points="1928.43,-450.68 1928.43,-510.68 2241.43,-510.68 2241.43,-450.68 1928.43,-450.68"/>
<text text-anchor="start" x="1942.68" y="-471.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;PROCESSING &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1928.43,-390.68 1928.43,-450.68 2241.43,-450.68 2241.43,-390.68 1928.43,-390.68"/>
<polygon fill="none" stroke="#29235c" points="1928.43,-390.68 1928.43,-450.68 2241.43,-450.68 2241.43,-390.68 1928.43,-390.68"/>
<text text-anchor="start" x="1948.91" y="-411.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;PROCESSED &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1928.43,-330.68 1928.43,-390.68 2241.43,-390.68 2241.43,-330.68 1928.43,-330.68"/>
<polygon fill="none" stroke="#29235c" points="1928.43,-330.68 1928.43,-390.68 2241.43,-390.68 2241.43,-330.68 1928.43,-330.68"/>
<text text-anchor="start" x="1991.59" y="-351.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;ERROR &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1928.43,-270.68 1928.43,-330.68 2241.43,-330.68 2241.43,-270.68 1928.43,-270.68"/>
<polygon fill="none" stroke="#29235c" points="1928.43,-270.68 1928.43,-330.68 2241.43,-330.68 2241.43,-270.68 1928.43,-270.68"/>
<text text-anchor="start" x="1939.13" y="-291.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;SUPERSEDED &#160;&#160;&#160;</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="1926.93,-269.68 1926.93,-631.68 2241.93,-631.68 2241.93,-269.68 1926.93,-269.68"/>
</g>
<!-- document_status -->
<g id="document_status" class="node">
<title>document_status</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="1345.56" cy="-1072.68" rx="278.7" ry="214.92"/>
<polygon fill="#29235c" stroke="transparent" points="1150.56,-1162.68 1150.56,-1222.68 1540.56,-1222.68 1540.56,-1162.68 1150.56,-1162.68"/>
<polygon fill="none" stroke="#29235c" points="1150.56,-1162.68 1150.56,-1222.68 1540.56,-1222.68 1540.56,-1162.68 1150.56,-1162.68"/>
<text text-anchor="start" x="1161.49" y="-1183.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;document_status &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1150.56,-1102.68 1150.56,-1162.68 1540.56,-1162.68 1540.56,-1102.68 1150.56,-1102.68"/>
<polygon fill="none" stroke="#29235c" points="1150.56,-1102.68 1150.56,-1162.68 1540.56,-1162.68 1540.56,-1102.68 1150.56,-1102.68"/>
<text text-anchor="start" x="1203.33" y="-1123.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;RECOGNIZED &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1150.56,-1042.68 1150.56,-1102.68 1540.56,-1102.68 1540.56,-1042.68 1150.56,-1042.68"/>
<polygon fill="none" stroke="#29235c" points="1150.56,-1042.68 1150.56,-1102.68 1540.56,-1102.68 1540.56,-1042.68 1150.56,-1042.68"/>
<text text-anchor="start" x="1189.99" y="-1063.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;NEEDS_CHECK &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1150.56,-982.68 1150.56,-1042.68 1540.56,-1042.68 1540.56,-982.68 1150.56,-982.68"/>
<polygon fill="none" stroke="#29235c" points="1150.56,-982.68 1150.56,-1042.68 1540.56,-1042.68 1540.56,-982.68 1150.56,-982.68"/>
<text text-anchor="start" x="1213.12" y="-1003.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;CONFIRMED &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1150.56,-922.68 1150.56,-982.68 1540.56,-982.68 1540.56,-922.68 1150.56,-922.68"/>
<polygon fill="none" stroke="#29235c" points="1150.56,-922.68 1150.56,-982.68 1540.56,-982.68 1540.56,-922.68 1150.56,-922.68"/>
<text text-anchor="start" x="1252.22" y="-943.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;ERROR &#160;&#160;&#160;</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="1149.56,-921.68 1149.56,-1223.68 1541.56,-1223.68 1541.56,-921.68 1149.56,-921.68"/>
</g>
<!-- s3_bucket_role -->
<g id="s3_bucket_role" class="node">
<title>s3_bucket_role</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="3448.31" cy="-3346.68" rx="259.52" ry="214.92"/>
<polygon fill="#29235c" stroke="transparent" points="3267.31,-3436.68 3267.31,-3496.68 3630.31,-3496.68 3630.31,-3436.68 3267.31,-3436.68"/>
<polygon fill="none" stroke="#29235c" points="3267.31,-3436.68 3267.31,-3496.68 3630.31,-3496.68 3630.31,-3436.68 3267.31,-3436.68"/>
<text text-anchor="start" x="3278.08" y="-3457.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;s3_bucket_role &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="3267.31,-3376.68 3267.31,-3436.68 3630.31,-3436.68 3630.31,-3376.68 3267.31,-3376.68"/>
<polygon fill="none" stroke="#29235c" points="3267.31,-3376.68 3267.31,-3436.68 3630.31,-3436.68 3630.31,-3376.68 3267.31,-3376.68"/>
<text text-anchor="start" x="3357.22" y="-3397.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;uploads &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="3267.31,-3316.68 3267.31,-3376.68 3630.31,-3376.68 3630.31,-3316.68 3267.31,-3316.68"/>
<polygon fill="none" stroke="#29235c" points="3267.31,-3316.68 3267.31,-3376.68 3630.31,-3376.68 3630.31,-3316.68 3267.31,-3316.68"/>
<text text-anchor="start" x="3366.13" y="-3337.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;results &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="3267.31,-3256.68 3267.31,-3316.68 3630.31,-3316.68 3630.31,-3256.68 3267.31,-3256.68"/>
<polygon fill="none" stroke="#29235c" points="3267.31,-3256.68 3267.31,-3316.68 3630.31,-3316.68 3630.31,-3256.68 3267.31,-3256.68"/>
<text text-anchor="start" x="3360.78" y="-3277.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;exports &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="3267.31,-3196.68 3267.31,-3256.68 3630.31,-3256.68 3630.31,-3196.68 3267.31,-3196.68"/>
<polygon fill="none" stroke="#29235c" points="3267.31,-3196.68 3267.31,-3256.68 3630.31,-3256.68 3630.31,-3196.68 3267.31,-3196.68"/>
<text text-anchor="start" x="3361.68" y="-3217.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;archive &#160;&#160;&#160;</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="3265.81,-3195.68 3265.81,-3497.68 3630.81,-3497.68 3630.81,-3195.68 3265.81,-3195.68"/>
</g>
<!-- recognition_status -->
<g id="recognition_status" class="node">
<title>recognition_status</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="2811.98" cy="-1991.68" rx="289.83" ry="384.83"/>
<polygon fill="#29235c" stroke="transparent" points="2608.98,-2201.68 2608.98,-2261.68 3014.98,-2261.68 3014.98,-2201.68 2608.98,-2201.68"/>
<polygon fill="none" stroke="#29235c" points="2608.98,-2201.68 2608.98,-2261.68 3014.98,-2261.68 3014.98,-2201.68 2608.98,-2201.68"/>
<text text-anchor="start" x="2619.91" y="-2222.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;recognition_status &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2608.98,-2141.68 2608.98,-2201.68 3014.98,-2201.68 3014.98,-2141.68 2608.98,-2141.68"/>
<polygon fill="none" stroke="#29235c" points="2608.98,-2141.68 2608.98,-2201.68 3014.98,-2201.68 3014.98,-2141.68 2608.98,-2141.68"/>
<text text-anchor="start" x="2723.04" y="-2162.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;queued &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2608.98,-2081.68 2608.98,-2141.68 3014.98,-2141.68 3014.98,-2081.68 2608.98,-2081.68"/>
<polygon fill="none" stroke="#29235c" points="2608.98,-2081.68 2608.98,-2141.68 3014.98,-2141.68 3014.98,-2081.68 2608.98,-2081.68"/>
<text text-anchor="start" x="2707.94" y="-2102.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;published &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2608.98,-2021.68 2608.98,-2081.68 3014.98,-2081.68 3014.98,-2021.68 2608.98,-2021.68"/>
<polygon fill="none" stroke="#29235c" points="2608.98,-2021.68 2608.98,-2081.68 3014.98,-2081.68 3014.98,-2021.68 2608.98,-2021.68"/>
<text text-anchor="start" x="2699.06" y="-2042.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;processing &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2608.98,-1961.68 2608.98,-2021.68 3014.98,-2021.68 3014.98,-1961.68 2608.98,-1961.68"/>
<polygon fill="none" stroke="#29235c" points="2608.98,-1961.68 2608.98,-2021.68 3014.98,-2021.68 3014.98,-1961.68 2608.98,-1961.68"/>
<text text-anchor="start" x="2740.83" y="-1982.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;done &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2608.98,-1901.68 2608.98,-1961.68 3014.98,-1961.68 3014.98,-1901.68 2608.98,-1901.68"/>
<polygon fill="none" stroke="#29235c" points="2608.98,-1901.68 2608.98,-1961.68 3014.98,-1961.68 3014.98,-1901.68 2608.98,-1901.68"/>
<text text-anchor="start" x="2682.14" y="-1922.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;needs_check &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2608.98,-1841.68 2608.98,-1901.68 3014.98,-1901.68 3014.98,-1841.68 2608.98,-1841.68"/>
<polygon fill="none" stroke="#29235c" points="2608.98,-1841.68 2608.98,-1901.68 3014.98,-1901.68 3014.98,-1841.68 2608.98,-1841.68"/>
<text text-anchor="start" x="2742.64" y="-1862.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;error &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2608.98,-1781.68 2608.98,-1841.68 3014.98,-1841.68 3014.98,-1781.68 2608.98,-1781.68"/>
<polygon fill="none" stroke="#29235c" points="2608.98,-1781.68 2608.98,-1841.68 3014.98,-1841.68 3014.98,-1781.68 2608.98,-1781.68"/>
<text text-anchor="start" x="2723.95" y="-1802.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;timeout &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2608.98,-1721.68 2608.98,-1781.68 3014.98,-1781.68 3014.98,-1721.68 2608.98,-1721.68"/>
<polygon fill="none" stroke="#29235c" points="2608.98,-1721.68 2608.98,-1781.68 3014.98,-1781.68 3014.98,-1721.68 2608.98,-1721.68"/>
<text text-anchor="start" x="2755.07" y="-1742.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;dlq &#160;&#160;&#160;</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="2607.98,-1720.68 2607.98,-2262.68 3015.98,-2262.68 3015.98,-1720.68 2607.98,-1720.68"/>
</g>
<!-- document_check_result -->
<g id="document_check_result" class="node">
<title>document_check_result</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="1345.56" cy="-667.68" rx="345.14" ry="172.57"/>
<polygon fill="#29235c" stroke="transparent" points="1103.56,-727.68 1103.56,-787.68 1587.56,-787.68 1587.56,-727.68 1103.56,-727.68"/>
<polygon fill="none" stroke="#29235c" points="1103.56,-727.68 1103.56,-787.68 1587.56,-787.68 1587.56,-727.68 1103.56,-727.68"/>
<text text-anchor="start" x="1114.38" y="-748.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;document_check_result &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1103.56,-667.68 1103.56,-727.68 1587.56,-727.68 1587.56,-667.68 1103.56,-667.68"/>
<polygon fill="none" stroke="#29235c" points="1103.56,-667.68 1103.56,-727.68 1587.56,-727.68 1587.56,-667.68 1103.56,-667.68"/>
<text text-anchor="start" x="1253.12" y="-688.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;MATCH &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1103.56,-607.68 1103.56,-667.68 1587.56,-667.68 1587.56,-607.68 1103.56,-607.68"/>
<polygon fill="none" stroke="#29235c" points="1103.56,-607.68 1103.56,-667.68 1587.56,-667.68 1587.56,-607.68 1103.56,-607.68"/>
<text text-anchor="start" x="1224.68" y="-628.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;MISMATCH &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1103.56,-547.68 1103.56,-607.68 1587.56,-607.68 1587.56,-547.68 1103.56,-547.68"/>
<polygon fill="none" stroke="#29235c" points="1103.56,-547.68 1103.56,-607.68 1587.56,-607.68 1587.56,-547.68 1103.56,-547.68"/>
<text text-anchor="start" x="1225.57" y="-568.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;UNKNOWN &#160;&#160;&#160;</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="1102.56,-546.68 1102.56,-788.68 1588.56,-788.68 1588.56,-546.68 1102.56,-546.68"/>
</g>
<!-- app_user -->
<g id="app_user" class="node">
<title>app_user</title>
<g id="a_app_user"><a xlink:title="app_user&#10;STUB — полное определение в part02_users_access">
<ellipse fill="none" stroke="black" stroke-width="0" cx="2084.43" cy="-87.68" rx="200.22" ry="87.86"/>
<polygon fill="#1d71b8" stroke="transparent" points="1945.43,-87.68 1945.43,-147.68 2224.43,-147.68 2224.43,-87.68 1945.43,-87.68"/>
<polygon fill="none" stroke="#29235c" points="1945.43,-87.68 1945.43,-147.68 2224.43,-147.68 2224.43,-87.68 1945.43,-87.68"/>
<text text-anchor="start" x="1955.98" y="-108.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;app_user &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1945.43,-27.68 1945.43,-87.68 2224.43,-87.68 2224.43,-27.68 1945.43,-27.68"/>
<polygon fill="none" stroke="#29235c" points="1945.43,-27.68 1945.43,-87.68 2224.43,-87.68 2224.43,-27.68 1945.43,-27.68"/>
<text text-anchor="start" x="1956.43" y="-48.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text>
<text text-anchor="start" x="1981.32" y="-48.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="2152.96" y="-48.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="1943.93,-26.68 1943.93,-148.68 2224.93,-148.68 2224.93,-26.68 1943.93,-26.68"/>
</a>
</g>
</g>
<!-- legal_entity -->
<g id="legal_entity" class="node">
<title>legal_entity</title>
<g id="a_legal_entity"><a xlink:title="legal_entity&#10;STUB — полное определение в part01_groups_entities">
<ellipse fill="none" stroke="black" stroke-width="0" cx="2084.43" cy="-3907.68" rx="220.73" ry="87.86"/>
<polygon fill="#1d71b8" stroke="transparent" points="1930.43,-3907.68 1930.43,-3967.68 2238.43,-3967.68 2238.43,-3907.68 1930.43,-3907.68"/>
<polygon fill="none" stroke="#29235c" points="1930.43,-3907.68 1930.43,-3967.68 2238.43,-3967.68 2238.43,-3907.68 1930.43,-3907.68"/>
<text text-anchor="start" x="1941.27" y="-3928.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;legal_entity &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1930.43,-3847.68 1930.43,-3907.68 2238.43,-3907.68 2238.43,-3847.68 1930.43,-3847.68"/>
<polygon fill="none" stroke="#29235c" points="1930.43,-3847.68 1930.43,-3907.68 2238.43,-3907.68 2238.43,-3847.68 1930.43,-3847.68"/>
<text text-anchor="start" x="1941.43" y="-3868.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text>
<text text-anchor="start" x="1966.32" y="-3868.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="2166.96" y="-3868.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="1929.43,-3846.68 1929.43,-3968.68 2239.43,-3968.68 2239.43,-3846.68 1929.43,-3846.68"/>
</a>
</g>
</g>
<!-- s3_object -->
<g id="s3_object" class="node">
<title>s3_object</title>
<g id="a_s3_object"><a xlink:title="s3_object&#10;Реестр объектов S3. stored_file / recognition_job ссылаются сюда FK">
<ellipse fill="none" stroke="black" stroke-width="0" cx="2811.98" cy="-3226.68" rx="340.65" ry="554.24"/>
<polygon fill="#1d71b8" stroke="transparent" points="2572.98,-3556.68 2572.98,-3616.68 3050.98,-3616.68 3050.98,-3556.68 2572.98,-3556.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3556.68 2572.98,-3616.68 3050.98,-3616.68 3050.98,-3556.68 2572.98,-3556.68"/>
<text text-anchor="start" x="2681.26" y="-3577.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;s3_object &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2572.98,-3496.68 2572.98,-3556.68 3050.98,-3556.68 3050.98,-3496.68 2572.98,-3496.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3496.68 2572.98,-3556.68 3050.98,-3556.68 3050.98,-3496.68 2572.98,-3496.68"/>
<text text-anchor="start" x="2583.98" y="-3517.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text>
<text text-anchor="start" x="2608.87" y="-3517.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="2979.51" y="-3517.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2572.98,-3436.68 2572.98,-3496.68 3050.98,-3496.68 3050.98,-3436.68 2572.98,-3436.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3436.68 2572.98,-3496.68 3050.98,-3496.68 3050.98,-3436.68 2572.98,-3436.68"/>
<text text-anchor="start" x="2583.5" y="-3456.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">bucket_role &#160;&#160;&#160;</text>
<text text-anchor="start" x="2783.95" y="-3457.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">s3_bucket_role</text>
<text text-anchor="start" x="3000.91" y="-3457.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="3009.8" y="-3457.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2572.98,-3376.68 2572.98,-3436.68 3050.98,-3436.68 3050.98,-3376.68 2572.98,-3376.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3376.68 2572.98,-3436.68 3050.98,-3436.68 3050.98,-3376.68 2572.98,-3376.68"/>
<text text-anchor="start" x="2583.98" y="-3396.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">bucket &#160;&#160;&#160;</text>
<text text-anchor="start" x="2894.21" y="-3397.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<text text-anchor="start" x="3000.89" y="-3397.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="3009.78" y="-3397.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2572.98,-3316.68 2572.98,-3376.68 3050.98,-3376.68 3050.98,-3316.68 2572.98,-3316.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3316.68 2572.98,-3376.68 3050.98,-3376.68 3050.98,-3316.68 2572.98,-3316.68"/>
<text text-anchor="start" x="2583.98" y="-3336.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">key &#160;&#160;&#160;</text>
<text text-anchor="start" x="2894.21" y="-3337.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<text text-anchor="start" x="3000.89" y="-3337.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="3009.78" y="-3337.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2572.98,-3256.68 2572.98,-3316.68 3050.98,-3316.68 3050.98,-3256.68 2572.98,-3256.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3256.68 2572.98,-3316.68 3050.98,-3316.68 3050.98,-3256.68 2572.98,-3256.68"/>
<text text-anchor="start" x="2583.98" y="-3276.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">content_type &#160;&#160;&#160;</text>
<text text-anchor="start" x="2933.3" y="-3277.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2572.98,-3196.68 2572.98,-3256.68 3050.98,-3256.68 3050.98,-3196.68 2572.98,-3196.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3196.68 2572.98,-3256.68 3050.98,-3256.68 3050.98,-3196.68 2572.98,-3196.68"/>
<text text-anchor="start" x="2583.98" y="-3216.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">size_bytes &#160;&#160;&#160;</text>
<text text-anchor="start" x="2963.52" y="-3217.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">bigint</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2572.98,-3136.68 2572.98,-3196.68 3050.98,-3196.68 3050.98,-3136.68 2572.98,-3136.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3136.68 2572.98,-3196.68 3050.98,-3196.68 3050.98,-3136.68 2572.98,-3136.68"/>
<text text-anchor="start" x="2583.98" y="-3156.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">sha256 &#160;&#160;&#160;</text>
<text text-anchor="start" x="2933.3" y="-3157.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2572.98,-3076.68 2572.98,-3136.68 3050.98,-3136.68 3050.98,-3076.68 2572.98,-3076.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3076.68 2572.98,-3136.68 3050.98,-3136.68 3050.98,-3076.68 2572.98,-3076.68"/>
<text text-anchor="start" x="2583.98" y="-3096.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">version_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="2933.3" y="-3097.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2572.98,-3016.68 2572.98,-3076.68 3050.98,-3076.68 3050.98,-3016.68 2572.98,-3016.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3016.68 2572.98,-3076.68 3050.98,-3076.68 3050.98,-3016.68 2572.98,-3016.68"/>
<text text-anchor="start" x="2583.98" y="-3036.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">created_by &#160;&#160;&#160;</text>
<text text-anchor="start" x="2933.3" y="-3037.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2572.98,-2956.68 2572.98,-3016.68 3050.98,-3016.68 3050.98,-2956.68 2572.98,-2956.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-2956.68 2572.98,-3016.68 3050.98,-3016.68 3050.98,-2956.68 2572.98,-2956.68"/>
<text text-anchor="start" x="2583.98" y="-2976.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">created_at &#160;&#160;&#160;</text>
<text text-anchor="start" x="2828.43" y="-2977.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text>
<text text-anchor="start" x="3000.89" y="-2977.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="3009.78" y="-2977.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2572.98,-2896.68 2572.98,-2956.68 3050.98,-2956.68 3050.98,-2896.68 2572.98,-2896.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-2896.68 2572.98,-2956.68 3050.98,-2956.68 3050.98,-2896.68 2572.98,-2896.68"/>
<text text-anchor="start" x="2583.98" y="-2916.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">expires_at &#160;&#160;&#160;</text>
<text text-anchor="start" x="2867.53" y="-2917.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2572.98,-2836.68 2572.98,-2896.68 3050.98,-2896.68 3050.98,-2836.68 2572.98,-2836.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-2836.68 2572.98,-2896.68 3050.98,-2896.68 3050.98,-2836.68 2572.98,-2836.68"/>
<text text-anchor="start" x="2583.98" y="-2856.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">archived_to &#160;&#160;&#160;</text>
<text text-anchor="start" x="2933.3" y="-2857.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="2571.98,-2835.68 2571.98,-3617.68 3051.98,-3617.68 3051.98,-2835.68 2571.98,-2835.68"/>
</a>
</g>
</g>
<!-- s3_object&#45;&gt;s3_bucket_role -->
<g id="edge21" class="edge">
<title>s3_object:e&#45;&gt;s3_bucket_role:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M3051.98,-3466.68C3147.24,-3466.68 3171.05,-3466.68 3266.31,-3466.68"/>
</g>
<!-- stored_file -->
<g id="stored_file" class="node">
<title>stored_file</title>
<g id="a_stored_file"><a xlink:title="stored_file&#10;v5.13: физический файл одной загрузки (S3 — только ссылка). Что внутри — document (1:N). Первичка не редактируется. Удаление физическое запрещено после INITIATED — только SUPERSEDED (ANL&#45;020)">
<ellipse fill="none" stroke="black" stroke-width="0" cx="1345.56" cy="-2962.68" rx="352.28" ry="639.45"/>
<polygon fill="#1d71b8" stroke="transparent" points="1098.56,-3352.68 1098.56,-3412.68 1592.56,-3412.68 1592.56,-3352.68 1098.56,-3352.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-3352.68 1098.56,-3412.68 1592.56,-3412.68 1592.56,-3352.68 1098.56,-3352.68"/>
<text text-anchor="start" x="1209.52" y="-3373.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;stored_file &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-3292.68 1098.56,-3352.68 1592.56,-3352.68 1592.56,-3292.68 1098.56,-3292.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-3292.68 1098.56,-3352.68 1592.56,-3352.68 1592.56,-3292.68 1098.56,-3292.68"/>
<text text-anchor="start" x="1109.56" y="-3313.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text>
<text text-anchor="start" x="1134.45" y="-3313.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="1521.09" y="-3313.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-3232.68 1098.56,-3292.68 1592.56,-3292.68 1592.56,-3232.68 1098.56,-3232.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-3232.68 1098.56,-3292.68 1592.56,-3292.68 1592.56,-3232.68 1098.56,-3232.68"/>
<text text-anchor="start" x="1109.56" y="-3252.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">legal_entity_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="1482" y="-3253.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<text text-anchor="start" x="1542.47" y="-3253.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1551.36" y="-3253.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-3172.68 1098.56,-3232.68 1592.56,-3232.68 1592.56,-3172.68 1098.56,-3172.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-3172.68 1098.56,-3232.68 1592.56,-3232.68 1592.56,-3172.68 1098.56,-3172.68"/>
<text text-anchor="start" x="1109.56" y="-3192.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">file_type &#160;&#160;&#160;</text>
<text text-anchor="start" x="1423.33" y="-3193.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">file_type</text>
<text text-anchor="start" x="1542.47" y="-3193.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1551.36" y="-3193.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-3112.68 1098.56,-3172.68 1592.56,-3172.68 1592.56,-3112.68 1098.56,-3112.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-3112.68 1098.56,-3172.68 1592.56,-3172.68 1592.56,-3112.68 1098.56,-3112.68"/>
<text text-anchor="start" x="1109.56" y="-3132.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">original_name &#160;&#160;&#160;</text>
<text text-anchor="start" x="1474.89" y="-3133.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-3052.68 1098.56,-3112.68 1592.56,-3112.68 1592.56,-3052.68 1098.56,-3052.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-3052.68 1098.56,-3112.68 1592.56,-3112.68 1592.56,-3052.68 1098.56,-3052.68"/>
<text text-anchor="start" x="1109.56" y="-3072.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">s3_object_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="1482" y="-3073.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<text text-anchor="start" x="1542.47" y="-3073.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1551.36" y="-3073.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-2992.68 1098.56,-3052.68 1592.56,-3052.68 1592.56,-2992.68 1098.56,-2992.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-2992.68 1098.56,-3052.68 1592.56,-3052.68 1592.56,-2992.68 1098.56,-2992.68"/>
<text text-anchor="start" x="1109.56" y="-3012.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">content_hash &#160;&#160;&#160;</text>
<text text-anchor="start" x="1474.89" y="-3013.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-2932.68 1098.56,-2992.68 1592.56,-2992.68 1592.56,-2932.68 1098.56,-2932.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-2932.68 1098.56,-2992.68 1592.56,-2992.68 1592.56,-2932.68 1098.56,-2932.68"/>
<text text-anchor="start" x="1109.56" y="-2952.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">size_bytes &#160;&#160;&#160;</text>
<text text-anchor="start" x="1505.1" y="-2953.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">bigint</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-2872.68 1098.56,-2932.68 1592.56,-2932.68 1592.56,-2872.68 1098.56,-2872.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-2872.68 1098.56,-2932.68 1592.56,-2932.68 1592.56,-2872.68 1098.56,-2872.68"/>
<text text-anchor="start" x="1109.56" y="-2892.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">status &#160;&#160;&#160;</text>
<text text-anchor="start" x="1398.44" y="-2893.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">file_status</text>
<text text-anchor="start" x="1542.47" y="-2893.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1551.36" y="-2893.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-2812.68 1098.56,-2872.68 1592.56,-2872.68 1592.56,-2812.68 1098.56,-2812.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-2812.68 1098.56,-2872.68 1592.56,-2872.68 1592.56,-2812.68 1098.56,-2812.68"/>
<text text-anchor="start" x="1109.56" y="-2832.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">version_no &#160;&#160;&#160;</text>
<text text-anchor="start" x="1508.69" y="-2833.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<text text-anchor="start" x="1542.47" y="-2833.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1551.36" y="-2833.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-2752.68 1098.56,-2812.68 1592.56,-2812.68 1592.56,-2752.68 1098.56,-2752.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-2752.68 1098.56,-2812.68 1592.56,-2812.68 1592.56,-2752.68 1098.56,-2752.68"/>
<text text-anchor="start" x="1109.56" y="-2772.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">superseded_by_file_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="1521.09" y="-2773.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-2692.68 1098.56,-2752.68 1592.56,-2752.68 1592.56,-2692.68 1098.56,-2692.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-2692.68 1098.56,-2752.68 1592.56,-2752.68 1592.56,-2692.68 1098.56,-2692.68"/>
<text text-anchor="start" x="1109.29" y="-2712.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">current_recognition_job_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="1521.33" y="-2713.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-2632.68 1098.56,-2692.68 1592.56,-2692.68 1592.56,-2632.68 1098.56,-2632.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-2632.68 1098.56,-2692.68 1592.56,-2692.68 1592.56,-2632.68 1098.56,-2632.68"/>
<text text-anchor="start" x="1109.56" y="-2652.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">uploaded_by &#160;&#160;&#160;</text>
<text text-anchor="start" x="1521.09" y="-2653.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-2572.68 1098.56,-2632.68 1592.56,-2632.68 1592.56,-2572.68 1098.56,-2572.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-2572.68 1098.56,-2632.68 1592.56,-2632.68 1592.56,-2572.68 1098.56,-2572.68"/>
<text text-anchor="start" x="1109.56" y="-2592.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">uploaded_at &#160;&#160;&#160;</text>
<text text-anchor="start" x="1409.11" y="-2593.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-2512.68 1098.56,-2572.68 1592.56,-2572.68 1592.56,-2512.68 1098.56,-2512.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-2512.68 1098.56,-2572.68 1592.56,-2572.68 1592.56,-2512.68 1098.56,-2512.68"/>
<text text-anchor="start" x="1109.56" y="-2532.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">updated_at &#160;&#160;&#160;</text>
<text text-anchor="start" x="1409.11" y="-2533.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="1097.56,-2511.68 1097.56,-3413.68 1593.56,-3413.68 1593.56,-2511.68 1097.56,-2511.68"/>
</a>
</g>
</g>
<!-- stored_file&#45;&gt;file_type -->
<g id="edge22" class="edge">
<title>stored_file:e&#45;&gt;file_type:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M1593.56,-3202.68C1705.7,-3202.68 1718.84,-1397.64 1733.7,-1372.68 1791.25,-1276.05 1838.95,-1243.68 1951.43,-1243.68"/>
</g>
<!-- stored_file&#45;&gt;file_status -->
<g id="edge23" class="edge">
<title>stored_file:e&#45;&gt;file_status:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M1593.56,-2902.68C1727.36,-2902.68 1684.58,-2442.83 1697.7,-2309.68 1706.36,-2221.86 1690.04,-798.37 1733.7,-721.68 1783.93,-633.46 1825.91,-600.68 1927.43,-600.68"/>
</g>
<!-- stored_file&#45;&gt;app_user -->
<!-- stored_file&#45;&gt;app_user -->
<g id="edge10" class="edge">
<title>stored_file:e&#45;&gt;app_user:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M1593.56,-2662.68C1757.14,-2662.68 1672.95,-2471.37 1697.7,-2309.68 1715.57,-2192.97 1674.76,-286.99 1733.7,-184.68 1786.58,-92.89 1832.14,-59.76 1934.36,-57.78"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1934.46,-61.28 1944.43,-57.68 1934.39,-54.28 1934.46,-61.28"/>
<text text-anchor="middle" x="1935.53" y="-28.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="1587.34" y="-2672.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
<!-- stored_file&#45;&gt;legal_entity -->
<!-- stored_file&#45;&gt;legal_entity -->
<g id="edge2" class="edge">
<title>stored_file:e&#45;&gt;legal_entity:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M1593.56,-3262.68C1718.18,-3262.68 1650.09,-3713.27 1733.7,-3805.68 1793.58,-3871.86 1833.68,-3877.35 1919.32,-3877.66"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1919.42,-3881.16 1929.43,-3877.68 1919.43,-3874.16 1919.42,-3881.16"/>
<text text-anchor="middle" x="1920.53" y="-3887.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="1587.34" y="-3272.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
<!-- stored_file&#45;&gt;s3_object -->
<!-- stored_file&#45;&gt;s3_object -->
<g id="edge4" class="edge">
<title>stored_file:e&#45;&gt;s3_object:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M1593.56,-3082.68C1766.89,-3082.68 1684.1,-2482.48 1697.7,-2309.68 1701.09,-2266.61 1702.8,-784.88 1733.7,-754.68 1761.57,-727.45 2407.34,-727.39 2435.15,-754.68 2473.01,-791.83 2467.57,-2610.77 2471.15,-2663.68 2483.95,-2852.84 2382.66,-3502.62 2561.8,-3526.03"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="2561.77,-3529.54 2571.98,-3526.68 2562.22,-3522.55 2561.77,-3529.54"/>
<text text-anchor="middle" x="2580.87" y="-3536.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="1587.34" y="-3092.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
<!-- stored_file&#45;&gt;stored_file -->
<!-- stored_file&#45;&gt;stored_file -->
<g id="edge6" class="edge">
<title>stored_file:e&#45;&gt;stored_file:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M1592.56,-2782.68C1777.06,-3001.76 1777.06,-3619.91 1345.56,-3619.91 919.33,-3619.91 914.13,-3543.65 1091.89,-3330.64"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1094.82,-3332.59 1098.56,-3322.68 1089.45,-3328.1 1094.82,-3332.59"/>
<text text-anchor="middle" x="1089.67" y="-3332.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="1586.34" y="-2792.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
<!-- recognition_job -->
<g id="recognition_job" class="node">
<title>recognition_job</title>
<g id="a_recognition_job"><a xlink:title="recognition_job&#10;РЕШЕНИЕ v5.4: единственная точка обмена с NATS. Запись = outbox: создаётся в queued в одной транзакции с stored_file, фоновый публикатор переводит в published (при сбое публикации — повтор по queued старше N сек); результат приходит по NATS, дедуп по result_msg_id UNIQUE; redelivery после max_deliver → status=dlq, replay = сброс в queued с attempt+1. Ядро маппит JSON из S3 в document → osv_entry / financial_statement_*">
<ellipse fill="none" stroke="black" stroke-width="0" cx="2084.43" cy="-2572.68" rx="350.95" ry="1190.54"/>
<polygon fill="#1d71b8" stroke="transparent" points="1838.43,-3352.68 1838.43,-3412.68 2330.43,-3412.68 2330.43,-3352.68 1838.43,-3352.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-3352.68 1838.43,-3412.68 2330.43,-3412.68 2330.43,-3352.68 1838.43,-3352.68"/>
<text text-anchor="start" x="1913.7" y="-3373.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;recognition_job &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-3292.68 1838.43,-3352.68 2330.43,-3352.68 2330.43,-3292.68 1838.43,-3292.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-3292.68 1838.43,-3352.68 2330.43,-3352.68 2330.43,-3292.68 1838.43,-3292.68"/>
<text text-anchor="start" x="1849.43" y="-3313.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text>
<text text-anchor="start" x="1874.32" y="-3313.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="2258.96" y="-3313.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-3232.68 1838.43,-3292.68 2330.43,-3292.68 2330.43,-3232.68 1838.43,-3232.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-3232.68 1838.43,-3292.68 2330.43,-3292.68 2330.43,-3232.68 1838.43,-3232.68"/>
<text text-anchor="start" x="1849.43" y="-3252.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">file_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="2219.87" y="-3253.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<text text-anchor="start" x="2280.33" y="-3253.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="2289.23" y="-3253.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-3172.68 1838.43,-3232.68 2330.43,-3232.68 2330.43,-3172.68 1838.43,-3172.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-3172.68 1838.43,-3232.68 2330.43,-3232.68 2330.43,-3172.68 1838.43,-3172.68"/>
<text text-anchor="start" x="1849.43" y="-3192.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">pipeline &#160;&#160;&#160;</text>
<text text-anchor="start" x="1995.82" y="-3193.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">recognition_pipeline</text>
<text text-anchor="start" x="2280.33" y="-3193.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="2289.23" y="-3193.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-3112.68 1838.43,-3172.68 2330.43,-3172.68 2330.43,-3112.68 1838.43,-3112.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-3112.68 1838.43,-3172.68 2330.43,-3172.68 2330.43,-3112.68 1838.43,-3112.68"/>
<text text-anchor="start" x="1849.43" y="-3132.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">request_subject &#160;&#160;&#160;</text>
<text text-anchor="start" x="2173.66" y="-3133.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<text text-anchor="start" x="2280.33" y="-3133.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="2289.23" y="-3133.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-3052.68 1838.43,-3112.68 2330.43,-3112.68 2330.43,-3052.68 1838.43,-3052.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-3052.68 1838.43,-3112.68 2330.43,-3112.68 2330.43,-3052.68 1838.43,-3052.68"/>
<text text-anchor="start" x="1849.43" y="-3072.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">request_msg_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="2212.75" y="-3073.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2992.68 1838.43,-3052.68 2330.43,-3052.68 2330.43,-2992.68 1838.43,-2992.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2992.68 1838.43,-3052.68 2330.43,-3052.68 2330.43,-2992.68 1838.43,-2992.68"/>
<text text-anchor="start" x="1849.43" y="-3012.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">result_msg_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="2212.75" y="-3013.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2932.68 1838.43,-2992.68 2330.43,-2992.68 2330.43,-2932.68 1838.43,-2932.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2932.68 1838.43,-2992.68 2330.43,-2992.68 2330.43,-2932.68 1838.43,-2932.68"/>
<text text-anchor="start" x="1849.43" y="-2952.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">schema_version &#160;&#160;&#160;</text>
<text text-anchor="start" x="2173.66" y="-2953.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<text text-anchor="start" x="2280.33" y="-2953.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="2289.23" y="-2953.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2872.68 1838.43,-2932.68 2330.43,-2932.68 2330.43,-2872.68 1838.43,-2872.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2872.68 1838.43,-2932.68 2330.43,-2932.68 2330.43,-2872.68 1838.43,-2872.68"/>
<text text-anchor="start" x="1849.43" y="-2892.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">service_name &#160;&#160;&#160;</text>
<text text-anchor="start" x="2212.75" y="-2893.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2812.68 1838.43,-2872.68 2330.43,-2872.68 2330.43,-2812.68 1838.43,-2812.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2812.68 1838.43,-2872.68 2330.43,-2872.68 2330.43,-2812.68 1838.43,-2812.68"/>
<text text-anchor="start" x="1849.43" y="-2832.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">service_version &#160;&#160;&#160;</text>
<text text-anchor="start" x="2212.75" y="-2833.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2752.68 1838.43,-2812.68 2330.43,-2812.68 2330.43,-2752.68 1838.43,-2752.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2752.68 1838.43,-2812.68 2330.43,-2812.68 2330.43,-2752.68 1838.43,-2752.68"/>
<text text-anchor="start" x="1849.43" y="-2772.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">status &#160;&#160;&#160;</text>
<text text-anchor="start" x="2020.7" y="-2773.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">recognition_status</text>
<text text-anchor="start" x="2280.33" y="-2773.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="2289.23" y="-2773.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2692.68 1838.43,-2752.68 2330.43,-2752.68 2330.43,-2692.68 1838.43,-2692.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2692.68 1838.43,-2752.68 2330.43,-2752.68 2330.43,-2692.68 1838.43,-2692.68"/>
<text text-anchor="start" x="1849.43" y="-2712.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">attempt &#160;&#160;&#160;</text>
<text text-anchor="start" x="2171.91" y="-2713.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">smallint</text>
<text text-anchor="start" x="2280.33" y="-2713.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="2289.23" y="-2713.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2632.68 1838.43,-2692.68 2330.43,-2692.68 2330.43,-2632.68 1838.43,-2632.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2632.68 1838.43,-2692.68 2330.43,-2692.68 2330.43,-2632.68 1838.43,-2632.68"/>
<text text-anchor="start" x="1849.43" y="-2652.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">max_attempts &#160;&#160;&#160;</text>
<text text-anchor="start" x="2171.91" y="-2653.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">smallint</text>
<text text-anchor="start" x="2280.33" y="-2653.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="2289.23" y="-2653.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2572.68 1838.43,-2632.68 2330.43,-2632.68 2330.43,-2572.68 1838.43,-2572.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2572.68 1838.43,-2632.68 2330.43,-2632.68 2330.43,-2572.68 1838.43,-2572.68"/>
<text text-anchor="start" x="1849.43" y="-2592.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">requested_at &#160;&#160;&#160;</text>
<text text-anchor="start" x="2146.97" y="-2593.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2512.68 1838.43,-2572.68 2330.43,-2572.68 2330.43,-2512.68 1838.43,-2512.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2512.68 1838.43,-2572.68 2330.43,-2572.68 2330.43,-2512.68 1838.43,-2512.68"/>
<text text-anchor="start" x="1849.43" y="-2532.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">published_at &#160;&#160;&#160;</text>
<text text-anchor="start" x="2146.97" y="-2533.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2452.68 1838.43,-2512.68 2330.43,-2512.68 2330.43,-2452.68 1838.43,-2452.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2452.68 1838.43,-2512.68 2330.43,-2512.68 2330.43,-2452.68 1838.43,-2452.68"/>
<text text-anchor="start" x="1849.43" y="-2472.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">started_at &#160;&#160;&#160;</text>
<text text-anchor="start" x="2146.97" y="-2473.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2392.68 1838.43,-2452.68 2330.43,-2452.68 2330.43,-2392.68 1838.43,-2392.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2392.68 1838.43,-2452.68 2330.43,-2452.68 2330.43,-2392.68 1838.43,-2392.68"/>
<text text-anchor="start" x="1849.43" y="-2412.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">finished_at &#160;&#160;&#160;</text>
<text text-anchor="start" x="2146.97" y="-2413.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2332.68 1838.43,-2392.68 2330.43,-2392.68 2330.43,-2332.68 1838.43,-2332.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2332.68 1838.43,-2392.68 2330.43,-2392.68 2330.43,-2332.68 1838.43,-2332.68"/>
<text text-anchor="start" x="1849.43" y="-2352.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">reply_deadline &#160;&#160;&#160;</text>
<text text-anchor="start" x="2146.97" y="-2353.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2272.68 1838.43,-2332.68 2330.43,-2332.68 2330.43,-2272.68 1838.43,-2272.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2272.68 1838.43,-2332.68 2330.43,-2332.68 2330.43,-2272.68 1838.43,-2272.68"/>
<text text-anchor="start" x="1849.43" y="-2292.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">external_task_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="2212.75" y="-2293.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2212.68 1838.43,-2272.68 2330.43,-2272.68 2330.43,-2212.68 1838.43,-2212.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2212.68 1838.43,-2272.68 2330.43,-2272.68 2330.43,-2212.68 1838.43,-2212.68"/>
<text text-anchor="start" x="1849.43" y="-2232.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">error_code &#160;&#160;&#160;</text>
<text text-anchor="start" x="2212.75" y="-2233.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2152.68 1838.43,-2212.68 2330.43,-2212.68 2330.43,-2152.68 1838.43,-2152.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2152.68 1838.43,-2212.68 2330.43,-2212.68 2330.43,-2152.68 1838.43,-2152.68"/>
<text text-anchor="start" x="1849.43" y="-2172.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">error_message &#160;&#160;&#160;</text>
<text text-anchor="start" x="2267.85" y="-2173.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">text</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2092.68 1838.43,-2152.68 2330.43,-2152.68 2330.43,-2092.68 1838.43,-2092.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2092.68 1838.43,-2152.68 2330.43,-2152.68 2330.43,-2092.68 1838.43,-2092.68"/>
<text text-anchor="start" x="1849.43" y="-2112.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">result_s3_object_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="2258.96" y="-2113.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2032.68 1838.43,-2092.68 2330.43,-2092.68 2330.43,-2032.68 1838.43,-2032.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2032.68 1838.43,-2092.68 2330.43,-2092.68 2330.43,-2032.68 1838.43,-2032.68"/>
<text text-anchor="start" x="1849.17" y="-2052.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">result_schema_version &#160;&#160;&#160;</text>
<text text-anchor="start" x="2213.09" y="-2053.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-1972.68 1838.43,-2032.68 2330.43,-2032.68 2330.43,-1972.68 1838.43,-1972.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-1972.68 1838.43,-2032.68 2330.43,-2032.68 2330.43,-1972.68 1838.43,-1972.68"/>
<text text-anchor="start" x="1849.43" y="-1992.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">group_schema &#160;&#160;&#160;</text>
<text text-anchor="start" x="2242.96" y="-1993.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">jsonb</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-1912.68 1838.43,-1972.68 2330.43,-1972.68 2330.43,-1912.68 1838.43,-1912.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-1912.68 1838.43,-1972.68 2330.43,-1972.68 2330.43,-1912.68 1838.43,-1912.68"/>
<text text-anchor="start" x="1849.43" y="-1932.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">metrics &#160;&#160;&#160;</text>
<text text-anchor="start" x="2242.96" y="-1933.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">jsonb</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-1852.68 1838.43,-1912.68 2330.43,-1912.68 2330.43,-1852.68 1838.43,-1852.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-1852.68 1838.43,-1912.68 2330.43,-1912.68 2330.43,-1852.68 1838.43,-1852.68"/>
<text text-anchor="start" x="1849.43" y="-1872.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">fields_total &#160;&#160;&#160;</text>
<text text-anchor="start" x="2285.64" y="-1873.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-1792.68 1838.43,-1852.68 2330.43,-1852.68 2330.43,-1792.68 1838.43,-1792.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-1792.68 1838.43,-1852.68 2330.43,-1852.68 2330.43,-1792.68 1838.43,-1792.68"/>
<text text-anchor="start" x="1849.43" y="-1812.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">fields_low_confidence &#160;&#160;&#160;</text>
<text text-anchor="start" x="2285.64" y="-1813.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-1732.68 1838.43,-1792.68 2330.43,-1792.68 2330.43,-1732.68 1838.43,-1732.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-1732.68 1838.43,-1792.68 2330.43,-1792.68 2330.43,-1732.68 1838.43,-1732.68"/>
<text text-anchor="start" x="1849.43" y="-1752.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">fields_unrecognized &#160;&#160;&#160;</text>
<text text-anchor="start" x="2285.64" y="-1753.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="1837.43,-1731.68 1837.43,-3413.68 2331.43,-3413.68 2331.43,-1731.68 1837.43,-1731.68"/>
</a>
</g>
</g>
<!-- stored_file&#45;&gt;recognition_job -->
<!-- stored_file&#45;&gt;recognition_job -->
<g id="edge8" class="edge">
<title>stored_file:e&#45;&gt;recognition_job:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M1593.56,-2722.68C1877.9,-2722.68 1557.58,-3308.12 1827.16,-3322.42"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1827.34,-3325.92 1837.43,-3322.68 1827.52,-3318.92 1827.34,-3325.92"/>
<text text-anchor="middle" x="1828.53" y="-3332.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="1587.34" y="-2732.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
<!-- document -->
<g id="document" class="node">
<title>document</title>
<g id="a_document"><a xlink:title="document&#10;Логический документ внутри файла. Создаётся ядром при маппинге результата recognition_job. Разобранные данные: OSV → osv_entry; BALANCE/INCOME → financial_statement_meta. Счётчики «исправлено полей» — COUNT(is_modified) по данным, не хранятся">
<ellipse fill="none" stroke="black" stroke-width="0" cx="478.71" cy="-2872.68" rx="478.92" ry="766.51"/>
<polygon fill="#1d71b8" stroke="transparent" points="142.71,-3352.68 142.71,-3412.68 815.71,-3412.68 815.71,-3352.68 142.71,-3352.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-3352.68 142.71,-3412.68 815.71,-3412.68 815.71,-3352.68 142.71,-3352.68"/>
<text text-anchor="start" x="346.72" y="-3373.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;document &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-3292.68 142.71,-3352.68 815.71,-3352.68 815.71,-3292.68 142.71,-3292.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-3292.68 142.71,-3352.68 815.71,-3352.68 815.71,-3292.68 142.71,-3292.68"/>
<text text-anchor="start" x="153.71" y="-3313.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text>
<text text-anchor="start" x="178.6" y="-3313.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="744.24" y="-3313.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-3232.68 142.71,-3292.68 815.71,-3292.68 815.71,-3232.68 142.71,-3232.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-3232.68 142.71,-3292.68 815.71,-3292.68 815.71,-3232.68 142.71,-3232.68"/>
<text text-anchor="start" x="153.71" y="-3252.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">stored_file_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="705.15" y="-3253.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<text text-anchor="start" x="765.62" y="-3253.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="774.51" y="-3253.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-3172.68 142.71,-3232.68 815.71,-3232.68 815.71,-3172.68 142.71,-3172.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-3172.68 142.71,-3232.68 815.71,-3232.68 815.71,-3172.68 142.71,-3172.68"/>
<text text-anchor="start" x="153.71" y="-3192.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">legal_entity_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="705.15" y="-3193.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<text text-anchor="start" x="765.62" y="-3193.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="774.51" y="-3193.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-3112.68 142.71,-3172.68 815.71,-3172.68 815.71,-3112.68 142.71,-3112.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-3112.68 142.71,-3172.68 815.71,-3172.68 815.71,-3112.68 142.71,-3112.68"/>
<text text-anchor="start" x="153.71" y="-3132.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">document_type &#160;&#160;&#160;</text>
<text text-anchor="start" x="546.87" y="-3133.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">document_type</text>
<text text-anchor="start" x="765.62" y="-3133.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="774.51" y="-3133.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-3052.68 142.71,-3112.68 815.71,-3112.68 815.71,-3052.68 142.71,-3052.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-3052.68 142.71,-3112.68 815.71,-3112.68 815.71,-3052.68 142.71,-3052.68"/>
<text text-anchor="start" x="153.71" y="-3072.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">osv_account_code &#160;&#160;&#160;</text>
<text text-anchor="start" x="698.04" y="-3073.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-2992.68 142.71,-3052.68 815.71,-3052.68 815.71,-2992.68 142.71,-2992.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2992.68 142.71,-3052.68 815.71,-3052.68 815.71,-2992.68 142.71,-2992.68"/>
<text text-anchor="start" x="153.71" y="-3012.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">period_year &#160;&#160;&#160;</text>
<text text-anchor="start" x="696.29" y="-3013.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">smallint</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-2932.68 142.71,-2992.68 815.71,-2992.68 815.71,-2932.68 142.71,-2932.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2932.68 142.71,-2992.68 815.71,-2992.68 815.71,-2932.68 142.71,-2932.68"/>
<text text-anchor="start" x="153.71" y="-2952.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">period_quarter &#160;&#160;&#160;</text>
<text text-anchor="start" x="596.66" y="-2953.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">period_quarter</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-2872.68 142.71,-2932.68 815.71,-2932.68 815.71,-2872.68 142.71,-2872.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2872.68 142.71,-2932.68 815.71,-2932.68 815.71,-2872.68 142.71,-2872.68"/>
<text text-anchor="start" x="153.71" y="-2892.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">is_cumulative &#160;&#160;&#160;</text>
<text text-anchor="start" x="690.88" y="-2893.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">boolean</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-2812.68 142.71,-2872.68 815.71,-2872.68 815.71,-2812.68 142.71,-2812.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2812.68 142.71,-2872.68 815.71,-2872.68 815.71,-2812.68 142.71,-2812.68"/>
<text text-anchor="start" x="153.71" y="-2832.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">reporting_date &#160;&#160;&#160;</text>
<text text-anchor="start" x="742.45" y="-2833.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">date</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-2752.68 142.71,-2812.68 815.71,-2812.68 815.71,-2752.68 142.71,-2752.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2752.68 142.71,-2812.68 815.71,-2812.68 815.71,-2752.68 142.71,-2752.68"/>
<text text-anchor="start" x="153.71" y="-2772.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">locator &#160;&#160;&#160;</text>
<text text-anchor="start" x="698.04" y="-2773.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-2692.68 142.71,-2752.68 815.71,-2752.68 815.71,-2692.68 142.71,-2692.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2692.68 142.71,-2752.68 815.71,-2752.68 815.71,-2692.68 142.71,-2692.68"/>
<text text-anchor="start" x="153.71" y="-2712.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">status &#160;&#160;&#160;</text>
<text text-anchor="start" x="521.98" y="-2713.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">document_status</text>
<text text-anchor="start" x="765.62" y="-2713.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="774.51" y="-2713.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-2632.68 142.71,-2692.68 815.71,-2692.68 815.71,-2632.68 142.71,-2632.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2632.68 142.71,-2692.68 815.71,-2692.68 815.71,-2632.68 142.71,-2632.68"/>
<text text-anchor="start" x="153.71" y="-2652.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">period_check &#160;&#160;&#160;</text>
<text text-anchor="start" x="466.84" y="-2653.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">document_check_result</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-2572.68 142.71,-2632.68 815.71,-2632.68 815.71,-2572.68 142.71,-2572.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2572.68 142.71,-2632.68 815.71,-2632.68 815.71,-2572.68 142.71,-2572.68"/>
<text text-anchor="start" x="153.33" y="-2592.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">counterparty_check &#160;&#160;&#160;</text>
<text text-anchor="start" x="467.28" y="-2593.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">document_check_result</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-2512.68 142.71,-2572.68 815.71,-2572.68 815.71,-2512.68 142.71,-2512.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2512.68 142.71,-2572.68 815.71,-2572.68 815.71,-2512.68 142.71,-2512.68"/>
<text text-anchor="start" x="153.71" y="-2532.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">confirmed_by &#160;&#160;&#160;</text>
<text text-anchor="start" x="744.24" y="-2533.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-2452.68 142.71,-2512.68 815.71,-2512.68 815.71,-2452.68 142.71,-2452.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2452.68 142.71,-2512.68 815.71,-2512.68 815.71,-2452.68 142.71,-2452.68"/>
<text text-anchor="start" x="153.71" y="-2472.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">confirmed_at &#160;&#160;&#160;</text>
<text text-anchor="start" x="632.26" y="-2473.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-2392.68 142.71,-2452.68 815.71,-2452.68 815.71,-2392.68 142.71,-2392.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2392.68 142.71,-2452.68 815.71,-2452.68 815.71,-2392.68 142.71,-2392.68"/>
<text text-anchor="start" x="153.71" y="-2412.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">created_at &#160;&#160;&#160;</text>
<text text-anchor="start" x="632.26" y="-2413.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-2332.68 142.71,-2392.68 815.71,-2392.68 815.71,-2332.68 142.71,-2332.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2332.68 142.71,-2392.68 815.71,-2392.68 815.71,-2332.68 142.71,-2332.68"/>
<text text-anchor="start" x="153.71" y="-2352.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">updated_at &#160;&#160;&#160;</text>
<text text-anchor="start" x="632.26" y="-2353.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="141.21,-2331.68 141.21,-3413.68 816.21,-3413.68 816.21,-2331.68 141.21,-2331.68"/>
</a>
</g>
</g>
<!-- document&#45;&gt;document_type -->
<g id="edge24" class="edge">
<title>document:e&#45;&gt;document_type:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M816.71,-3142.68C1207.35,-3142.68 780.61,-2609.27 993.42,-2281.68 1043.78,-2204.17 1070.13,-2160.68 1162.56,-2160.68"/>
</g>
<!-- document&#45;&gt;period_quarter -->
<g id="edge25" class="edge">
<title>document:e&#45;&gt;period_quarter:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M816.71,-2962.68C1090.21,-2962.68 841.66,-1972.21 993.42,-1744.68 1043.45,-1669.69 1077.41,-1640.68 1167.56,-1640.68"/>
</g>
<!-- document&#45;&gt;document_status -->
<g id="edge26" class="edge">
<title>document:e&#45;&gt;document_status:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M816.71,-2722.68C1136.02,-2722.68 825.64,-1568.36 993.42,-1296.68 1037.23,-1225.74 1066.18,-1192.68 1149.56,-1192.68"/>
</g>
<!-- document&#45;&gt;document_check_result -->
<g id="edge27" class="edge">
<title>document:e&#45;&gt;document_check_result:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M816.71,-2662.68C1244.78,-2662.68 674.49,-757.68 1102.56,-757.68"/>
</g>
<!-- document&#45;&gt;document_check_result -->
<g id="edge28" class="edge">
<title>document:e&#45;&gt;document_check_result:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M816.71,-2602.68C1231.6,-2602.68 687.67,-757.68 1102.56,-757.68"/>
</g>
<!-- document&#45;&gt;app_user -->
<!-- document&#45;&gt;app_user -->
<g id="edge16" class="edge">
<title>document:e&#45;&gt;app_user:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M816.71,-2542.68C1046.11,-2542.68 860.73,-672.81 993.42,-485.68 1259.56,-110.36 1477.71,-58.43 1934.28,-57.69"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1934.43,-61.19 1944.43,-57.68 1934.42,-54.19 1934.43,-61.19"/>
<text text-anchor="middle" x="1953.32" y="-28.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="810.49" y="-2552.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
<!-- document&#45;&gt;legal_entity -->
<!-- document&#45;&gt;legal_entity -->
<g id="edge14" class="edge">
<title>document:e&#45;&gt;legal_entity:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M816.71,-3202.68C1021.69,-3202.68 835.64,-3497.83 993.42,-3628.68 1239.62,-3832.86 1403.99,-3650.05 1697.7,-3776.68 1715.59,-3784.39 1716.5,-3792.54 1733.7,-3801.68 1813.04,-3843.86 1834.54,-3875.28 1919.33,-3877.55"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1919.38,-3881.05 1929.43,-3877.68 1919.47,-3874.05 1919.38,-3881.05"/>
<text text-anchor="middle" x="1938.32" y="-3887.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="810.49" y="-3212.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
<!-- document&#45;&gt;stored_file -->
<!-- document&#45;&gt;stored_file -->
<g id="edge12" class="edge">
<title>document:e&#45;&gt;stored_file:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M816.71,-3262.68C940.86,-3262.68 968.45,-3319.44 1087.32,-3322.55"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1087.52,-3326.05 1097.56,-3322.68 1087.61,-3319.05 1087.52,-3326.05"/>
<text text-anchor="middle" x="1088.67" y="-3293.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="810.49" y="-3272.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
<!-- recognition_job&#45;&gt;recognition_pipeline -->
<g id="edge29" class="edge">
<title>recognition_job:e&#45;&gt;recognition_pipeline:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M2331.43,-3202.68C2578.9,-3202.68 2325.33,-2863.63 2471.15,-2663.68 2509.84,-2610.63 2530.32,-2584.68 2595.98,-2584.68"/>
</g>
<!-- recognition_job&#45;&gt;recognition_status -->
<g id="edge30" class="edge">
<title>recognition_job:e&#45;&gt;recognition_status:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M2331.43,-2782.68C2518.48,-2782.68 2376.2,-2546.84 2471.15,-2385.68 2517.63,-2306.8 2516.42,-2231.68 2607.98,-2231.68"/>
</g>
<!-- recognition_job&#45;&gt;s3_object -->
<!-- recognition_job&#45;&gt;s3_object -->
<g id="edge20" class="edge">
<title>recognition_job:e&#45;&gt;s3_object:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M2331.43,-2122.68C2644.42,-2122.68 2264.16,-3495.32 2561.58,-3526.15"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="2561.81,-3529.67 2571.98,-3526.68 2562.17,-3522.68 2561.81,-3529.67"/>
<text text-anchor="middle" x="2580.87" y="-3497.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="2325.2" y="-2132.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
<!-- recognition_job&#45;&gt;stored_file -->
<!-- recognition_job&#45;&gt;stored_file -->
<g id="edge18" class="edge">
<title>recognition_job:e&#45;&gt;stored_file:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M2331.43,-3262.68C2442.71,-3262.68 2409.19,-3684.84 2330.43,-3763.45 2306.96,-3786.87 1766.3,-3769.47 1733.7,-3763.45 1716.86,-3760.34 1714.05,-3754.8 1697.7,-3749.68 1435.98,-3667.7 1268.07,-3817.51 1098.56,-3601.91 1024.03,-3507.11 976.23,-3332.9 1087.43,-3323.11"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1087.72,-3326.6 1097.56,-3322.68 1087.42,-3319.61 1087.72,-3326.6"/>
<text text-anchor="middle" x="1106.46" y="-3293.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="2325.2" y="-3272.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
</g>
</svg>