arm-ka-docs/model/diagrams/part04_files_jobs.svg
Andrey Epifancev ecc789667f model: DBML v5.19 — строки форм со статусами, needs_review, document_issue, crm_id ГСК/ГСЗ (#116)
- financial_statement_line: снята уникальность (meta_id, line_code); row_index, source_ref (частичный
  уникальный индекс), line_status (enum statement_line_status), line_code_text, parent_row_index,
  needs_review, is_confirmed
- financial_statement_value: source_text, needs_review (хранится — пересмотр п. 4 v5.13), is_confirmed,
  confirmed_by/at; financial_statement_column: period_kind, label_confidence;
  financial_statement_meta: form_variant (enum statement_form_variant), needs_review_fields
- новая таблица document_issue + enum document_issue_kind, issue_severity, issue_source
- recognition_job.statements_version; document: file_ordinal, уникальность типа на файл — только не для
  BALANCE/INCOME (Р-10); related_group.crm_id (arm-core#112)
- changelog и правила заполнения миграции в шапке; entities-v5.19.md; диаграммы части 01, 04, 06
  (document_issue — в части 06); ссылки на текущую модель и DBML в Makefile — v5.19

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 00:53:06 +04:00

803 lines
96 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="4916pt"
viewBox="0.00 0.00 3715.82 4915.79" 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 4911.79)">
<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="-2202.68" rx="260.84" ry="257.27"/>
<polygon fill="#29235c" stroke="transparent" points="1163.56,-2322.68 1163.56,-2382.68 1528.56,-2382.68 1528.56,-2322.68 1163.56,-2322.68"/>
<polygon fill="none" stroke="#29235c" points="1163.56,-2322.68 1163.56,-2382.68 1528.56,-2382.68 1528.56,-2322.68 1163.56,-2322.68"/>
<text text-anchor="start" x="1174.44" y="-2343.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,-2262.68 1163.56,-2322.68 1528.56,-2322.68 1528.56,-2262.68 1163.56,-2262.68"/>
<polygon fill="none" stroke="#29235c" points="1163.56,-2262.68 1163.56,-2322.68 1528.56,-2322.68 1528.56,-2262.68 1163.56,-2262.68"/>
<text text-anchor="start" x="1235.81" y="-2283.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,-2202.68 1163.56,-2262.68 1528.56,-2262.68 1528.56,-2202.68 1163.56,-2202.68"/>
<polygon fill="none" stroke="#29235c" points="1163.56,-2202.68 1163.56,-2262.68 1528.56,-2262.68 1528.56,-2202.68 1163.56,-2202.68"/>
<text text-anchor="start" x="1246.5" y="-2223.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,-2142.68 1163.56,-2202.68 1528.56,-2202.68 1528.56,-2142.68 1163.56,-2142.68"/>
<polygon fill="none" stroke="#29235c" points="1163.56,-2142.68 1163.56,-2202.68 1528.56,-2202.68 1528.56,-2142.68 1163.56,-2142.68"/>
<text text-anchor="start" x="1276.7" y="-2163.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,-2082.68 1163.56,-2142.68 1528.56,-2142.68 1528.56,-2082.68 1163.56,-2082.68"/>
<polygon fill="none" stroke="#29235c" points="1163.56,-2082.68 1163.56,-2142.68 1528.56,-2142.68 1528.56,-2082.68 1163.56,-2082.68"/>
<text text-anchor="start" x="1206.49" y="-2103.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,-2022.68 1163.56,-2082.68 1528.56,-2082.68 1528.56,-2022.68 1163.56,-2022.68"/>
<polygon fill="none" stroke="#29235c" points="1163.56,-2022.68 1163.56,-2082.68 1528.56,-2082.68 1528.56,-2022.68 1163.56,-2022.68"/>
<text text-anchor="start" x="1254.5" y="-2043.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,-2021.68 1162.06,-2383.68 1529.06,-2383.68 1529.06,-2021.68 1162.06,-2021.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="-1256.68" rx="190.42" ry="299.63"/>
<polygon fill="#29235c" stroke="transparent" points="1952.43,-1406.68 1952.43,-1466.68 2217.43,-1466.68 2217.43,-1406.68 1952.43,-1406.68"/>
<polygon fill="none" stroke="#29235c" points="1952.43,-1406.68 1952.43,-1466.68 2217.43,-1466.68 2217.43,-1406.68 1952.43,-1406.68"/>
<text text-anchor="start" x="1963.11" y="-1427.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,-1346.68 1952.43,-1406.68 2217.43,-1406.68 2217.43,-1346.68 1952.43,-1346.68"/>
<polygon fill="none" stroke="#29235c" points="1952.43,-1346.68 1952.43,-1406.68 2217.43,-1406.68 2217.43,-1346.68 1952.43,-1346.68"/>
<text text-anchor="start" x="2019.12" y="-1367.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,-1286.68 1952.43,-1346.68 2217.43,-1346.68 2217.43,-1286.68 1952.43,-1286.68"/>
<polygon fill="none" stroke="#29235c" points="1952.43,-1286.68 1952.43,-1346.68 2217.43,-1346.68 2217.43,-1286.68 1952.43,-1286.68"/>
<text text-anchor="start" x="2008.45" y="-1307.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,-1226.68 1952.43,-1286.68 2217.43,-1286.68 2217.43,-1226.68 1952.43,-1226.68"/>
<polygon fill="none" stroke="#29235c" points="1952.43,-1226.68 1952.43,-1286.68 2217.43,-1286.68 2217.43,-1226.68 1952.43,-1226.68"/>
<text text-anchor="start" x="2008.45" y="-1247.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,-1166.68 1952.43,-1226.68 2217.43,-1226.68 2217.43,-1166.68 1952.43,-1166.68"/>
<polygon fill="none" stroke="#29235c" points="1952.43,-1166.68 1952.43,-1226.68 2217.43,-1226.68 2217.43,-1166.68 1952.43,-1166.68"/>
<text text-anchor="start" x="2017.36" y="-1187.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,-1106.68 1952.43,-1166.68 2217.43,-1166.68 2217.43,-1106.68 1952.43,-1106.68"/>
<polygon fill="none" stroke="#29235c" points="1952.43,-1106.68 1952.43,-1166.68 2217.43,-1166.68 2217.43,-1106.68 1952.43,-1106.68"/>
<text text-anchor="start" x="2014.69" y="-1127.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,-1046.68 1952.43,-1106.68 2217.43,-1106.68 2217.43,-1046.68 1952.43,-1046.68"/>
<polygon fill="none" stroke="#29235c" points="1952.43,-1046.68 1952.43,-1106.68 2217.43,-1106.68 2217.43,-1046.68 1952.43,-1046.68"/>
<text text-anchor="start" x="2018.24" y="-1067.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,-1045.68 1950.93,-1467.68 2217.93,-1467.68 2217.93,-1045.68 1950.93,-1045.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="-4777.68" rx="307.68" ry="130.22"/>
<polygon fill="#29235c" stroke="transparent" points="2596.98,-4807.68 2596.98,-4867.68 3027.98,-4867.68 3027.98,-4807.68 2596.98,-4807.68"/>
<polygon fill="none" stroke="#29235c" points="2596.98,-4807.68 2596.98,-4867.68 3027.98,-4867.68 3027.98,-4807.68 2596.98,-4807.68"/>
<text text-anchor="start" x="2607.97" y="-4828.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,-4747.68 2596.98,-4807.68 3027.98,-4807.68 3027.98,-4747.68 2596.98,-4747.68"/>
<polygon fill="none" stroke="#29235c" points="2596.98,-4747.68 2596.98,-4807.68 3027.98,-4807.68 3027.98,-4747.68 2596.98,-4747.68"/>
<text text-anchor="start" x="2728" y="-4768.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,-4687.68 2596.98,-4747.68 3027.98,-4747.68 3027.98,-4687.68 2596.98,-4687.68"/>
<polygon fill="none" stroke="#29235c" points="2596.98,-4687.68 2596.98,-4747.68 3027.98,-4747.68 3027.98,-4687.68 2596.98,-4687.68"/>
<text text-anchor="start" x="2733.35" y="-4708.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,-4686.68 2595.48,-4868.68 3028.48,-4868.68 3028.48,-4686.68 2595.48,-4686.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="-1712.68" rx="253.29" ry="214.92"/>
<polygon fill="#29235c" stroke="transparent" points="1168.56,-1802.68 1168.56,-1862.68 1522.56,-1862.68 1522.56,-1802.68 1168.56,-1802.68"/>
<polygon fill="none" stroke="#29235c" points="1168.56,-1802.68 1168.56,-1862.68 1522.56,-1862.68 1522.56,-1802.68 1168.56,-1802.68"/>
<text text-anchor="start" x="1179.29" y="-1823.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,-1742.68 1168.56,-1802.68 1522.56,-1802.68 1522.56,-1742.68 1168.56,-1742.68"/>
<polygon fill="none" stroke="#29235c" points="1168.56,-1742.68 1168.56,-1802.68 1522.56,-1802.68 1522.56,-1742.68 1168.56,-1742.68"/>
<text text-anchor="start" x="1288.65" y="-1763.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,-1682.68 1168.56,-1742.68 1522.56,-1742.68 1522.56,-1682.68 1168.56,-1682.68"/>
<polygon fill="none" stroke="#29235c" points="1168.56,-1682.68 1168.56,-1742.68 1522.56,-1742.68 1522.56,-1682.68 1168.56,-1682.68"/>
<text text-anchor="start" x="1288.65" y="-1703.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,-1622.68 1168.56,-1682.68 1522.56,-1682.68 1522.56,-1622.68 1168.56,-1622.68"/>
<polygon fill="none" stroke="#29235c" points="1168.56,-1622.68 1168.56,-1682.68 1522.56,-1682.68 1522.56,-1622.68 1168.56,-1622.68"/>
<text text-anchor="start" x="1288.65" y="-1643.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,-1562.68 1168.56,-1622.68 1522.56,-1622.68 1522.56,-1562.68 1168.56,-1562.68"/>
<polygon fill="none" stroke="#29235c" points="1168.56,-1562.68 1168.56,-1622.68 1522.56,-1622.68 1522.56,-1562.68 1168.56,-1562.68"/>
<text text-anchor="start" x="1288.65" y="-1583.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,-1561.68 1167.56,-1863.68 1523.56,-1863.68 1523.56,-1561.68 1167.56,-1561.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="-643.68" rx="224.31" ry="257.27"/>
<polygon fill="#29235c" stroke="transparent" points="1928.43,-763.68 1928.43,-823.68 2241.43,-823.68 2241.43,-763.68 1928.43,-763.68"/>
<polygon fill="none" stroke="#29235c" points="1928.43,-763.68 1928.43,-823.68 2241.43,-823.68 2241.43,-763.68 1928.43,-763.68"/>
<text text-anchor="start" x="1950.66" y="-784.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,-703.68 1928.43,-763.68 2241.43,-763.68 2241.43,-703.68 1928.43,-703.68"/>
<polygon fill="none" stroke="#29235c" points="1928.43,-703.68 1928.43,-763.68 2241.43,-763.68 2241.43,-703.68 1928.43,-703.68"/>
<text text-anchor="start" x="1961.35" y="-724.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,-643.68 1928.43,-703.68 2241.43,-703.68 2241.43,-643.68 1928.43,-643.68"/>
<polygon fill="none" stroke="#29235c" points="1928.43,-643.68 1928.43,-703.68 2241.43,-703.68 2241.43,-643.68 1928.43,-643.68"/>
<text text-anchor="start" x="1942.68" y="-664.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,-583.68 1928.43,-643.68 2241.43,-643.68 2241.43,-583.68 1928.43,-583.68"/>
<polygon fill="none" stroke="#29235c" points="1928.43,-583.68 1928.43,-643.68 2241.43,-643.68 2241.43,-583.68 1928.43,-583.68"/>
<text text-anchor="start" x="1948.91" y="-604.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,-523.68 1928.43,-583.68 2241.43,-583.68 2241.43,-523.68 1928.43,-523.68"/>
<polygon fill="none" stroke="#29235c" points="1928.43,-523.68 1928.43,-583.68 2241.43,-583.68 2241.43,-523.68 1928.43,-523.68"/>
<text text-anchor="start" x="1991.59" y="-544.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,-463.68 1928.43,-523.68 2241.43,-523.68 2241.43,-463.68 1928.43,-463.68"/>
<polygon fill="none" stroke="#29235c" points="1928.43,-463.68 1928.43,-523.68 2241.43,-523.68 2241.43,-463.68 1928.43,-463.68"/>
<text text-anchor="start" x="1939.13" y="-484.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,-462.68 1926.93,-824.68 2241.93,-824.68 2241.93,-462.68 1926.93,-462.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="-1264.68" rx="278.7" ry="214.92"/>
<polygon fill="#29235c" stroke="transparent" points="1150.56,-1354.68 1150.56,-1414.68 1540.56,-1414.68 1540.56,-1354.68 1150.56,-1354.68"/>
<polygon fill="none" stroke="#29235c" points="1150.56,-1354.68 1150.56,-1414.68 1540.56,-1414.68 1540.56,-1354.68 1150.56,-1354.68"/>
<text text-anchor="start" x="1161.49" y="-1375.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,-1294.68 1150.56,-1354.68 1540.56,-1354.68 1540.56,-1294.68 1150.56,-1294.68"/>
<polygon fill="none" stroke="#29235c" points="1150.56,-1294.68 1150.56,-1354.68 1540.56,-1354.68 1540.56,-1294.68 1150.56,-1294.68"/>
<text text-anchor="start" x="1203.33" y="-1315.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,-1234.68 1150.56,-1294.68 1540.56,-1294.68 1540.56,-1234.68 1150.56,-1234.68"/>
<polygon fill="none" stroke="#29235c" points="1150.56,-1234.68 1150.56,-1294.68 1540.56,-1294.68 1540.56,-1234.68 1150.56,-1234.68"/>
<text text-anchor="start" x="1189.99" y="-1255.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,-1174.68 1150.56,-1234.68 1540.56,-1234.68 1540.56,-1174.68 1150.56,-1174.68"/>
<polygon fill="none" stroke="#29235c" points="1150.56,-1174.68 1150.56,-1234.68 1540.56,-1234.68 1540.56,-1174.68 1150.56,-1174.68"/>
<text text-anchor="start" x="1213.12" y="-1195.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,-1114.68 1150.56,-1174.68 1540.56,-1174.68 1540.56,-1114.68 1150.56,-1114.68"/>
<polygon fill="none" stroke="#29235c" points="1150.56,-1114.68 1150.56,-1174.68 1540.56,-1174.68 1540.56,-1114.68 1150.56,-1114.68"/>
<text text-anchor="start" x="1252.22" y="-1135.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,-1113.68 1149.56,-1415.68 1541.56,-1415.68 1541.56,-1113.68 1149.56,-1113.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="-3407.68" rx="259.52" ry="214.92"/>
<polygon fill="#29235c" stroke="transparent" points="3267.31,-3497.68 3267.31,-3557.68 3630.31,-3557.68 3630.31,-3497.68 3267.31,-3497.68"/>
<polygon fill="none" stroke="#29235c" points="3267.31,-3497.68 3267.31,-3557.68 3630.31,-3557.68 3630.31,-3497.68 3267.31,-3497.68"/>
<text text-anchor="start" x="3278.08" y="-3518.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,-3437.68 3267.31,-3497.68 3630.31,-3497.68 3630.31,-3437.68 3267.31,-3437.68"/>
<polygon fill="none" stroke="#29235c" points="3267.31,-3437.68 3267.31,-3497.68 3630.31,-3497.68 3630.31,-3437.68 3267.31,-3437.68"/>
<text text-anchor="start" x="3357.22" y="-3458.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,-3377.68 3267.31,-3437.68 3630.31,-3437.68 3630.31,-3377.68 3267.31,-3377.68"/>
<polygon fill="none" stroke="#29235c" points="3267.31,-3377.68 3267.31,-3437.68 3630.31,-3437.68 3630.31,-3377.68 3267.31,-3377.68"/>
<text text-anchor="start" x="3366.13" y="-3398.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,-3317.68 3267.31,-3377.68 3630.31,-3377.68 3630.31,-3317.68 3267.31,-3317.68"/>
<polygon fill="none" stroke="#29235c" points="3267.31,-3317.68 3267.31,-3377.68 3630.31,-3377.68 3630.31,-3317.68 3267.31,-3317.68"/>
<text text-anchor="start" x="3360.78" y="-3338.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,-3257.68 3267.31,-3317.68 3630.31,-3317.68 3630.31,-3257.68 3267.31,-3257.68"/>
<polygon fill="none" stroke="#29235c" points="3267.31,-3257.68 3267.31,-3317.68 3630.31,-3317.68 3630.31,-3257.68 3267.31,-3257.68"/>
<text text-anchor="start" x="3361.68" y="-3278.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,-3256.68 3265.81,-3558.68 3630.81,-3558.68 3630.81,-3256.68 3265.81,-3256.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="-4244.68" rx="289.83" ry="384.83"/>
<polygon fill="#29235c" stroke="transparent" points="2608.98,-4454.68 2608.98,-4514.68 3014.98,-4514.68 3014.98,-4454.68 2608.98,-4454.68"/>
<polygon fill="none" stroke="#29235c" points="2608.98,-4454.68 2608.98,-4514.68 3014.98,-4514.68 3014.98,-4454.68 2608.98,-4454.68"/>
<text text-anchor="start" x="2619.91" y="-4475.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,-4394.68 2608.98,-4454.68 3014.98,-4454.68 3014.98,-4394.68 2608.98,-4394.68"/>
<polygon fill="none" stroke="#29235c" points="2608.98,-4394.68 2608.98,-4454.68 3014.98,-4454.68 3014.98,-4394.68 2608.98,-4394.68"/>
<text text-anchor="start" x="2723.04" y="-4415.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,-4334.68 2608.98,-4394.68 3014.98,-4394.68 3014.98,-4334.68 2608.98,-4334.68"/>
<polygon fill="none" stroke="#29235c" points="2608.98,-4334.68 2608.98,-4394.68 3014.98,-4394.68 3014.98,-4334.68 2608.98,-4334.68"/>
<text text-anchor="start" x="2707.94" y="-4355.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,-4274.68 2608.98,-4334.68 3014.98,-4334.68 3014.98,-4274.68 2608.98,-4274.68"/>
<polygon fill="none" stroke="#29235c" points="2608.98,-4274.68 2608.98,-4334.68 3014.98,-4334.68 3014.98,-4274.68 2608.98,-4274.68"/>
<text text-anchor="start" x="2699.06" y="-4295.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,-4214.68 2608.98,-4274.68 3014.98,-4274.68 3014.98,-4214.68 2608.98,-4214.68"/>
<polygon fill="none" stroke="#29235c" points="2608.98,-4214.68 2608.98,-4274.68 3014.98,-4274.68 3014.98,-4214.68 2608.98,-4214.68"/>
<text text-anchor="start" x="2740.83" y="-4235.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,-4154.68 2608.98,-4214.68 3014.98,-4214.68 3014.98,-4154.68 2608.98,-4154.68"/>
<polygon fill="none" stroke="#29235c" points="2608.98,-4154.68 2608.98,-4214.68 3014.98,-4214.68 3014.98,-4154.68 2608.98,-4154.68"/>
<text text-anchor="start" x="2682.14" y="-4175.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,-4094.68 2608.98,-4154.68 3014.98,-4154.68 3014.98,-4094.68 2608.98,-4094.68"/>
<polygon fill="none" stroke="#29235c" points="2608.98,-4094.68 2608.98,-4154.68 3014.98,-4154.68 3014.98,-4094.68 2608.98,-4094.68"/>
<text text-anchor="start" x="2742.64" y="-4115.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,-4034.68 2608.98,-4094.68 3014.98,-4094.68 3014.98,-4034.68 2608.98,-4034.68"/>
<polygon fill="none" stroke="#29235c" points="2608.98,-4034.68 2608.98,-4094.68 3014.98,-4094.68 3014.98,-4034.68 2608.98,-4034.68"/>
<text text-anchor="start" x="2723.95" y="-4055.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,-3974.68 2608.98,-4034.68 3014.98,-4034.68 3014.98,-3974.68 2608.98,-3974.68"/>
<polygon fill="none" stroke="#29235c" points="2608.98,-3974.68 2608.98,-4034.68 3014.98,-4034.68 3014.98,-3974.68 2608.98,-3974.68"/>
<text text-anchor="start" x="2755.07" y="-3995.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,-3973.68 2607.98,-4515.68 3015.98,-4515.68 3015.98,-3973.68 2607.98,-3973.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="-859.68" rx="345.14" ry="172.57"/>
<polygon fill="#29235c" stroke="transparent" points="1103.56,-919.68 1103.56,-979.68 1587.56,-979.68 1587.56,-919.68 1103.56,-919.68"/>
<polygon fill="none" stroke="#29235c" points="1103.56,-919.68 1103.56,-979.68 1587.56,-979.68 1587.56,-919.68 1103.56,-919.68"/>
<text text-anchor="start" x="1114.38" y="-940.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,-859.68 1103.56,-919.68 1587.56,-919.68 1587.56,-859.68 1103.56,-859.68"/>
<polygon fill="none" stroke="#29235c" points="1103.56,-859.68 1103.56,-919.68 1587.56,-919.68 1587.56,-859.68 1103.56,-859.68"/>
<text text-anchor="start" x="1253.12" y="-880.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,-799.68 1103.56,-859.68 1587.56,-859.68 1587.56,-799.68 1103.56,-799.68"/>
<polygon fill="none" stroke="#29235c" points="1103.56,-799.68 1103.56,-859.68 1587.56,-859.68 1587.56,-799.68 1103.56,-799.68"/>
<text text-anchor="start" x="1224.68" y="-820.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,-739.68 1103.56,-799.68 1587.56,-799.68 1587.56,-739.68 1103.56,-739.68"/>
<polygon fill="none" stroke="#29235c" points="1103.56,-739.68 1103.56,-799.68 1587.56,-799.68 1587.56,-739.68 1103.56,-739.68"/>
<text text-anchor="start" x="1225.57" y="-760.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,-738.68 1102.56,-980.68 1588.56,-980.68 1588.56,-738.68 1102.56,-738.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>
<!-- consolidation -->
<g id="consolidation" class="node">
<title>consolidation</title>
<g id="a_consolidation"><a xlink:title="consolidation&#10;STUB — полное определение в part07_consolidation">
<ellipse fill="none" stroke="black" stroke-width="0" cx="2084.43" cy="-280.68" rx="238.09" ry="87.86"/>
<polygon fill="#1d71b8" stroke="transparent" points="1918.43,-280.68 1918.43,-340.68 2251.43,-340.68 2251.43,-280.68 1918.43,-280.68"/>
<polygon fill="none" stroke="#29235c" points="1918.43,-280.68 1918.43,-340.68 2251.43,-340.68 2251.43,-280.68 1918.43,-280.68"/>
<text text-anchor="start" x="1929.32" y="-301.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;consolidation &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1918.43,-220.68 1918.43,-280.68 2251.43,-280.68 2251.43,-220.68 1918.43,-220.68"/>
<polygon fill="none" stroke="#29235c" points="1918.43,-220.68 1918.43,-280.68 2251.43,-280.68 2251.43,-220.68 1918.43,-220.68"/>
<text text-anchor="start" x="1929.43" y="-241.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text>
<text text-anchor="start" x="1954.32" y="-241.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="2179.96" y="-241.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="1916.93,-219.68 1916.93,-341.68 2251.93,-341.68 2251.93,-219.68 1916.93,-219.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="-4184.68" rx="220.73" ry="87.86"/>
<polygon fill="#1d71b8" stroke="transparent" points="1930.43,-4184.68 1930.43,-4244.68 2238.43,-4244.68 2238.43,-4184.68 1930.43,-4184.68"/>
<polygon fill="none" stroke="#29235c" points="1930.43,-4184.68 1930.43,-4244.68 2238.43,-4244.68 2238.43,-4184.68 1930.43,-4184.68"/>
<text text-anchor="start" x="1941.27" y="-4205.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,-4124.68 1930.43,-4184.68 2238.43,-4184.68 2238.43,-4124.68 1930.43,-4124.68"/>
<polygon fill="none" stroke="#29235c" points="1930.43,-4124.68 1930.43,-4184.68 2238.43,-4184.68 2238.43,-4124.68 1930.43,-4124.68"/>
<text text-anchor="start" x="1941.43" y="-4145.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="-4145.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="2166.96" y="-4145.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,-4123.68 1929.43,-4245.68 2239.43,-4245.68 2239.43,-4123.68 1929.43,-4123.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="-3287.68" rx="340.65" ry="554.24"/>
<polygon fill="#1d71b8" stroke="transparent" points="2572.98,-3617.68 2572.98,-3677.68 3050.98,-3677.68 3050.98,-3617.68 2572.98,-3617.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3617.68 2572.98,-3677.68 3050.98,-3677.68 3050.98,-3617.68 2572.98,-3617.68"/>
<text text-anchor="start" x="2681.26" y="-3638.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,-3557.68 2572.98,-3617.68 3050.98,-3617.68 3050.98,-3557.68 2572.98,-3557.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3557.68 2572.98,-3617.68 3050.98,-3617.68 3050.98,-3557.68 2572.98,-3557.68"/>
<text text-anchor="start" x="2583.98" y="-3578.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="-3578.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="2979.51" y="-3578.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,-3497.68 2572.98,-3557.68 3050.98,-3557.68 3050.98,-3497.68 2572.98,-3497.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3497.68 2572.98,-3557.68 3050.98,-3557.68 3050.98,-3497.68 2572.98,-3497.68"/>
<text text-anchor="start" x="2583.5" y="-3517.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="-3518.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="-3518.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="3009.8" y="-3518.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2572.98,-3437.68 2572.98,-3497.68 3050.98,-3497.68 3050.98,-3437.68 2572.98,-3437.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3437.68 2572.98,-3497.68 3050.98,-3497.68 3050.98,-3437.68 2572.98,-3437.68"/>
<text text-anchor="start" x="2583.98" y="-3457.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="-3458.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="-3458.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="3009.78" y="-3458.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2572.98,-3377.68 2572.98,-3437.68 3050.98,-3437.68 3050.98,-3377.68 2572.98,-3377.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3377.68 2572.98,-3437.68 3050.98,-3437.68 3050.98,-3377.68 2572.98,-3377.68"/>
<text text-anchor="start" x="2583.98" y="-3397.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="-3398.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="-3398.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="3009.78" y="-3398.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2572.98,-3317.68 2572.98,-3377.68 3050.98,-3377.68 3050.98,-3317.68 2572.98,-3317.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3317.68 2572.98,-3377.68 3050.98,-3377.68 3050.98,-3317.68 2572.98,-3317.68"/>
<text text-anchor="start" x="2583.98" y="-3337.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="-3338.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,-3257.68 2572.98,-3317.68 3050.98,-3317.68 3050.98,-3257.68 2572.98,-3257.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3257.68 2572.98,-3317.68 3050.98,-3317.68 3050.98,-3257.68 2572.98,-3257.68"/>
<text text-anchor="start" x="2583.98" y="-3277.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="-3278.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,-3197.68 2572.98,-3257.68 3050.98,-3257.68 3050.98,-3197.68 2572.98,-3197.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3197.68 2572.98,-3257.68 3050.98,-3257.68 3050.98,-3197.68 2572.98,-3197.68"/>
<text text-anchor="start" x="2583.98" y="-3217.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="-3218.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,-3137.68 2572.98,-3197.68 3050.98,-3197.68 3050.98,-3137.68 2572.98,-3137.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3137.68 2572.98,-3197.68 3050.98,-3197.68 3050.98,-3137.68 2572.98,-3137.68"/>
<text text-anchor="start" x="2583.98" y="-3157.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="-3158.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,-3077.68 2572.98,-3137.68 3050.98,-3137.68 3050.98,-3077.68 2572.98,-3077.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3077.68 2572.98,-3137.68 3050.98,-3137.68 3050.98,-3077.68 2572.98,-3077.68"/>
<text text-anchor="start" x="2583.98" y="-3097.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="-3098.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,-3017.68 2572.98,-3077.68 3050.98,-3077.68 3050.98,-3017.68 2572.98,-3017.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-3017.68 2572.98,-3077.68 3050.98,-3077.68 3050.98,-3017.68 2572.98,-3017.68"/>
<text text-anchor="start" x="2583.98" y="-3037.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="-3038.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="-3038.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="3009.78" y="-3038.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="2572.98,-2957.68 2572.98,-3017.68 3050.98,-3017.68 3050.98,-2957.68 2572.98,-2957.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-2957.68 2572.98,-3017.68 3050.98,-3017.68 3050.98,-2957.68 2572.98,-2957.68"/>
<text text-anchor="start" x="2583.98" y="-2977.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="-2978.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,-2897.68 2572.98,-2957.68 3050.98,-2957.68 3050.98,-2897.68 2572.98,-2897.68"/>
<polygon fill="none" stroke="#29235c" points="2572.98,-2897.68 2572.98,-2957.68 3050.98,-2957.68 3050.98,-2897.68 2572.98,-2897.68"/>
<text text-anchor="start" x="2583.98" y="-2917.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="-2918.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,-2896.68 2571.98,-3678.68 3051.98,-3678.68 3051.98,-2896.68 2571.98,-2896.68"/>
</a>
</g>
</g>
<!-- s3_object&#45;&gt;s3_bucket_role -->
<g id="edge23" class="edge">
<title>s3_object:e&#45;&gt;s3_bucket_role:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M3051.98,-3527.68C3147.24,-3527.68 3171.05,-3527.68 3266.31,-3527.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). v5.18: consolidation_id — где загружен; что использует версия — consolidation_document">
<ellipse fill="none" stroke="black" stroke-width="0" cx="1345.56" cy="-3197.68" rx="352.28" ry="681.8"/>
<polygon fill="#1d71b8" stroke="transparent" points="1098.56,-3617.68 1098.56,-3677.68 1592.56,-3677.68 1592.56,-3617.68 1098.56,-3617.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-3617.68 1098.56,-3677.68 1592.56,-3677.68 1592.56,-3617.68 1098.56,-3617.68"/>
<text text-anchor="start" x="1209.52" y="-3638.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,-3557.68 1098.56,-3617.68 1592.56,-3617.68 1592.56,-3557.68 1098.56,-3557.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-3557.68 1098.56,-3617.68 1592.56,-3617.68 1592.56,-3557.68 1098.56,-3557.68"/>
<text text-anchor="start" x="1109.56" y="-3578.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="-3578.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="1521.09" y="-3578.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,-3497.68 1098.56,-3557.68 1592.56,-3557.68 1592.56,-3497.68 1098.56,-3497.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-3497.68 1098.56,-3557.68 1592.56,-3557.68 1592.56,-3497.68 1098.56,-3497.68"/>
<text text-anchor="start" x="1109.56" y="-3517.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="-3518.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="-3518.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1551.36" y="-3518.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-3437.68 1098.56,-3497.68 1592.56,-3497.68 1592.56,-3437.68 1098.56,-3437.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-3437.68 1098.56,-3497.68 1592.56,-3497.68 1592.56,-3437.68 1098.56,-3437.68"/>
<text text-anchor="start" x="1109.56" y="-3457.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="-3458.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="-3458.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1551.36" y="-3458.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-3377.68 1098.56,-3437.68 1592.56,-3437.68 1592.56,-3377.68 1098.56,-3377.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-3377.68 1098.56,-3437.68 1592.56,-3437.68 1592.56,-3377.68 1098.56,-3377.68"/>
<text text-anchor="start" x="1109.56" y="-3397.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="-3398.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,-3317.68 1098.56,-3377.68 1592.56,-3377.68 1592.56,-3317.68 1098.56,-3317.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-3317.68 1098.56,-3377.68 1592.56,-3377.68 1592.56,-3317.68 1098.56,-3317.68"/>
<text text-anchor="start" x="1109.56" y="-3337.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="-3338.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="-3338.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1551.36" y="-3338.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-3257.68 1098.56,-3317.68 1592.56,-3317.68 1592.56,-3257.68 1098.56,-3257.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-3257.68 1098.56,-3317.68 1592.56,-3317.68 1592.56,-3257.68 1098.56,-3257.68"/>
<text text-anchor="start" x="1109.56" y="-3277.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="-3278.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,-3197.68 1098.56,-3257.68 1592.56,-3257.68 1592.56,-3197.68 1098.56,-3197.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-3197.68 1098.56,-3257.68 1592.56,-3257.68 1592.56,-3197.68 1098.56,-3197.68"/>
<text text-anchor="start" x="1109.56" y="-3217.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="-3218.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,-3137.68 1098.56,-3197.68 1592.56,-3197.68 1592.56,-3137.68 1098.56,-3137.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-3137.68 1098.56,-3197.68 1592.56,-3197.68 1592.56,-3137.68 1098.56,-3137.68"/>
<text text-anchor="start" x="1109.56" y="-3157.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="-3158.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="-3158.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1551.36" y="-3158.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-3077.68 1098.56,-3137.68 1592.56,-3137.68 1592.56,-3077.68 1098.56,-3077.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-3077.68 1098.56,-3137.68 1592.56,-3137.68 1592.56,-3077.68 1098.56,-3077.68"/>
<text text-anchor="start" x="1109.56" y="-3097.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="-3098.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="-3098.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1551.36" y="-3098.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1098.56,-3017.68 1098.56,-3077.68 1592.56,-3077.68 1592.56,-3017.68 1098.56,-3017.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-3017.68 1098.56,-3077.68 1592.56,-3077.68 1592.56,-3017.68 1098.56,-3017.68"/>
<text text-anchor="start" x="1109.56" y="-3037.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="-3038.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,-2957.68 1098.56,-3017.68 1592.56,-3017.68 1592.56,-2957.68 1098.56,-2957.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-2957.68 1098.56,-3017.68 1592.56,-3017.68 1592.56,-2957.68 1098.56,-2957.68"/>
<text text-anchor="start" x="1109.29" y="-2977.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="-2978.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,-2897.68 1098.56,-2957.68 1592.56,-2957.68 1592.56,-2897.68 1098.56,-2897.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-2897.68 1098.56,-2957.68 1592.56,-2957.68 1592.56,-2897.68 1098.56,-2897.68"/>
<text text-anchor="start" x="1109.56" y="-2917.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="-2918.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,-2837.68 1098.56,-2897.68 1592.56,-2897.68 1592.56,-2837.68 1098.56,-2837.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-2837.68 1098.56,-2897.68 1592.56,-2897.68 1592.56,-2837.68 1098.56,-2837.68"/>
<text text-anchor="start" x="1109.56" y="-2857.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="-2858.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,-2777.68 1098.56,-2837.68 1592.56,-2837.68 1592.56,-2777.68 1098.56,-2777.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-2777.68 1098.56,-2837.68 1592.56,-2837.68 1592.56,-2777.68 1098.56,-2777.68"/>
<text text-anchor="start" x="1109.56" y="-2797.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="-2798.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,-2717.68 1098.56,-2777.68 1592.56,-2777.68 1592.56,-2717.68 1098.56,-2717.68"/>
<polygon fill="none" stroke="#29235c" points="1098.56,-2717.68 1098.56,-2777.68 1592.56,-2777.68 1592.56,-2717.68 1098.56,-2717.68"/>
<text text-anchor="start" x="1109.56" y="-2737.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">consolidation_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="1521.09" y="-2738.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="1097.56,-2716.68 1097.56,-3678.68 1593.56,-3678.68 1593.56,-2716.68 1097.56,-2716.68"/>
</a>
</g>
</g>
<!-- stored_file&#45;&gt;file_type -->
<g id="edge24" class="edge">
<title>stored_file:e&#45;&gt;file_type:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M1593.56,-3467.68C1809.47,-3467.68 1681.97,-2717.02 1697.7,-2501.68 1705.28,-2397.88 1680.44,-1655.1 1733.7,-1565.68 1791.26,-1469.05 1838.95,-1436.68 1951.43,-1436.68"/>
</g>
<!-- stored_file&#45;&gt;file_status -->
<g id="edge25" class="edge">
<title>stored_file:e&#45;&gt;file_status:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M1593.56,-3167.68C1743.36,-3167.68 1684.4,-2650.89 1697.7,-2501.68 1705.53,-2413.84 1690.07,-991.32 1733.7,-914.68 1783.93,-826.46 1825.91,-793.68 1927.43,-793.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,-2927.68C1788.47,-2927.68 1672.89,-2695 1697.7,-2501.68 1705.9,-2437.81 1701.5,-239.45 1733.7,-183.68 1786.57,-92.14 1832.36,-59.71 1934.38,-57.77"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1934.46,-61.27 1944.43,-57.68 1934.39,-54.27 1934.46,-61.27"/>
<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="-2937.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
<!-- stored_file&#45;&gt;consolidation -->
<!-- stored_file&#45;&gt;consolidation -->
<g id="edge12" class="edge">
<title>stored_file:e&#45;&gt;consolidation:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M1593.56,-2747.68C1712.29,-2747.68 1673.1,-2617.83 1697.7,-2501.68 1722.15,-2386.23 1678.01,-481.73 1733.7,-377.68 1778.9,-293.24 1815.5,-253.52 1907.18,-250.83"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1907.48,-254.32 1917.43,-250.68 1907.38,-247.32 1907.48,-254.32"/>
<text text-anchor="middle" x="1908.53" y="-221.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="1587.34" y="-2757.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,-3527.68C1720.77,-3527.68 1648.61,-3988.13 1733.7,-4082.68 1793.4,-4149.02 1833.66,-4154.36 1919.32,-4154.67"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1919.42,-4158.17 1929.43,-4154.68 1919.43,-4151.17 1919.42,-4158.17"/>
<text text-anchor="middle" x="1920.53" y="-4164.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="1587.34" y="-3537.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,-3347.68C1782.98,-3347.68 1683.92,-2690.6 1697.7,-2501.68 1700.84,-2458.62 1702.82,-977.86 1733.7,-947.68 1761.57,-920.45 2406.89,-920.85 2435.15,-947.68 2645.66,-1147.56 2286.84,-3530.85 2561.92,-3586.68"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="2561.68,-3590.18 2571.98,-3587.68 2562.37,-3583.21 2561.68,-3590.18"/>
<text text-anchor="middle" x="2580.87" y="-3597.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="1587.34" y="-3357.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,-3047.68C1777.06,-3280.9 1777.06,-3897.33 1345.56,-3897.33 919.12,-3897.33 914.12,-3822.68 1092.15,-3595.82"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1095.12,-3597.7 1098.56,-3587.68 1089.62,-3593.37 1095.12,-3597.7"/>
<text text-anchor="middle" x="1089.67" y="-3597.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="1586.34" y="-3057.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="-2807.68" rx="350.95" ry="1233.39"/>
<polygon fill="#1d71b8" stroke="transparent" points="1838.43,-3617.68 1838.43,-3677.68 2330.43,-3677.68 2330.43,-3617.68 1838.43,-3617.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-3617.68 1838.43,-3677.68 2330.43,-3677.68 2330.43,-3617.68 1838.43,-3617.68"/>
<text text-anchor="start" x="1913.7" y="-3638.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,-3557.68 1838.43,-3617.68 2330.43,-3617.68 2330.43,-3557.68 1838.43,-3557.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-3557.68 1838.43,-3617.68 2330.43,-3617.68 2330.43,-3557.68 1838.43,-3557.68"/>
<text text-anchor="start" x="1849.43" y="-3578.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="-3578.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="2258.96" y="-3578.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,-3497.68 1838.43,-3557.68 2330.43,-3557.68 2330.43,-3497.68 1838.43,-3497.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-3497.68 1838.43,-3557.68 2330.43,-3557.68 2330.43,-3497.68 1838.43,-3497.68"/>
<text text-anchor="start" x="1849.43" y="-3517.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="-3518.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="-3518.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="2289.23" y="-3518.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-3437.68 1838.43,-3497.68 2330.43,-3497.68 2330.43,-3437.68 1838.43,-3437.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-3437.68 1838.43,-3497.68 2330.43,-3497.68 2330.43,-3437.68 1838.43,-3437.68"/>
<text text-anchor="start" x="1849.43" y="-3457.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="-3458.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="-3458.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="2289.23" y="-3458.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-3377.68 1838.43,-3437.68 2330.43,-3437.68 2330.43,-3377.68 1838.43,-3377.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-3377.68 1838.43,-3437.68 2330.43,-3437.68 2330.43,-3377.68 1838.43,-3377.68"/>
<text text-anchor="start" x="1849.43" y="-3397.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="-3398.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="-3398.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="2289.23" y="-3398.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-3317.68 1838.43,-3377.68 2330.43,-3377.68 2330.43,-3317.68 1838.43,-3317.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-3317.68 1838.43,-3377.68 2330.43,-3377.68 2330.43,-3317.68 1838.43,-3317.68"/>
<text text-anchor="start" x="1849.43" y="-3337.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="-3338.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,-3257.68 1838.43,-3317.68 2330.43,-3317.68 2330.43,-3257.68 1838.43,-3257.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-3257.68 1838.43,-3317.68 2330.43,-3317.68 2330.43,-3257.68 1838.43,-3257.68"/>
<text text-anchor="start" x="1849.43" y="-3277.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="-3278.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,-3197.68 1838.43,-3257.68 2330.43,-3257.68 2330.43,-3197.68 1838.43,-3197.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-3197.68 1838.43,-3257.68 2330.43,-3257.68 2330.43,-3197.68 1838.43,-3197.68"/>
<text text-anchor="start" x="1849.43" y="-3217.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="-3218.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="-3218.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="2289.23" y="-3218.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-3137.68 1838.43,-3197.68 2330.43,-3197.68 2330.43,-3137.68 1838.43,-3137.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-3137.68 1838.43,-3197.68 2330.43,-3197.68 2330.43,-3137.68 1838.43,-3137.68"/>
<text text-anchor="start" x="1849.43" y="-3157.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="-3158.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,-3077.68 1838.43,-3137.68 2330.43,-3137.68 2330.43,-3077.68 1838.43,-3077.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-3077.68 1838.43,-3137.68 2330.43,-3137.68 2330.43,-3077.68 1838.43,-3077.68"/>
<text text-anchor="start" x="1849.43" y="-3097.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="-3098.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,-3017.68 1838.43,-3077.68 2330.43,-3077.68 2330.43,-3017.68 1838.43,-3017.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-3017.68 1838.43,-3077.68 2330.43,-3077.68 2330.43,-3017.68 1838.43,-3017.68"/>
<text text-anchor="start" x="1849.43" y="-3037.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="-3038.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="-3038.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="2289.23" y="-3038.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2957.68 1838.43,-3017.68 2330.43,-3017.68 2330.43,-2957.68 1838.43,-2957.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2957.68 1838.43,-3017.68 2330.43,-3017.68 2330.43,-2957.68 1838.43,-2957.68"/>
<text text-anchor="start" x="1849.43" y="-2977.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="-2978.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="-2978.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="2289.23" y="-2978.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2897.68 1838.43,-2957.68 2330.43,-2957.68 2330.43,-2897.68 1838.43,-2897.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2897.68 1838.43,-2957.68 2330.43,-2957.68 2330.43,-2897.68 1838.43,-2897.68"/>
<text text-anchor="start" x="1849.43" y="-2917.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="-2918.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="-2918.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="2289.23" y="-2918.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1838.43,-2837.68 1838.43,-2897.68 2330.43,-2897.68 2330.43,-2837.68 1838.43,-2837.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2837.68 1838.43,-2897.68 2330.43,-2897.68 2330.43,-2837.68 1838.43,-2837.68"/>
<text text-anchor="start" x="1849.43" y="-2857.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="-2858.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,-2777.68 1838.43,-2837.68 2330.43,-2837.68 2330.43,-2777.68 1838.43,-2777.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2777.68 1838.43,-2837.68 2330.43,-2837.68 2330.43,-2777.68 1838.43,-2777.68"/>
<text text-anchor="start" x="1849.43" y="-2797.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="-2798.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,-2717.68 1838.43,-2777.68 2330.43,-2777.68 2330.43,-2717.68 1838.43,-2717.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2717.68 1838.43,-2777.68 2330.43,-2777.68 2330.43,-2717.68 1838.43,-2717.68"/>
<text text-anchor="start" x="1849.43" y="-2737.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="-2738.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,-2657.68 1838.43,-2717.68 2330.43,-2717.68 2330.43,-2657.68 1838.43,-2657.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2657.68 1838.43,-2717.68 2330.43,-2717.68 2330.43,-2657.68 1838.43,-2657.68"/>
<text text-anchor="start" x="1849.43" y="-2677.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="-2678.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,-2597.68 1838.43,-2657.68 2330.43,-2657.68 2330.43,-2597.68 1838.43,-2597.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2597.68 1838.43,-2657.68 2330.43,-2657.68 2330.43,-2597.68 1838.43,-2597.68"/>
<text text-anchor="start" x="1849.43" y="-2617.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="-2618.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,-2537.68 1838.43,-2597.68 2330.43,-2597.68 2330.43,-2537.68 1838.43,-2537.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2537.68 1838.43,-2597.68 2330.43,-2597.68 2330.43,-2537.68 1838.43,-2537.68"/>
<text text-anchor="start" x="1849.43" y="-2557.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="-2558.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,-2477.68 1838.43,-2537.68 2330.43,-2537.68 2330.43,-2477.68 1838.43,-2477.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2477.68 1838.43,-2537.68 2330.43,-2537.68 2330.43,-2477.68 1838.43,-2477.68"/>
<text text-anchor="start" x="1849.43" y="-2497.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="-2498.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,-2417.68 1838.43,-2477.68 2330.43,-2477.68 2330.43,-2417.68 1838.43,-2417.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2417.68 1838.43,-2477.68 2330.43,-2477.68 2330.43,-2417.68 1838.43,-2417.68"/>
<text text-anchor="start" x="1849.43" y="-2437.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="-2438.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,-2357.68 1838.43,-2417.68 2330.43,-2417.68 2330.43,-2357.68 1838.43,-2357.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2357.68 1838.43,-2417.68 2330.43,-2417.68 2330.43,-2357.68 1838.43,-2357.68"/>
<text text-anchor="start" x="1849.43" y="-2377.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="-2378.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,-2297.68 1838.43,-2357.68 2330.43,-2357.68 2330.43,-2297.68 1838.43,-2297.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2297.68 1838.43,-2357.68 2330.43,-2357.68 2330.43,-2297.68 1838.43,-2297.68"/>
<text text-anchor="start" x="1849.17" y="-2317.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="-2318.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,-2237.68 1838.43,-2297.68 2330.43,-2297.68 2330.43,-2237.68 1838.43,-2237.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2237.68 1838.43,-2297.68 2330.43,-2297.68 2330.43,-2237.68 1838.43,-2237.68"/>
<text text-anchor="start" x="1849.43" y="-2257.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="-2258.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,-2177.68 1838.43,-2237.68 2330.43,-2237.68 2330.43,-2177.68 1838.43,-2177.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2177.68 1838.43,-2237.68 2330.43,-2237.68 2330.43,-2177.68 1838.43,-2177.68"/>
<text text-anchor="start" x="1849.43" y="-2197.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="-2198.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,-2117.68 1838.43,-2177.68 2330.43,-2177.68 2330.43,-2117.68 1838.43,-2117.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2117.68 1838.43,-2177.68 2330.43,-2177.68 2330.43,-2117.68 1838.43,-2117.68"/>
<text text-anchor="start" x="1849.43" y="-2137.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="-2138.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,-2057.68 1838.43,-2117.68 2330.43,-2117.68 2330.43,-2057.68 1838.43,-2057.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-2057.68 1838.43,-2117.68 2330.43,-2117.68 2330.43,-2057.68 1838.43,-2057.68"/>
<text text-anchor="start" x="1849.43" y="-2077.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="-2078.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,-1997.68 1838.43,-2057.68 2330.43,-2057.68 2330.43,-1997.68 1838.43,-1997.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-1997.68 1838.43,-2057.68 2330.43,-2057.68 2330.43,-1997.68 1838.43,-1997.68"/>
<text text-anchor="start" x="1849.43" y="-2017.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="-2018.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,-1937.68 1838.43,-1997.68 2330.43,-1997.68 2330.43,-1937.68 1838.43,-1937.68"/>
<polygon fill="none" stroke="#29235c" points="1838.43,-1937.68 1838.43,-1997.68 2330.43,-1997.68 2330.43,-1937.68 1838.43,-1937.68"/>
<text text-anchor="start" x="1849.43" y="-1957.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">statements_version &#160;&#160;&#160;</text>
<text text-anchor="start" x="2212.75" y="-1958.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="1837.43,-1936.68 1837.43,-3678.68 2331.43,-3678.68 2331.43,-1936.68 1837.43,-1936.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,-2987.68C1877.9,-2987.68 1557.58,-3573.12 1827.16,-3587.42"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1827.34,-3590.92 1837.43,-3587.68 1827.52,-3583.92 1827.34,-3590.92"/>
<text text-anchor="middle" x="1828.53" y="-3597.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="1587.34" y="-2997.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) по данным, не хранятся. v5.19: предупреждения и нарушения §7 — document_issue; две формы одного типа и периода в файле не автоподтверждаются (Р&#45;18)">
<ellipse fill="none" stroke="black" stroke-width="0" cx="478.71" cy="-3107.68" rx="478.92" ry="808.86"/>
<polygon fill="#1d71b8" stroke="transparent" points="142.71,-3617.68 142.71,-3677.68 815.71,-3677.68 815.71,-3617.68 142.71,-3617.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-3617.68 142.71,-3677.68 815.71,-3677.68 815.71,-3617.68 142.71,-3617.68"/>
<text text-anchor="start" x="346.72" y="-3638.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,-3557.68 142.71,-3617.68 815.71,-3617.68 815.71,-3557.68 142.71,-3557.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-3557.68 142.71,-3617.68 815.71,-3617.68 815.71,-3557.68 142.71,-3557.68"/>
<text text-anchor="start" x="153.71" y="-3578.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="-3578.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="744.24" y="-3578.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,-3497.68 142.71,-3557.68 815.71,-3557.68 815.71,-3497.68 142.71,-3497.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-3497.68 142.71,-3557.68 815.71,-3557.68 815.71,-3497.68 142.71,-3497.68"/>
<text text-anchor="start" x="153.71" y="-3517.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="-3518.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="-3518.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="774.51" y="-3518.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-3437.68 142.71,-3497.68 815.71,-3497.68 815.71,-3437.68 142.71,-3437.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-3437.68 142.71,-3497.68 815.71,-3497.68 815.71,-3437.68 142.71,-3437.68"/>
<text text-anchor="start" x="153.71" y="-3457.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="-3458.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="-3458.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="774.51" y="-3458.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-3377.68 142.71,-3437.68 815.71,-3437.68 815.71,-3377.68 142.71,-3377.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-3377.68 142.71,-3437.68 815.71,-3437.68 815.71,-3377.68 142.71,-3377.68"/>
<text text-anchor="start" x="153.71" y="-3397.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="-3398.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="-3398.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="774.51" y="-3398.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-3317.68 142.71,-3377.68 815.71,-3377.68 815.71,-3317.68 142.71,-3317.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-3317.68 142.71,-3377.68 815.71,-3377.68 815.71,-3317.68 142.71,-3317.68"/>
<text text-anchor="start" x="153.71" y="-3337.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="-3338.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,-3257.68 142.71,-3317.68 815.71,-3317.68 815.71,-3257.68 142.71,-3257.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-3257.68 142.71,-3317.68 815.71,-3317.68 815.71,-3257.68 142.71,-3257.68"/>
<text text-anchor="start" x="153.71" y="-3277.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="-3278.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,-3197.68 142.71,-3257.68 815.71,-3257.68 815.71,-3197.68 142.71,-3197.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-3197.68 142.71,-3257.68 815.71,-3257.68 815.71,-3197.68 142.71,-3197.68"/>
<text text-anchor="start" x="153.71" y="-3217.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="-3218.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,-3137.68 142.71,-3197.68 815.71,-3197.68 815.71,-3137.68 142.71,-3137.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-3137.68 142.71,-3197.68 815.71,-3197.68 815.71,-3137.68 142.71,-3137.68"/>
<text text-anchor="start" x="153.71" y="-3157.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="-3158.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,-3077.68 142.71,-3137.68 815.71,-3137.68 815.71,-3077.68 142.71,-3077.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-3077.68 142.71,-3137.68 815.71,-3137.68 815.71,-3077.68 142.71,-3077.68"/>
<text text-anchor="start" x="153.71" y="-3097.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="-3098.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,-3017.68 142.71,-3077.68 815.71,-3077.68 815.71,-3017.68 142.71,-3017.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-3017.68 142.71,-3077.68 815.71,-3077.68 815.71,-3017.68 142.71,-3017.68"/>
<text text-anchor="start" x="153.71" y="-3037.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="-3038.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,-2957.68 142.71,-3017.68 815.71,-3017.68 815.71,-2957.68 142.71,-2957.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2957.68 142.71,-3017.68 815.71,-3017.68 815.71,-2957.68 142.71,-2957.68"/>
<text text-anchor="start" x="153.71" y="-2977.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="-2978.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="-2978.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="774.51" y="-2978.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="142.71,-2897.68 142.71,-2957.68 815.71,-2957.68 815.71,-2897.68 142.71,-2897.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2897.68 142.71,-2957.68 815.71,-2957.68 815.71,-2897.68 142.71,-2897.68"/>
<text text-anchor="start" x="153.71" y="-2917.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="-2918.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,-2837.68 142.71,-2897.68 815.71,-2897.68 815.71,-2837.68 142.71,-2837.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2837.68 142.71,-2897.68 815.71,-2897.68 815.71,-2837.68 142.71,-2837.68"/>
<text text-anchor="start" x="153.33" y="-2857.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="-2858.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,-2777.68 142.71,-2837.68 815.71,-2837.68 815.71,-2777.68 142.71,-2777.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2777.68 142.71,-2837.68 815.71,-2837.68 815.71,-2777.68 142.71,-2777.68"/>
<text text-anchor="start" x="153.71" y="-2797.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="-2798.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,-2717.68 142.71,-2777.68 815.71,-2777.68 815.71,-2717.68 142.71,-2717.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2717.68 142.71,-2777.68 815.71,-2777.68 815.71,-2717.68 142.71,-2717.68"/>
<text text-anchor="start" x="153.71" y="-2737.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="-2738.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,-2657.68 142.71,-2717.68 815.71,-2717.68 815.71,-2657.68 142.71,-2657.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2657.68 142.71,-2717.68 815.71,-2717.68 815.71,-2657.68 142.71,-2657.68"/>
<text text-anchor="start" x="153.71" y="-2677.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="-2678.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,-2597.68 142.71,-2657.68 815.71,-2657.68 815.71,-2597.68 142.71,-2597.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2597.68 142.71,-2657.68 815.71,-2657.68 815.71,-2597.68 142.71,-2597.68"/>
<text text-anchor="start" x="153.71" y="-2617.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="-2618.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,-2537.68 142.71,-2597.68 815.71,-2597.68 815.71,-2537.68 142.71,-2537.68"/>
<polygon fill="none" stroke="#29235c" points="142.71,-2537.68 142.71,-2597.68 815.71,-2597.68 815.71,-2537.68 142.71,-2537.68"/>
<text text-anchor="start" x="153.71" y="-2557.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">file_ordinal &#160;&#160;&#160;</text>
<text text-anchor="start" x="657.19" y="-2558.88" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">smallint</text>
<text text-anchor="start" x="765.62" y="-2558.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="774.51" y="-2558.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="141.21,-2536.68 141.21,-3678.68 816.21,-3678.68 816.21,-2536.68 141.21,-2536.68"/>
</a>
</g>
</g>
<!-- document&#45;&gt;document_type -->
<g id="edge26" class="edge">
<title>document:e&#45;&gt;document_type:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M816.71,-3407.68C1027.95,-3407.68 879.72,-2651.7 993.42,-2473.68 1043.18,-2395.79 1070.13,-2352.68 1162.56,-2352.68"/>
</g>
<!-- document&#45;&gt;period_quarter -->
<g id="edge27" class="edge">
<title>document:e&#45;&gt;period_quarter:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M816.71,-3227.68C1106.28,-3227.68 833.71,-2178.22 993.42,-1936.68 1043.14,-1861.49 1077.41,-1832.68 1167.56,-1832.68"/>
</g>
<!-- document&#45;&gt;document_status -->
<g id="edge28" class="edge">
<title>document:e&#45;&gt;document_status:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M816.71,-2987.68C1152.13,-2987.68 818.03,-1774.58 993.42,-1488.68 1037.02,-1417.61 1066.18,-1384.68 1149.56,-1384.68"/>
</g>
<!-- document&#45;&gt;document_check_result -->
<g id="edge29" class="edge">
<title>document:e&#45;&gt;document_check_result:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M816.71,-2927.68C1260.83,-2927.68 658.44,-949.68 1102.56,-949.68"/>
</g>
<!-- document&#45;&gt;document_check_result -->
<g id="edge30" class="edge">
<title>document:e&#45;&gt;document_check_result:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M816.71,-2867.68C1247.64,-2867.68 671.63,-949.68 1102.56,-949.68"/>
</g>
<!-- document&#45;&gt;app_user -->
<!-- document&#45;&gt;app_user -->
<g id="edge18" class="edge">
<title>document:e&#45;&gt;app_user:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M816.71,-2807.68C1054.19,-2807.68 872.84,-882.27 993.42,-677.68 1247.86,-245.97 1437.26,-60.23 1934.12,-57.71"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1934.43,-61.21 1944.43,-57.68 1934.42,-54.21 1934.43,-61.21"/>
<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="-2817.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="edge16" class="edge">
<title>document:e&#45;&gt;legal_entity:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M816.71,-3467.68C1027.04,-3467.68 832.14,-3771.68 993.42,-3906.68 1238.62,-4111.93 1406.34,-3921.94 1697.7,-4053.68 1715.92,-4061.92 1716.17,-4071.05 1733.7,-4080.68 1812.18,-4123.81 1834.77,-4152.49 1919.36,-4154.56"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1919.38,-4158.06 1929.43,-4154.68 1919.47,-4151.06 1919.38,-4158.06"/>
<text text-anchor="middle" x="1938.32" y="-4164.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="810.49" y="-3477.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="edge14" class="edge">
<title>document:e&#45;&gt;stored_file:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M816.71,-3527.68C940.86,-3527.68 968.45,-3584.44 1087.32,-3587.55"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1087.52,-3591.05 1097.56,-3587.68 1087.61,-3584.05 1087.52,-3591.05"/>
<text text-anchor="middle" x="1088.67" y="-3558.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="810.49" y="-3537.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
<!-- recognition_job&#45;&gt;recognition_pipeline -->
<g id="edge31" class="edge">
<title>recognition_job:e&#45;&gt;recognition_pipeline:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M2331.43,-3467.68C2641.49,-3467.68 2285.91,-4837.68 2595.98,-4837.68"/>
</g>
<!-- recognition_job&#45;&gt;recognition_status -->
<g id="edge32" class="edge">
<title>recognition_job:e&#45;&gt;recognition_status:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M2331.43,-3047.68C2512.55,-3047.68 2436.51,-3672.9 2471.15,-3850.68 2526.28,-4133.63 2319.71,-4484.68 2607.98,-4484.68"/>
</g>
<!-- recognition_job&#45;&gt;s3_object -->
<!-- recognition_job&#45;&gt;s3_object -->
<g id="edge22" class="edge">
<title>recognition_job:e&#45;&gt;s3_object:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M2331.43,-2387.68C2871.92,-2387.68 2038.73,-3572.5 2561.79,-3587.54"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="2561.93,-3591.04 2571.98,-3587.68 2562.03,-3584.04 2561.93,-3591.04"/>
<text text-anchor="middle" x="2580.87" y="-3558.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="2325.2" y="-2397.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="edge20" class="edge">
<title>recognition_job:e&#45;&gt;stored_file:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M2331.43,-3527.68C2445.47,-3527.68 2411.15,-3960.31 2330.43,-4040.88 2306.96,-4064.29 1766.27,-4047.06 1733.7,-4040.88 1716.8,-4037.66 1714.09,-4031.9 1697.7,-4026.68 1436.42,-3943.46 1268.1,-4094.86 1098.56,-3879.33 1020.61,-3780.24 970.72,-3597.99 1087.33,-3588.1"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1087.71,-3591.59 1097.56,-3587.68 1087.43,-3584.59 1087.71,-3591.59"/>
<text text-anchor="middle" x="1106.46" y="-3558.88" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="2325.2" y="-3537.28" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
</g>
</svg>