docs(#202): DBML v5.25 — факты качества первички (AURORA-1759)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Andrey Epifancev 2026-11-05 14:02:35 +04:00
parent dc24164cce
commit 2fee6a3b6e
10 changed files with 2996 additions and 689 deletions

View File

@ -6,7 +6,7 @@ PY := $(if $(wildcard $(VENV)/bin/python),$(CURDIR)/$(VENV)/bin/python,python3)
# Пусто — проверяются все change'и и спеки; `make validate-openspec CHANGE=<id>` — один change # Пусто — проверяются все change'и и спеки; `make validate-openspec CHANGE=<id>` — один change
CHANGE ?= CHANGE ?=
# Текущая версия модели данных — по ней рисуются диаграммы (make diagrams) # Текущая версия модели данных — по ней рисуются диаграммы (make diagrams)
DBML ?= model/data-model-v5.24.dbml DBML ?= model/data-model-v5.25.dbml
.PHONY: venv validate-contracts validate-openspec test-snapshot test-sync-statements sync-statements statements-check check diagrams regress .PHONY: venv validate-contracts validate-openspec test-snapshot test-sync-statements sync-statements statements-check check diagrams regress

View File

@ -1,12 +1,12 @@
# 04. Как читать модель данных v5.24 # 04. Как читать модель данных v5.25
Файлы: `docs/model/data-model-v5.24.dbml` (источник истины), `docs/model/entities-v5.24.md` (смысл таблиц; предыдущие Файлы: `docs/model/data-model-v5.25.dbml` (источник истины), `docs/model/entities-v5.25.md` (смысл таблиц; предыдущие
версии `data-model-v5.13…v5.20.dbml` и `entities-v5.13…v5.20.md` остаются как история), версии `data-model-v5.13…v5.20.dbml` и `entities-v5.13…v5.20.md` остаются как история),
`docs/model/diagrams/part01…09.{svg,png}` (диаграммы v5.21 по частям из таблицы ниже; перерисовываются из DBML командой `docs/model/diagrams/part01…10.{svg,png}` (диаграммы v5.25 по частям из таблицы ниже; перерисовываются из DBML командой
`make diagrams` в корне репозитория docs — скрипт `scripts/gen_model_diagrams.py`, нужен npx; при новой версии DBML `make diagrams` в корне репозитория docs — скрипт `scripts/gen_model_diagrams.py`, нужен npx; при новой версии DBML
обновить `DBML` в Makefile, а новую таблицу — добавить в раскладку частей скрипта и в эту таблицу). обновить `DBML` в Makefile, а новую таблицу — добавить в раскладку частей скрипта и в эту таблицу).
## Девять частей модели ## Десять частей модели
| Часть | Таблицы | Что это | | Часть | Таблицы | Что это |
|---|---|---| |---|---|---|
@ -19,6 +19,11 @@
| 07 Консолидация | `consolidation`, `consolidation_version`, `_status_history`, `_lock`, `_member`, `_document` | логическая консолидация (ГК × период) и её версии с периметром | | 07 Консолидация | `consolidation`, `consolidation_version`, `_status_history`, `_lock`, `_member`, `_document` | логическая консолидация (ГК × период) и её версии с периметром |
| 08 Корректировки и КФО | `correction`, `vgo_assignment`, `goodwill`, `kfo_result`, `kfo_result_line`, `kfo_result_line_company`, `client_kfo_line` | ручные решения и результат | | 08 Корректировки и КФО | `correction`, `vgo_assignment`, `goodwill`, `kfo_result`, `kfo_result_line`, `kfo_result_line_company`, `client_kfo_line` | ручные решения и результат |
| 09 Комментарии, аудит, ЕХ | `comment`, `audit_event`, `ex_snapshot`, `ex_snapshot_member`, `ex_snapshot_item` | полиморфные комментарии, append-only журнал, замороженные срезы | | 09 Комментарии, аудит, ЕХ | `comment`, `audit_event`, `ex_snapshot`, `ex_snapshot_member`, `ex_snapshot_item` | полиморфные комментарии, append-only журнал, замороженные срезы |
| 10 Метрики качества первички | `quality_intake_fact`, `quality_outcome_fact`, `quality_failure_fact` | факты распознавания и исхода документа, технические отказы — append-only, без FK |
**v5.25:** три таблицы фактов качества распознавания (`quality_intake_fact`/`_outcome_fact`/`_failure_fact`),
`s3_bucket_role.raw`, `stored_file.is_scan`, `recognition_job.raw_s3_object_id`, `permission_object.QUALITY_METRICS`
(AURORA-1759).
**v5.24:** новая таблица `vgo_assignment` — ручное решение аналитика по строке сводной ОСВ сверх автоматического разнесения по правилам ВГО (§5): привязка к правилу / снятие, «не учитывать в КФО» у нераспределённой строки (AURORA-1751). **v5.24:** новая таблица `vgo_assignment` — ручное решение аналитика по строке сводной ОСВ сверх автоматического разнесения по правилам ВГО (§5): привязка к правилу / снятие, «не учитывать в КФО» у нераспределённой строки (AURORA-1751).

1725
model/data-model-v5.25.dbml Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 323 KiB

After

Width:  |  Height:  |  Size: 330 KiB

View File

@ -4,60 +4,63 @@
<!-- Generated by graphviz version 2.47.0 (20210316.0004) <!-- Generated by graphviz version 2.47.0 (20210316.0004)
--> -->
<!-- Title: dbml Pages: 1 --> <!-- Title: dbml Pages: 1 -->
<svg width="2056pt" height="2852pt" <svg width="2056pt" height="2888pt"
viewBox="0.00 0.00 2055.66 2851.76" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> viewBox="0.00 0.00 2055.66 2887.76" 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 2847.76)"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 2883.76)">
<title>dbml</title> <title>dbml</title>
<!-- business_segment --> <!-- business_segment -->
<g id="business_segment" class="node"> <g id="business_segment" class="node">
<title>business_segment</title> <title>business_segment</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="1752.79" cy="-2164.24" rx="294.73" ry="172.57"/> <ellipse fill="none" stroke="black" stroke-width="0" cx="1752.79" cy="-2200.24" rx="294.73" ry="172.57"/>
<polygon fill="#29235c" stroke="transparent" points="1546.79,-2224.24 1546.79,-2284.24 1959.79,-2284.24 1959.79,-2224.24 1546.79,-2224.24"/> <polygon fill="#29235c" stroke="transparent" points="1546.79,-2260.24 1546.79,-2320.24 1959.79,-2320.24 1959.79,-2260.24 1546.79,-2260.24"/>
<polygon fill="none" stroke="#29235c" points="1546.79,-2224.24 1546.79,-2284.24 1959.79,-2284.24 1959.79,-2224.24 1546.79,-2224.24"/> <polygon fill="none" stroke="#29235c" points="1546.79,-2260.24 1546.79,-2320.24 1959.79,-2320.24 1959.79,-2260.24 1546.79,-2260.24"/>
<text text-anchor="start" x="1557.67" y="-2245.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;business_segment &#160;&#160;&#160;&#160;&#160;&#160;</text> <text text-anchor="start" x="1557.67" y="-2281.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;business_segment &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1546.79,-2164.24 1546.79,-2224.24 1959.79,-2224.24 1959.79,-2164.24 1546.79,-2164.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="1546.79,-2200.24 1546.79,-2260.24 1959.79,-2260.24 1959.79,-2200.24 1546.79,-2200.24"/>
<polygon fill="none" stroke="#29235c" points="1546.79,-2164.24 1546.79,-2224.24 1959.79,-2224.24 1959.79,-2164.24 1546.79,-2164.24"/> <polygon fill="none" stroke="#29235c" points="1546.79,-2200.24 1546.79,-2260.24 1959.79,-2260.24 1959.79,-2200.24 1546.79,-2200.24"/>
<text text-anchor="start" x="1684.83" y="-2185.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;DKB &#160;&#160;&#160;</text> <text text-anchor="start" x="1684.83" y="-2221.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;DKB &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1546.79,-2104.24 1546.79,-2164.24 1959.79,-2164.24 1959.79,-2104.24 1546.79,-2104.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="1546.79,-2140.24 1546.79,-2200.24 1959.79,-2200.24 1959.79,-2140.24 1546.79,-2140.24"/>
<polygon fill="none" stroke="#29235c" points="1546.79,-2104.24 1546.79,-2164.24 1959.79,-2164.24 1959.79,-2104.24 1546.79,-2104.24"/> <polygon fill="none" stroke="#29235c" points="1546.79,-2140.24 1546.79,-2200.24 1959.79,-2200.24 1959.79,-2140.24 1546.79,-2140.24"/>
<text text-anchor="start" x="1671.5" y="-2125.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;DMSB &#160;&#160;&#160;</text> <text text-anchor="start" x="1671.5" y="-2161.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;DMSB &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1546.79,-2044.24 1546.79,-2104.24 1959.79,-2104.24 1959.79,-2044.24 1546.79,-2044.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="1546.79,-2080.24 1546.79,-2140.24 1959.79,-2140.24 1959.79,-2080.24 1546.79,-2080.24"/>
<polygon fill="none" stroke="#29235c" points="1546.79,-2044.24 1546.79,-2104.24 1959.79,-2104.24 1959.79,-2044.24 1546.79,-2044.24"/> <polygon fill="none" stroke="#29235c" points="1546.79,-2080.24 1546.79,-2140.24 1959.79,-2140.24 1959.79,-2080.24 1546.79,-2080.24"/>
<text text-anchor="start" x="1692.84" y="-2065.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;DM &#160;&#160;&#160;</text> <text text-anchor="start" x="1692.84" y="-2101.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;DM &#160;&#160;&#160;</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="1545.29,-2043.24 1545.29,-2285.24 1960.29,-2285.24 1960.29,-2043.24 1545.29,-2043.24"/> <polygon fill="none" stroke="#29235c" stroke-width="2" points="1545.29,-2079.24 1545.29,-2321.24 1960.29,-2321.24 1960.29,-2079.24 1545.29,-2079.24"/>
</g> </g>
<!-- permission_object --> <!-- permission_object -->
<g id="permission_object" class="node"> <g id="permission_object" class="node">
<title>permission_object</title> <title>permission_object</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="1752.79" cy="-1087.24" rx="288.5" ry="384.83"/> <ellipse fill="none" stroke="black" stroke-width="0" cx="1752.79" cy="-1129.24" rx="288.5" ry="427.19"/>
<polygon fill="#29235c" stroke="transparent" points="1550.79,-1297.24 1550.79,-1357.24 1954.79,-1357.24 1954.79,-1297.24 1550.79,-1297.24"/> <polygon fill="#29235c" stroke="transparent" points="1550.79,-1369.24 1550.79,-1429.24 1954.79,-1429.24 1954.79,-1369.24 1550.79,-1369.24"/>
<polygon fill="none" stroke="#29235c" points="1550.79,-1297.24 1550.79,-1357.24 1954.79,-1357.24 1954.79,-1297.24 1550.79,-1297.24"/> <polygon fill="none" stroke="#29235c" points="1550.79,-1369.24 1550.79,-1429.24 1954.79,-1429.24 1954.79,-1369.24 1550.79,-1369.24"/>
<text text-anchor="start" x="1561.64" y="-1318.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;permission_object &#160;&#160;&#160;&#160;&#160;&#160;</text> <text text-anchor="start" x="1561.64" y="-1390.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;permission_object &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-1237.24 1550.79,-1297.24 1954.79,-1297.24 1954.79,-1237.24 1550.79,-1237.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-1309.24 1550.79,-1369.24 1954.79,-1369.24 1954.79,-1309.24 1550.79,-1309.24"/>
<polygon fill="none" stroke="#29235c" points="1550.79,-1237.24 1550.79,-1297.24 1954.79,-1297.24 1954.79,-1237.24 1550.79,-1237.24"/> <polygon fill="none" stroke="#29235c" points="1550.79,-1309.24 1550.79,-1369.24 1954.79,-1369.24 1954.79,-1309.24 1550.79,-1309.24"/>
<text text-anchor="start" x="1623.01" y="-1258.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;DIRECTORY &#160;&#160;&#160;</text> <text text-anchor="start" x="1623.01" y="-1330.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;DIRECTORY &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-1177.24 1550.79,-1237.24 1954.79,-1237.24 1954.79,-1177.24 1550.79,-1177.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-1249.24 1550.79,-1309.24 1954.79,-1309.24 1954.79,-1249.24 1550.79,-1249.24"/>
<polygon fill="none" stroke="#29235c" points="1550.79,-1177.24 1550.79,-1237.24 1954.79,-1237.24 1954.79,-1177.24 1550.79,-1177.24"/> <polygon fill="none" stroke="#29235c" points="1550.79,-1249.24 1550.79,-1309.24 1954.79,-1309.24 1954.79,-1249.24 1550.79,-1249.24"/>
<text text-anchor="start" x="1624.8" y="-1198.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;DOCUMENT &#160;&#160;&#160;</text> <text text-anchor="start" x="1624.8" y="-1270.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;DOCUMENT &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-1117.24 1550.79,-1177.24 1954.79,-1177.24 1954.79,-1117.24 1550.79,-1117.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-1189.24 1550.79,-1249.24 1954.79,-1249.24 1954.79,-1189.24 1550.79,-1189.24"/>
<polygon fill="none" stroke="#29235c" points="1550.79,-1117.24 1550.79,-1177.24 1954.79,-1177.24 1954.79,-1117.24 1550.79,-1117.24"/> <polygon fill="none" stroke="#29235c" points="1550.79,-1189.24 1550.79,-1249.24 1954.79,-1249.24 1954.79,-1189.24 1550.79,-1189.24"/>
<text text-anchor="start" x="1584.78" y="-1138.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;CONSOLIDATION &#160;&#160;&#160;</text> <text text-anchor="start" x="1584.78" y="-1210.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;CONSOLIDATION &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-1057.24 1550.79,-1117.24 1954.79,-1117.24 1954.79,-1057.24 1550.79,-1057.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-1129.24 1550.79,-1189.24 1954.79,-1189.24 1954.79,-1129.24 1550.79,-1129.24"/>
<polygon fill="none" stroke="#29235c" points="1550.79,-1057.24 1550.79,-1117.24 1954.79,-1117.24 1954.79,-1057.24 1550.79,-1057.24"/> <polygon fill="none" stroke="#29235c" points="1550.79,-1129.24 1550.79,-1189.24 1954.79,-1189.24 1954.79,-1129.24 1550.79,-1129.24"/>
<text text-anchor="start" x="1684.33" y="-1078.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;KFO &#160;&#160;&#160;</text> <text text-anchor="start" x="1684.33" y="-1150.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;KFO &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-997.24 1550.79,-1057.24 1954.79,-1057.24 1954.79,-997.24 1550.79,-997.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-1069.24 1550.79,-1129.24 1954.79,-1129.24 1954.79,-1069.24 1550.79,-1069.24"/>
<polygon fill="none" stroke="#29235c" points="1550.79,-997.24 1550.79,-1057.24 1954.79,-1057.24 1954.79,-997.24 1550.79,-997.24"/> <polygon fill="none" stroke="#29235c" points="1550.79,-1069.24 1550.79,-1129.24 1954.79,-1129.24 1954.79,-1069.24 1550.79,-1069.24"/>
<text text-anchor="start" x="1695.88" y="-1018.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;EX &#160;&#160;&#160;</text> <text text-anchor="start" x="1695.88" y="-1090.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;EX &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-937.24 1550.79,-997.24 1954.79,-997.24 1954.79,-937.24 1550.79,-937.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-1009.24 1550.79,-1069.24 1954.79,-1069.24 1954.79,-1009.24 1550.79,-1009.24"/>
<polygon fill="none" stroke="#29235c" points="1550.79,-937.24 1550.79,-997.24 1954.79,-997.24 1954.79,-937.24 1550.79,-937.24"/> <polygon fill="none" stroke="#29235c" points="1550.79,-1009.24 1550.79,-1069.24 1954.79,-1069.24 1954.79,-1009.24 1550.79,-1009.24"/>
<text text-anchor="start" x="1651.44" y="-958.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;EXPORT &#160;&#160;&#160;</text> <text text-anchor="start" x="1651.44" y="-1030.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;EXPORT &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-877.24 1550.79,-937.24 1954.79,-937.24 1954.79,-877.24 1550.79,-877.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-949.24 1550.79,-1009.24 1954.79,-1009.24 1954.79,-949.24 1550.79,-949.24"/>
<polygon fill="none" stroke="#29235c" points="1550.79,-877.24 1550.79,-937.24 1954.79,-937.24 1954.79,-877.24 1550.79,-877.24"/> <polygon fill="none" stroke="#29235c" points="1550.79,-949.24 1550.79,-1009.24 1954.79,-1009.24 1954.79,-949.24 1550.79,-949.24"/>
<text text-anchor="start" x="1662.11" y="-898.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;USERS &#160;&#160;&#160;</text> <text text-anchor="start" x="1662.11" y="-970.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;USERS &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-817.24 1550.79,-877.24 1954.79,-877.24 1954.79,-817.24 1550.79,-817.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-889.24 1550.79,-949.24 1954.79,-949.24 1954.79,-889.24 1550.79,-889.24"/>
<polygon fill="none" stroke="#29235c" points="1550.79,-817.24 1550.79,-877.24 1954.79,-877.24 1954.79,-817.24 1550.79,-817.24"/> <polygon fill="none" stroke="#29235c" points="1550.79,-889.24 1550.79,-949.24 1954.79,-949.24 1954.79,-889.24 1550.79,-889.24"/>
<text text-anchor="start" x="1669.23" y="-838.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;AUDIT &#160;&#160;&#160;</text> <text text-anchor="start" x="1669.23" y="-910.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;AUDIT &#160;&#160;&#160;</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="1549.79,-816.24 1549.79,-1358.24 1955.79,-1358.24 1955.79,-816.24 1549.79,-816.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-829.24 1550.79,-889.24 1954.79,-889.24 1954.79,-829.24 1550.79,-829.24"/>
<polygon fill="none" stroke="#29235c" points="1550.79,-829.24 1550.79,-889.24 1954.79,-889.24 1954.79,-829.24 1550.79,-829.24"/>
<text text-anchor="start" x="1567.89" y="-850.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;QUALITY_METRICS &#160;&#160;&#160;</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="1549.79,-828.24 1549.79,-1430.24 1955.79,-1430.24 1955.79,-828.24 1549.79,-828.24"/>
</g> </g>
<!-- permission_action --> <!-- permission_action -->
<g id="permission_action" class="node"> <g id="permission_action" class="node">
@ -93,131 +96,131 @@
<g id="regional_office" class="node"> <g id="regional_office" class="node">
<title>regional_office</title> <title>regional_office</title>
<g id="a_regional_office"><a xlink:title="regional_office&#10;STUB — полное определение в part01_groups_entities"> <g id="a_regional_office"><a xlink:title="regional_office&#10;STUB — полное определение в part01_groups_entities">
<ellipse fill="none" stroke="black" stroke-width="0" cx="1752.79" cy="-2644.24" rx="253.29" ry="87.86"/> <ellipse fill="none" stroke="black" stroke-width="0" cx="1752.79" cy="-2680.24" rx="253.29" ry="87.86"/>
<polygon fill="#1d71b8" stroke="transparent" points="1575.79,-2644.24 1575.79,-2704.24 1929.79,-2704.24 1929.79,-2644.24 1575.79,-2644.24"/> <polygon fill="#1d71b8" stroke="transparent" points="1575.79,-2680.24 1575.79,-2740.24 1929.79,-2740.24 1929.79,-2680.24 1575.79,-2680.24"/>
<polygon fill="none" stroke="#29235c" points="1575.79,-2644.24 1575.79,-2704.24 1929.79,-2704.24 1929.79,-2644.24 1575.79,-2644.24"/> <polygon fill="none" stroke="#29235c" points="1575.79,-2680.24 1575.79,-2740.24 1929.79,-2740.24 1929.79,-2680.24 1575.79,-2680.24"/>
<text text-anchor="start" x="1586.52" y="-2665.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;regional_office &#160;&#160;&#160;&#160;&#160;&#160;</text> <text text-anchor="start" x="1586.52" y="-2701.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;regional_office &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1575.79,-2584.24 1575.79,-2644.24 1929.79,-2644.24 1929.79,-2584.24 1575.79,-2584.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="1575.79,-2620.24 1575.79,-2680.24 1929.79,-2680.24 1929.79,-2620.24 1575.79,-2620.24"/>
<polygon fill="none" stroke="#29235c" points="1575.79,-2584.24 1575.79,-2644.24 1929.79,-2644.24 1929.79,-2584.24 1575.79,-2584.24"/> <polygon fill="none" stroke="#29235c" points="1575.79,-2620.24 1575.79,-2680.24 1929.79,-2680.24 1929.79,-2620.24 1575.79,-2620.24"/>
<text text-anchor="start" x="1586.79" y="-2605.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text> <text text-anchor="start" x="1586.79" y="-2641.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text>
<text text-anchor="start" x="1611.68" y="-2605.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text> <text text-anchor="start" x="1611.68" y="-2641.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="1858.33" y="-2605.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text> <text text-anchor="start" x="1858.33" y="-2641.44" 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="1574.79,-2583.24 1574.79,-2705.24 1930.79,-2705.24 1930.79,-2583.24 1574.79,-2583.24"/> <polygon fill="none" stroke="#29235c" stroke-width="2" points="1574.79,-2619.24 1574.79,-2741.24 1930.79,-2741.24 1930.79,-2619.24 1574.79,-2619.24"/>
</a> </a>
</g> </g>
</g> </g>
<!-- app_user --> <!-- app_user -->
<g id="app_user" class="node"> <g id="app_user" class="node">
<title>app_user</title> <title>app_user</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="1001.91" cy="-2374.24" rx="420.04" ry="469.54"/> <ellipse fill="none" stroke="black" stroke-width="0" cx="1001.91" cy="-2410.24" rx="420.04" ry="469.54"/>
<polygon fill="#1d71b8" stroke="transparent" points="706.91,-2644.24 706.91,-2704.24 1296.91,-2704.24 1296.91,-2644.24 706.91,-2644.24"/> <polygon fill="#1d71b8" stroke="transparent" points="706.91,-2680.24 706.91,-2740.24 1296.91,-2740.24 1296.91,-2680.24 706.91,-2680.24"/>
<polygon fill="none" stroke="#29235c" points="706.91,-2644.24 706.91,-2704.24 1296.91,-2704.24 1296.91,-2644.24 706.91,-2644.24"/> <polygon fill="none" stroke="#29235c" points="706.91,-2680.24 706.91,-2740.24 1296.91,-2740.24 1296.91,-2680.24 706.91,-2680.24"/>
<text text-anchor="start" x="872.97" y="-2665.44" 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> <text text-anchor="start" x="872.97" y="-2701.44" 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="706.91,-2584.24 706.91,-2644.24 1296.91,-2644.24 1296.91,-2584.24 706.91,-2584.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2620.24 706.91,-2680.24 1296.91,-2680.24 1296.91,-2620.24 706.91,-2620.24"/>
<polygon fill="none" stroke="#29235c" points="706.91,-2584.24 706.91,-2644.24 1296.91,-2644.24 1296.91,-2584.24 706.91,-2584.24"/> <polygon fill="none" stroke="#29235c" points="706.91,-2620.24 706.91,-2680.24 1296.91,-2680.24 1296.91,-2620.24 706.91,-2620.24"/>
<text text-anchor="start" x="717.91" y="-2605.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text> <text text-anchor="start" x="717.91" y="-2641.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text>
<text text-anchor="start" x="742.8" y="-2605.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text> <text text-anchor="start" x="742.8" y="-2641.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="1225.44" y="-2605.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text> <text text-anchor="start" x="1225.44" y="-2641.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2524.24 706.91,-2584.24 1296.91,-2584.24 1296.91,-2524.24 706.91,-2524.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2560.24 706.91,-2620.24 1296.91,-2620.24 1296.91,-2560.24 706.91,-2560.24"/>
<polygon fill="none" stroke="#29235c" points="706.91,-2524.24 706.91,-2584.24 1296.91,-2584.24 1296.91,-2524.24 706.91,-2524.24"/> <polygon fill="none" stroke="#29235c" points="706.91,-2560.24 706.91,-2620.24 1296.91,-2620.24 1296.91,-2560.24 706.91,-2560.24"/>
<text text-anchor="start" x="717.91" y="-2544.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">external_id &#160;&#160;&#160;</text> <text text-anchor="start" x="717.91" y="-2580.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">external_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="1179.24" y="-2545.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text> <text text-anchor="start" x="1179.24" y="-2581.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2464.24 706.91,-2524.24 1296.91,-2524.24 1296.91,-2464.24 706.91,-2464.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2500.24 706.91,-2560.24 1296.91,-2560.24 1296.91,-2500.24 706.91,-2500.24"/>
<polygon fill="none" stroke="#29235c" points="706.91,-2464.24 706.91,-2524.24 1296.91,-2524.24 1296.91,-2464.24 706.91,-2464.24"/> <polygon fill="none" stroke="#29235c" points="706.91,-2500.24 706.91,-2560.24 1296.91,-2560.24 1296.91,-2500.24 706.91,-2500.24"/>
<text text-anchor="start" x="717.91" y="-2484.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">email &#160;&#160;&#160;</text> <text text-anchor="start" x="717.91" y="-2520.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">email &#160;&#160;&#160;</text>
<text text-anchor="start" x="1179.24" y="-2485.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text> <text text-anchor="start" x="1179.24" y="-2521.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2404.24 706.91,-2464.24 1296.91,-2464.24 1296.91,-2404.24 706.91,-2404.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2440.24 706.91,-2500.24 1296.91,-2500.24 1296.91,-2440.24 706.91,-2440.24"/>
<polygon fill="none" stroke="#29235c" points="706.91,-2404.24 706.91,-2464.24 1296.91,-2464.24 1296.91,-2404.24 706.91,-2404.24"/> <polygon fill="none" stroke="#29235c" points="706.91,-2440.24 706.91,-2500.24 1296.91,-2500.24 1296.91,-2440.24 706.91,-2440.24"/>
<text text-anchor="start" x="717.91" y="-2424.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">full_name &#160;&#160;&#160;</text> <text text-anchor="start" x="717.91" y="-2460.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">full_name &#160;&#160;&#160;</text>
<text text-anchor="start" x="1140.14" y="-2425.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text> <text text-anchor="start" x="1140.14" y="-2461.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<text text-anchor="start" x="1246.82" y="-2425.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text> <text text-anchor="start" x="1246.82" y="-2461.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1255.71" y="-2425.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text> <text text-anchor="start" x="1255.71" y="-2461.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2344.24 706.91,-2404.24 1296.91,-2404.24 1296.91,-2344.24 706.91,-2344.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2380.24 706.91,-2440.24 1296.91,-2440.24 1296.91,-2380.24 706.91,-2380.24"/>
<polygon fill="none" stroke="#29235c" points="706.91,-2344.24 706.91,-2404.24 1296.91,-2404.24 1296.91,-2344.24 706.91,-2344.24"/> <polygon fill="none" stroke="#29235c" points="706.91,-2380.24 706.91,-2440.24 1296.91,-2440.24 1296.91,-2380.24 706.91,-2380.24"/>
<text text-anchor="start" x="717.91" y="-2364.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">employee_no &#160;&#160;&#160;</text> <text text-anchor="start" x="717.91" y="-2400.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">employee_no &#160;&#160;&#160;</text>
<text text-anchor="start" x="1179.24" y="-2365.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text> <text text-anchor="start" x="1179.24" y="-2401.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2284.24 706.91,-2344.24 1296.91,-2344.24 1296.91,-2284.24 706.91,-2284.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2320.24 706.91,-2380.24 1296.91,-2380.24 1296.91,-2320.24 706.91,-2320.24"/>
<polygon fill="none" stroke="#29235c" points="706.91,-2284.24 706.91,-2344.24 1296.91,-2344.24 1296.91,-2284.24 706.91,-2284.24"/> <polygon fill="none" stroke="#29235c" points="706.91,-2320.24 706.91,-2380.24 1296.91,-2380.24 1296.91,-2320.24 706.91,-2320.24"/>
<text text-anchor="start" x="717.91" y="-2304.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">regional_office_id &#160;&#160;&#160;</text> <text text-anchor="start" x="717.91" y="-2340.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">regional_office_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="1186.35" y="-2305.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text> <text text-anchor="start" x="1186.35" y="-2341.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<text text-anchor="start" x="1246.82" y="-2305.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text> <text text-anchor="start" x="1246.82" y="-2341.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1255.71" y="-2305.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text> <text text-anchor="start" x="1255.71" y="-2341.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2224.24 706.91,-2284.24 1296.91,-2284.24 1296.91,-2224.24 706.91,-2224.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2260.24 706.91,-2320.24 1296.91,-2320.24 1296.91,-2260.24 706.91,-2260.24"/>
<polygon fill="none" stroke="#29235c" points="706.91,-2224.24 706.91,-2284.24 1296.91,-2284.24 1296.91,-2224.24 706.91,-2224.24"/> <polygon fill="none" stroke="#29235c" points="706.91,-2260.24 706.91,-2320.24 1296.91,-2320.24 1296.91,-2260.24 706.91,-2260.24"/>
<text text-anchor="start" x="717.75" y="-2244.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">business_segment &#160;&#160;&#160;</text> <text text-anchor="start" x="717.75" y="-2280.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">business_segment &#160;&#160;&#160;</text>
<text text-anchor="start" x="1019.54" y="-2245.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">business_segment</text> <text text-anchor="start" x="1019.54" y="-2281.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">business_segment</text>
<polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2164.24 706.91,-2224.24 1296.91,-2224.24 1296.91,-2164.24 706.91,-2164.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2200.24 706.91,-2260.24 1296.91,-2260.24 1296.91,-2200.24 706.91,-2200.24"/>
<polygon fill="none" stroke="#29235c" points="706.91,-2164.24 706.91,-2224.24 1296.91,-2224.24 1296.91,-2164.24 706.91,-2164.24"/> <polygon fill="none" stroke="#29235c" points="706.91,-2200.24 706.91,-2260.24 1296.91,-2260.24 1296.91,-2200.24 706.91,-2200.24"/>
<text text-anchor="start" x="717.91" y="-2184.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">is_active &#160;&#160;&#160;</text> <text text-anchor="start" x="717.91" y="-2220.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">is_active &#160;&#160;&#160;</text>
<text text-anchor="start" x="1132.98" y="-2185.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">boolean</text> <text text-anchor="start" x="1132.98" y="-2221.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">boolean</text>
<text text-anchor="start" x="1246.82" y="-2185.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text> <text text-anchor="start" x="1246.82" y="-2221.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1255.71" y="-2185.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text> <text text-anchor="start" x="1255.71" y="-2221.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2104.24 706.91,-2164.24 1296.91,-2164.24 1296.91,-2104.24 706.91,-2104.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2140.24 706.91,-2200.24 1296.91,-2200.24 1296.91,-2140.24 706.91,-2140.24"/>
<polygon fill="none" stroke="#29235c" points="706.91,-2104.24 706.91,-2164.24 1296.91,-2164.24 1296.91,-2104.24 706.91,-2104.24"/> <polygon fill="none" stroke="#29235c" points="706.91,-2140.24 706.91,-2200.24 1296.91,-2200.24 1296.91,-2140.24 706.91,-2140.24"/>
<text text-anchor="start" x="717.91" y="-2124.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">created_at &#160;&#160;&#160;</text> <text text-anchor="start" x="717.91" y="-2160.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">created_at &#160;&#160;&#160;</text>
<text text-anchor="start" x="1113.46" y="-2125.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text> <text text-anchor="start" x="1113.46" y="-2161.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text>
<polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2044.24 706.91,-2104.24 1296.91,-2104.24 1296.91,-2044.24 706.91,-2044.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="706.91,-2080.24 706.91,-2140.24 1296.91,-2140.24 1296.91,-2080.24 706.91,-2080.24"/>
<polygon fill="none" stroke="#29235c" points="706.91,-2044.24 706.91,-2104.24 1296.91,-2104.24 1296.91,-2044.24 706.91,-2044.24"/> <polygon fill="none" stroke="#29235c" points="706.91,-2080.24 706.91,-2140.24 1296.91,-2140.24 1296.91,-2080.24 706.91,-2080.24"/>
<text text-anchor="start" x="717.91" y="-2064.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">updated_at &#160;&#160;&#160;</text> <text text-anchor="start" x="717.91" y="-2100.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">updated_at &#160;&#160;&#160;</text>
<text text-anchor="start" x="1113.46" y="-2065.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text> <text text-anchor="start" x="1113.46" y="-2101.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="705.91,-2043.24 705.91,-2705.24 1297.91,-2705.24 1297.91,-2043.24 705.91,-2043.24"/> <polygon fill="none" stroke="#29235c" stroke-width="2" points="705.91,-2079.24 705.91,-2741.24 1297.91,-2741.24 1297.91,-2079.24 705.91,-2079.24"/>
</g> </g>
<!-- app_user&#45;&gt;business_segment --> <!-- app_user&#45;&gt;business_segment -->
<g id="edge13" class="edge"> <g id="edge13" class="edge">
<title>app_user:e&#45;&gt;business_segment:w</title> <title>app_user:e&#45;&gt;business_segment:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M1297.91,-2254.24C1408.08,-2254.24 1435.62,-2254.24 1545.79,-2254.24"/> <path fill="none" stroke="#29235c" stroke-width="3" d="M1297.91,-2290.24C1408.08,-2290.24 1435.62,-2290.24 1545.79,-2290.24"/>
</g> </g>
<!-- app_user&#45;&gt;regional_office --> <!-- app_user&#45;&gt;regional_office -->
<!-- app_user&#45;&gt;regional_office --> <!-- app_user&#45;&gt;regional_office -->
<g id="edge2" class="edge"> <g id="edge2" class="edge">
<title>app_user:e&#45;&gt;regional_office:w</title> <title>app_user:e&#45;&gt;regional_office:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M1297.91,-2314.24C1475.9,-2314.24 1396.53,-2602.92 1564.71,-2613.92"/> <path fill="none" stroke="#29235c" stroke-width="3" d="M1297.91,-2350.24C1475.9,-2350.24 1396.53,-2638.92 1564.71,-2649.92"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1564.69,-2617.42 1574.79,-2614.24 1564.91,-2610.42 1564.69,-2617.42"/> <polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="1564.69,-2653.42 1574.79,-2650.24 1564.91,-2646.42 1564.69,-2653.42"/>
<text text-anchor="middle" x="1583.69" y="-2623.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text> <text text-anchor="middle" x="1583.69" y="-2659.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="1304.13" y="-2323.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text> <text text-anchor="middle" x="1304.13" y="-2359.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g> </g>
<!-- role --> <!-- role -->
<g id="role" class="node"> <g id="role" class="node">
<title>role</title> <title>role</title>
<g id="a_role"><a xlink:title="role&#10;Роль. Полномочия — через role_permission (v5.13); код роли в бизнес&#45;логике больше не проверяется"> <g id="a_role"><a xlink:title="role&#10;Роль. Полномочия — через role_permission (v5.13); код роли в бизнес&#45;логике больше не проверяется">
<ellipse fill="none" stroke="black" stroke-width="0" cx="1001.91" cy="-1587.24" rx="251.05" ry="299.63"/> <ellipse fill="none" stroke="black" stroke-width="0" cx="1001.91" cy="-1623.24" rx="251.05" ry="299.63"/>
<polygon fill="#1d71b8" stroke="transparent" points="826.91,-1737.24 826.91,-1797.24 1177.91,-1797.24 1177.91,-1737.24 826.91,-1737.24"/> <polygon fill="#1d71b8" stroke="transparent" points="826.91,-1773.24 826.91,-1833.24 1177.91,-1833.24 1177.91,-1773.24 826.91,-1773.24"/>
<polygon fill="none" stroke="#29235c" points="826.91,-1737.24 826.91,-1797.24 1177.91,-1797.24 1177.91,-1737.24 826.91,-1737.24"/> <polygon fill="none" stroke="#29235c" points="826.91,-1773.24 826.91,-1833.24 1177.91,-1833.24 1177.91,-1773.24 826.91,-1773.24"/>
<text text-anchor="start" x="913.49" y="-1758.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;role &#160;&#160;&#160;&#160;&#160;&#160;</text> <text text-anchor="start" x="913.49" y="-1794.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;role &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="826.91,-1677.24 826.91,-1737.24 1177.91,-1737.24 1177.91,-1677.24 826.91,-1677.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="826.91,-1713.24 826.91,-1773.24 1177.91,-1773.24 1177.91,-1713.24 826.91,-1713.24"/>
<polygon fill="none" stroke="#29235c" points="826.91,-1677.24 826.91,-1737.24 1177.91,-1737.24 1177.91,-1677.24 826.91,-1677.24"/> <polygon fill="none" stroke="#29235c" points="826.91,-1713.24 826.91,-1773.24 1177.91,-1773.24 1177.91,-1713.24 826.91,-1713.24"/>
<text text-anchor="start" x="837.91" y="-1698.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text> <text text-anchor="start" x="837.91" y="-1734.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text>
<text text-anchor="start" x="862.8" y="-1698.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text> <text text-anchor="start" x="862.8" y="-1734.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="1106.44" y="-1698.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text> <text text-anchor="start" x="1106.44" y="-1734.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="826.91,-1617.24 826.91,-1677.24 1177.91,-1677.24 1177.91,-1617.24 826.91,-1617.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="826.91,-1653.24 826.91,-1713.24 1177.91,-1713.24 1177.91,-1653.24 826.91,-1653.24"/>
<polygon fill="none" stroke="#29235c" points="826.91,-1617.24 826.91,-1677.24 1177.91,-1677.24 1177.91,-1617.24 826.91,-1617.24"/> <polygon fill="none" stroke="#29235c" points="826.91,-1653.24 826.91,-1713.24 1177.91,-1713.24 1177.91,-1653.24 826.91,-1653.24"/>
<text text-anchor="start" x="837.91" y="-1637.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">code &#160;&#160;&#160;</text> <text text-anchor="start" x="837.91" y="-1673.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">code &#160;&#160;&#160;</text>
<text text-anchor="start" x="1021.14" y="-1638.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text> <text text-anchor="start" x="1021.14" y="-1674.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<text text-anchor="start" x="1127.82" y="-1638.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text> <text text-anchor="start" x="1127.82" y="-1674.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1136.71" y="-1638.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text> <text text-anchor="start" x="1136.71" y="-1674.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="826.91,-1557.24 826.91,-1617.24 1177.91,-1617.24 1177.91,-1557.24 826.91,-1557.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="826.91,-1593.24 826.91,-1653.24 1177.91,-1653.24 1177.91,-1593.24 826.91,-1593.24"/>
<polygon fill="none" stroke="#29235c" points="826.91,-1557.24 826.91,-1617.24 1177.91,-1617.24 1177.91,-1557.24 826.91,-1557.24"/> <polygon fill="none" stroke="#29235c" points="826.91,-1593.24 826.91,-1653.24 1177.91,-1653.24 1177.91,-1593.24 826.91,-1593.24"/>
<text text-anchor="start" x="837.91" y="-1577.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">name &#160;&#160;&#160;</text> <text text-anchor="start" x="837.91" y="-1613.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">name &#160;&#160;&#160;</text>
<text text-anchor="start" x="1021.14" y="-1578.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text> <text text-anchor="start" x="1021.14" y="-1614.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<text text-anchor="start" x="1127.82" y="-1578.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text> <text text-anchor="start" x="1127.82" y="-1614.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1136.71" y="-1578.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text> <text text-anchor="start" x="1136.71" y="-1614.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="826.91,-1497.24 826.91,-1557.24 1177.91,-1557.24 1177.91,-1497.24 826.91,-1497.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="826.91,-1533.24 826.91,-1593.24 1177.91,-1593.24 1177.91,-1533.24 826.91,-1533.24"/>
<polygon fill="none" stroke="#29235c" points="826.91,-1497.24 826.91,-1557.24 1177.91,-1557.24 1177.91,-1497.24 826.91,-1497.24"/> <polygon fill="none" stroke="#29235c" points="826.91,-1533.24 826.91,-1593.24 1177.91,-1593.24 1177.91,-1533.24 826.91,-1533.24"/>
<text text-anchor="start" x="837.91" y="-1517.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">description &#160;&#160;&#160;</text> <text text-anchor="start" x="837.91" y="-1553.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">description &#160;&#160;&#160;</text>
<text text-anchor="start" x="1115.33" y="-1518.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">text</text> <text text-anchor="start" x="1115.33" y="-1554.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">text</text>
<polygon fill="#e7e2dd" stroke="transparent" points="826.91,-1437.24 826.91,-1497.24 1177.91,-1497.24 1177.91,-1437.24 826.91,-1437.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="826.91,-1473.24 826.91,-1533.24 1177.91,-1533.24 1177.91,-1473.24 826.91,-1473.24"/>
<polygon fill="none" stroke="#29235c" points="826.91,-1437.24 826.91,-1497.24 1177.91,-1497.24 1177.91,-1437.24 826.91,-1437.24"/> <polygon fill="none" stroke="#29235c" points="826.91,-1473.24 826.91,-1533.24 1177.91,-1533.24 1177.91,-1473.24 826.91,-1473.24"/>
<text text-anchor="start" x="837.51" y="-1457.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">is_system &#160;&#160;&#160;</text> <text text-anchor="start" x="837.51" y="-1493.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">is_system &#160;&#160;&#160;</text>
<text text-anchor="start" x="1014.45" y="-1458.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">boolean</text> <text text-anchor="start" x="1014.45" y="-1494.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">boolean</text>
<text text-anchor="start" x="1128.28" y="-1458.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text> <text text-anchor="start" x="1128.28" y="-1494.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1137.17" y="-1458.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text> <text text-anchor="start" x="1137.17" y="-1494.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="826.91,-1377.24 826.91,-1437.24 1177.91,-1437.24 1177.91,-1377.24 826.91,-1377.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="826.91,-1413.24 826.91,-1473.24 1177.91,-1473.24 1177.91,-1413.24 826.91,-1413.24"/>
<polygon fill="none" stroke="#29235c" points="826.91,-1377.24 826.91,-1437.24 1177.91,-1437.24 1177.91,-1377.24 826.91,-1377.24"/> <polygon fill="none" stroke="#29235c" points="826.91,-1413.24 826.91,-1473.24 1177.91,-1473.24 1177.91,-1413.24 826.91,-1413.24"/>
<text text-anchor="start" x="837.91" y="-1397.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">is_active &#160;&#160;&#160;</text> <text text-anchor="start" x="837.91" y="-1433.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">is_active &#160;&#160;&#160;</text>
<text text-anchor="start" x="1013.98" y="-1398.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">boolean</text> <text text-anchor="start" x="1013.98" y="-1434.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">boolean</text>
<text text-anchor="start" x="1127.82" y="-1398.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text> <text text-anchor="start" x="1127.82" y="-1434.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1136.71" y="-1398.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text> <text text-anchor="start" x="1136.71" y="-1434.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="825.41,-1376.24 825.41,-1798.24 1178.41,-1798.24 1178.41,-1376.24 825.41,-1376.24"/> <polygon fill="none" stroke="#29235c" stroke-width="2" points="825.41,-1412.24 825.41,-1834.24 1178.41,-1834.24 1178.41,-1412.24 825.41,-1412.24"/>
</a> </a>
</g> </g>
</g> </g>
@ -225,88 +228,88 @@
<g id="permission" class="node"> <g id="permission" class="node">
<title>permission</title> <title>permission</title>
<g id="a_permission"><a xlink:title="permission&#10;Справочник прав (seed, привязан к коду). Ограничения по ЗО/филиалу и статусу КФО — отдельный policy&#45;слой поверх прав: право говорит «может», policy — «эту ли и сейчас ли»"> <g id="a_permission"><a xlink:title="permission&#10;Справочник прав (seed, привязан к коду). Ограничения по ЗО/филиалу и статусу КФО — отдельный policy&#45;слой поверх прав: право говорит «может», policy — «эту ли и сейчас ли»">
<ellipse fill="none" stroke="black" stroke-width="0" cx="1001.91" cy="-969.24" rx="368.31" ry="299.63"/> <ellipse fill="none" stroke="black" stroke-width="0" cx="1001.91" cy="-1005.24" rx="368.31" ry="299.63"/>
<polygon fill="#1d71b8" stroke="transparent" points="743.91,-1119.24 743.91,-1179.24 1260.91,-1179.24 1260.91,-1119.24 743.91,-1119.24"/> <polygon fill="#1d71b8" stroke="transparent" points="743.91,-1155.24 743.91,-1215.24 1260.91,-1215.24 1260.91,-1155.24 743.91,-1155.24"/>
<polygon fill="none" stroke="#29235c" points="743.91,-1119.24 743.91,-1179.24 1260.91,-1179.24 1260.91,-1119.24 743.91,-1119.24"/> <polygon fill="none" stroke="#29235c" points="743.91,-1155.24 743.91,-1215.24 1260.91,-1215.24 1260.91,-1155.24 743.91,-1155.24"/>
<text text-anchor="start" x="862.83" y="-1140.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;permission &#160;&#160;&#160;&#160;&#160;&#160;</text> <text text-anchor="start" x="862.83" y="-1176.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;permission &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="743.91,-1059.24 743.91,-1119.24 1260.91,-1119.24 1260.91,-1059.24 743.91,-1059.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="743.91,-1095.24 743.91,-1155.24 1260.91,-1155.24 1260.91,-1095.24 743.91,-1095.24"/>
<polygon fill="none" stroke="#29235c" points="743.91,-1059.24 743.91,-1119.24 1260.91,-1119.24 1260.91,-1059.24 743.91,-1059.24"/> <polygon fill="none" stroke="#29235c" points="743.91,-1095.24 743.91,-1155.24 1260.91,-1155.24 1260.91,-1095.24 743.91,-1095.24"/>
<text text-anchor="start" x="754.91" y="-1080.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text> <text text-anchor="start" x="754.91" y="-1116.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text>
<text text-anchor="start" x="779.8" y="-1080.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text> <text text-anchor="start" x="779.8" y="-1116.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="1189.44" y="-1080.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text> <text text-anchor="start" x="1189.44" y="-1116.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="743.91,-999.24 743.91,-1059.24 1260.91,-1059.24 1260.91,-999.24 743.91,-999.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="743.91,-1035.24 743.91,-1095.24 1260.91,-1095.24 1260.91,-1035.24 743.91,-1035.24"/>
<polygon fill="none" stroke="#29235c" points="743.91,-999.24 743.91,-1059.24 1260.91,-1059.24 1260.91,-999.24 743.91,-999.24"/> <polygon fill="none" stroke="#29235c" points="743.91,-1035.24 743.91,-1095.24 1260.91,-1095.24 1260.91,-1035.24 743.91,-1035.24"/>
<text text-anchor="start" x="754.91" y="-1019.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">code &#160;&#160;&#160;</text> <text text-anchor="start" x="754.91" y="-1055.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">code &#160;&#160;&#160;</text>
<text text-anchor="start" x="1104.14" y="-1020.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text> <text text-anchor="start" x="1104.14" y="-1056.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<text text-anchor="start" x="1210.82" y="-1020.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text> <text text-anchor="start" x="1210.82" y="-1056.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1219.71" y="-1020.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text> <text text-anchor="start" x="1219.71" y="-1056.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="743.91,-939.24 743.91,-999.24 1260.91,-999.24 1260.91,-939.24 743.91,-939.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="743.91,-975.24 743.91,-1035.24 1260.91,-1035.24 1260.91,-975.24 743.91,-975.24"/>
<polygon fill="none" stroke="#29235c" points="743.91,-939.24 743.91,-999.24 1260.91,-999.24 1260.91,-939.24 743.91,-939.24"/> <polygon fill="none" stroke="#29235c" points="743.91,-975.24 743.91,-1035.24 1260.91,-1035.24 1260.91,-975.24 743.91,-975.24"/>
<text text-anchor="start" x="754.81" y="-959.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">object_type &#160;&#160;&#160;</text> <text text-anchor="start" x="754.81" y="-995.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">object_type &#160;&#160;&#160;</text>
<text text-anchor="start" x="953.46" y="-960.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">permission_object</text> <text text-anchor="start" x="953.46" y="-996.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">permission_object</text>
<text text-anchor="start" x="1211.27" y="-960.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text> <text text-anchor="start" x="1211.27" y="-996.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1220.16" y="-960.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text> <text text-anchor="start" x="1220.16" y="-996.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="743.91,-879.24 743.91,-939.24 1260.91,-939.24 1260.91,-879.24 743.91,-879.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="743.91,-915.24 743.91,-975.24 1260.91,-975.24 1260.91,-915.24 743.91,-915.24"/>
<polygon fill="none" stroke="#29235c" points="743.91,-879.24 743.91,-939.24 1260.91,-939.24 1260.91,-879.24 743.91,-879.24"/> <polygon fill="none" stroke="#29235c" points="743.91,-915.24 743.91,-975.24 1260.91,-975.24 1260.91,-915.24 743.91,-915.24"/>
<text text-anchor="start" x="754.91" y="-899.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">action &#160;&#160;&#160;</text> <text text-anchor="start" x="754.91" y="-935.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">action &#160;&#160;&#160;</text>
<text text-anchor="start" x="953.01" y="-900.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">permission_action</text> <text text-anchor="start" x="953.01" y="-936.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">permission_action</text>
<text text-anchor="start" x="1210.82" y="-900.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text> <text text-anchor="start" x="1210.82" y="-936.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1219.71" y="-900.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text> <text text-anchor="start" x="1219.71" y="-936.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="743.91,-819.24 743.91,-879.24 1260.91,-879.24 1260.91,-819.24 743.91,-819.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="743.91,-855.24 743.91,-915.24 1260.91,-915.24 1260.91,-855.24 743.91,-855.24"/>
<polygon fill="none" stroke="#29235c" points="743.91,-819.24 743.91,-879.24 1260.91,-879.24 1260.91,-819.24 743.91,-819.24"/> <polygon fill="none" stroke="#29235c" points="743.91,-855.24 743.91,-915.24 1260.91,-915.24 1260.91,-855.24 743.91,-855.24"/>
<text text-anchor="start" x="754.91" y="-839.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">name &#160;&#160;&#160;</text> <text text-anchor="start" x="754.91" y="-875.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">name &#160;&#160;&#160;</text>
<text text-anchor="start" x="1104.14" y="-840.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text> <text text-anchor="start" x="1104.14" y="-876.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<text text-anchor="start" x="1210.82" y="-840.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text> <text text-anchor="start" x="1210.82" y="-876.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="1219.71" y="-840.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text> <text text-anchor="start" x="1219.71" y="-876.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="743.91,-759.24 743.91,-819.24 1260.91,-819.24 1260.91,-759.24 743.91,-759.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="743.91,-795.24 743.91,-855.24 1260.91,-855.24 1260.91,-795.24 743.91,-795.24"/>
<polygon fill="none" stroke="#29235c" points="743.91,-759.24 743.91,-819.24 1260.91,-819.24 1260.91,-759.24 743.91,-759.24"/> <polygon fill="none" stroke="#29235c" points="743.91,-795.24 743.91,-855.24 1260.91,-855.24 1260.91,-795.24 743.91,-795.24"/>
<text text-anchor="start" x="754.91" y="-779.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">description &#160;&#160;&#160;</text> <text text-anchor="start" x="754.91" y="-815.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">description &#160;&#160;&#160;</text>
<text text-anchor="start" x="1198.33" y="-780.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">text</text> <text text-anchor="start" x="1198.33" y="-816.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">text</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="742.41,-758.24 742.41,-1180.24 1261.41,-1180.24 1261.41,-758.24 742.41,-758.24"/> <polygon fill="none" stroke="#29235c" stroke-width="2" points="742.41,-794.24 742.41,-1216.24 1261.41,-1216.24 1261.41,-794.24 742.41,-794.24"/>
</a> </a>
</g> </g>
</g> </g>
<!-- permission&#45;&gt;permission_object --> <!-- permission&#45;&gt;permission_object -->
<g id="edge14" class="edge"> <g id="edge14" class="edge">
<title>permission:e&#45;&gt;permission_object:w</title> <title>permission:e&#45;&gt;permission_object:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M1261.91,-969.24C1466.08,-969.24 1345.62,-1327.24 1549.79,-1327.24"/> <path fill="none" stroke="#29235c" stroke-width="3" d="M1261.91,-1005.24C1478.78,-1005.24 1332.92,-1399.24 1549.79,-1399.24"/>
</g> </g>
<!-- permission&#45;&gt;permission_action --> <!-- permission&#45;&gt;permission_action -->
<g id="edge15" class="edge"> <g id="edge15" class="edge">
<title>permission:e&#45;&gt;permission_action:w</title> <title>permission:e&#45;&gt;permission_action:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M1261.91,-909.24C1465.74,-909.24 1345.96,-552.24 1549.79,-552.24"/> <path fill="none" stroke="#29235c" stroke-width="3" d="M1261.91,-945.24C1478.42,-945.24 1333.28,-552.24 1549.79,-552.24"/>
</g> </g>
<!-- role_permission --> <!-- role_permission -->
<g id="role_permission" class="node"> <g id="role_permission" class="node">
<title>role_permission</title> <title>role_permission</title>
<g id="a_role_permission"><a xlink:title="role_permission&#10;effective_permissions(user) = ∪ permissions(roles(user)). Прямых прав у пользователя нет (решение 30.09): исключения — через заведение роли"> <g id="a_role_permission"><a xlink:title="role_permission&#10;effective_permissions(user) = ∪ permissions(roles(user)). Прямых прав у пользователя нет (решение 30.09): исключения — через заведение роли">
<ellipse fill="none" stroke="black" stroke-width="0" cx="272.94" cy="-1647.24" rx="272.89" ry="214.92"/> <ellipse fill="none" stroke="black" stroke-width="0" cx="272.94" cy="-1683.24" rx="272.89" ry="214.92"/>
<polygon fill="#1d71b8" stroke="transparent" points="81.94,-1737.24 81.94,-1797.24 463.94,-1797.24 463.94,-1737.24 81.94,-1737.24"/> <polygon fill="#1d71b8" stroke="transparent" points="81.94,-1773.24 81.94,-1833.24 463.94,-1833.24 463.94,-1773.24 81.94,-1773.24"/>
<polygon fill="none" stroke="#29235c" points="81.94,-1737.24 81.94,-1797.24 463.94,-1797.24 463.94,-1737.24 81.94,-1737.24"/> <polygon fill="none" stroke="#29235c" points="81.94,-1773.24 81.94,-1833.24 463.94,-1833.24 463.94,-1773.24 81.94,-1773.24"/>
<text text-anchor="start" x="97.8" y="-1758.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;role_permission &#160;&#160;&#160;&#160;&#160;&#160;</text> <text text-anchor="start" x="97.8" y="-1794.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;role_permission &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="81.94,-1677.24 81.94,-1737.24 463.94,-1737.24 463.94,-1677.24 81.94,-1677.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="81.94,-1713.24 81.94,-1773.24 463.94,-1773.24 463.94,-1713.24 81.94,-1713.24"/>
<polygon fill="none" stroke="#29235c" points="81.94,-1677.24 81.94,-1737.24 463.94,-1737.24 463.94,-1677.24 81.94,-1677.24"/> <polygon fill="none" stroke="#29235c" points="81.94,-1713.24 81.94,-1773.24 463.94,-1773.24 463.94,-1713.24 81.94,-1713.24"/>
<text text-anchor="start" x="92.94" y="-1698.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">role_id</text> <text text-anchor="start" x="92.94" y="-1734.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">role_id</text>
<text text-anchor="start" x="188.95" y="-1698.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text> <text text-anchor="start" x="188.95" y="-1734.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="353.38" y="-1698.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text> <text text-anchor="start" x="353.38" y="-1734.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<text text-anchor="start" x="413.85" y="-1698.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text> <text text-anchor="start" x="413.85" y="-1734.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="422.74" y="-1698.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text> <text text-anchor="start" x="422.74" y="-1734.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="81.94,-1617.24 81.94,-1677.24 463.94,-1677.24 463.94,-1617.24 81.94,-1617.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="81.94,-1653.24 81.94,-1713.24 463.94,-1713.24 463.94,-1653.24 81.94,-1653.24"/>
<polygon fill="none" stroke="#29235c" points="81.94,-1617.24 81.94,-1677.24 463.94,-1677.24 463.94,-1617.24 81.94,-1617.24"/> <polygon fill="none" stroke="#29235c" points="81.94,-1653.24 81.94,-1713.24 463.94,-1713.24 463.94,-1653.24 81.94,-1653.24"/>
<text text-anchor="start" x="92.94" y="-1638.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">permission_id</text> <text text-anchor="start" x="92.94" y="-1674.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">permission_id</text>
<text text-anchor="start" x="290.28" y="-1638.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text> <text text-anchor="start" x="290.28" y="-1674.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="353.38" y="-1638.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text> <text text-anchor="start" x="353.38" y="-1674.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<text text-anchor="start" x="413.85" y="-1638.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text> <text text-anchor="start" x="413.85" y="-1674.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="422.74" y="-1638.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text> <text text-anchor="start" x="422.74" y="-1674.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="81.94,-1557.24 81.94,-1617.24 463.94,-1617.24 463.94,-1557.24 81.94,-1557.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="81.94,-1593.24 81.94,-1653.24 463.94,-1653.24 463.94,-1593.24 81.94,-1593.24"/>
<polygon fill="none" stroke="#29235c" points="81.94,-1557.24 81.94,-1617.24 463.94,-1617.24 463.94,-1557.24 81.94,-1557.24"/> <polygon fill="none" stroke="#29235c" points="81.94,-1593.24 81.94,-1653.24 463.94,-1653.24 463.94,-1593.24 81.94,-1593.24"/>
<text text-anchor="start" x="92.94" y="-1577.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">granted_by &#160;&#160;&#160;</text> <text text-anchor="start" x="92.94" y="-1613.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">granted_by &#160;&#160;&#160;</text>
<text text-anchor="start" x="392.48" y="-1578.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text> <text text-anchor="start" x="392.48" y="-1614.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="81.94,-1497.24 81.94,-1557.24 463.94,-1557.24 463.94,-1497.24 81.94,-1497.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="81.94,-1533.24 81.94,-1593.24 463.94,-1593.24 463.94,-1533.24 81.94,-1533.24"/>
<polygon fill="none" stroke="#29235c" points="81.94,-1497.24 81.94,-1557.24 463.94,-1557.24 463.94,-1497.24 81.94,-1497.24"/> <polygon fill="none" stroke="#29235c" points="81.94,-1533.24 81.94,-1593.24 463.94,-1593.24 463.94,-1533.24 81.94,-1533.24"/>
<text text-anchor="start" x="92.68" y="-1517.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">granted_at &#160;&#160;&#160;</text> <text text-anchor="start" x="92.68" y="-1553.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">granted_at &#160;&#160;&#160;</text>
<text text-anchor="start" x="280.72" y="-1518.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text> <text text-anchor="start" x="280.72" y="-1554.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="80.94,-1496.24 80.94,-1798.24 464.94,-1798.24 464.94,-1496.24 80.94,-1496.24"/> <polygon fill="none" stroke="#29235c" stroke-width="2" points="80.94,-1532.24 80.94,-1834.24 464.94,-1834.24 464.94,-1532.24 80.94,-1532.24"/>
</a> </a>
</g> </g>
</g> </g>
@ -314,55 +317,55 @@
<!-- role_permission&#45;&gt;app_user --> <!-- role_permission&#45;&gt;app_user -->
<g id="edge8" class="edge"> <g id="edge8" class="edge">
<title>role_permission:e&#45;&gt;app_user:w</title> <title>role_permission:e&#45;&gt;app_user:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M464.94,-1587.24C695.93,-1587.24 478.06,-2584.37 695.9,-2613.59"/> <path fill="none" stroke="#29235c" stroke-width="3" d="M464.94,-1623.24C695.93,-1623.24 478.06,-2620.37 695.9,-2649.59"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="695.7,-2617.08 705.91,-2614.24 696.16,-2610.09 695.7,-2617.08"/> <polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="695.7,-2653.08 705.91,-2650.24 696.16,-2646.09 695.7,-2653.08"/>
<text text-anchor="middle" x="697.01" y="-2623.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text> <text text-anchor="middle" x="697.01" y="-2659.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="471.17" y="-1596.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text> <text text-anchor="middle" x="471.17" y="-1632.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g> </g>
<!-- role_permission&#45;&gt;role --> <!-- role_permission&#45;&gt;role -->
<!-- role_permission&#45;&gt;role --> <!-- role_permission&#45;&gt;role -->
<g id="edge4" class="edge"> <g id="edge4" class="edge">
<title>role_permission:e&#45;&gt;role:w</title> <title>role_permission:e&#45;&gt;role:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M464.94,-1707.24C621.93,-1707.24 663.7,-1707.24 815.73,-1707.24"/> <path fill="none" stroke="#29235c" stroke-width="3" d="M464.94,-1743.24C621.93,-1743.24 663.7,-1743.24 815.73,-1743.24"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="815.91,-1710.74 825.91,-1707.24 815.91,-1703.74 815.91,-1710.74"/> <polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="815.91,-1746.74 825.91,-1743.24 815.91,-1739.74 815.91,-1746.74"/>
<text text-anchor="middle" x="817.01" y="-1716.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text> <text text-anchor="middle" x="817.01" y="-1752.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="471.17" y="-1716.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text> <text text-anchor="middle" x="471.17" y="-1752.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g> </g>
<!-- role_permission&#45;&gt;permission --> <!-- role_permission&#45;&gt;permission -->
<!-- role_permission&#45;&gt;permission --> <!-- role_permission&#45;&gt;permission -->
<g id="edge6" class="edge"> <g id="edge6" class="edge">
<title>role_permission:e&#45;&gt;permission:w</title> <title>role_permission:e&#45;&gt;permission:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M464.94,-1647.24C636.98,-1647.24 498.46,-1428.7 581.89,-1278.24 633.73,-1184.75 632.68,-1095.02 732.89,-1089.51"/> <path fill="none" stroke="#29235c" stroke-width="3" d="M464.94,-1683.24C636.98,-1683.24 498.46,-1464.7 581.89,-1314.24 633.73,-1220.75 632.68,-1131.02 732.89,-1125.51"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="733.01,-1093.01 742.91,-1089.24 732.82,-1086.01 733.01,-1093.01"/> <polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="733.01,-1129.01 742.91,-1125.24 732.82,-1122.01 733.01,-1129.01"/>
<text text-anchor="middle" x="734.01" y="-1098.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text> <text text-anchor="middle" x="734.01" y="-1134.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="471.17" y="-1656.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text> <text text-anchor="middle" x="471.17" y="-1692.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g> </g>
<!-- user_role --> <!-- user_role -->
<g id="user_role" class="node"> <g id="user_role" class="node">
<title>user_role</title> <title>user_role</title>
<g id="a_user_role"><a xlink:title="user_role&#10;M:N current&#45;state. История назначений — audit_event(USER_ROLE_CHANGE)"> <g id="a_user_role"><a xlink:title="user_role&#10;M:N current&#45;state. История назначений — audit_event(USER_ROLE_CHANGE)">
<ellipse fill="none" stroke="black" stroke-width="0" cx="272.94" cy="-2318.24" rx="200.22" ry="172.57"/> <ellipse fill="none" stroke="black" stroke-width="0" cx="272.94" cy="-2354.24" rx="200.22" ry="172.57"/>
<polygon fill="#1d71b8" stroke="transparent" points="133.94,-2378.24 133.94,-2438.24 412.94,-2438.24 412.94,-2378.24 133.94,-2378.24"/> <polygon fill="#1d71b8" stroke="transparent" points="133.94,-2414.24 133.94,-2474.24 412.94,-2474.24 412.94,-2414.24 133.94,-2414.24"/>
<polygon fill="none" stroke="#29235c" points="133.94,-2378.24 133.94,-2438.24 412.94,-2438.24 412.94,-2378.24 133.94,-2378.24"/> <polygon fill="none" stroke="#29235c" points="133.94,-2414.24 133.94,-2474.24 412.94,-2474.24 412.94,-2414.24 133.94,-2414.24"/>
<text text-anchor="start" x="144.52" y="-2399.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;user_role &#160;&#160;&#160;&#160;&#160;&#160;</text> <text text-anchor="start" x="144.52" y="-2435.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;user_role &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="133.94,-2318.24 133.94,-2378.24 412.94,-2378.24 412.94,-2318.24 133.94,-2318.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="133.94,-2354.24 133.94,-2414.24 412.94,-2414.24 412.94,-2354.24 133.94,-2354.24"/>
<polygon fill="none" stroke="#29235c" points="133.94,-2318.24 133.94,-2378.24 412.94,-2378.24 412.94,-2318.24 133.94,-2318.24"/> <polygon fill="none" stroke="#29235c" points="133.94,-2354.24 133.94,-2414.24 412.94,-2414.24 412.94,-2354.24 133.94,-2354.24"/>
<text text-anchor="start" x="144.94" y="-2339.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text> <text text-anchor="start" x="144.94" y="-2375.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text>
<text text-anchor="start" x="169.83" y="-2339.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text> <text text-anchor="start" x="169.83" y="-2375.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="341.48" y="-2339.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text> <text text-anchor="start" x="341.48" y="-2375.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="133.94,-2258.24 133.94,-2318.24 412.94,-2318.24 412.94,-2258.24 133.94,-2258.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="133.94,-2294.24 133.94,-2354.24 412.94,-2354.24 412.94,-2294.24 133.94,-2294.24"/>
<polygon fill="none" stroke="#29235c" points="133.94,-2258.24 133.94,-2318.24 412.94,-2318.24 412.94,-2258.24 133.94,-2258.24"/> <polygon fill="none" stroke="#29235c" points="133.94,-2294.24 133.94,-2354.24 412.94,-2354.24 412.94,-2294.24 133.94,-2294.24"/>
<text text-anchor="start" x="144.94" y="-2278.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">user_id &#160;&#160;&#160;</text> <text text-anchor="start" x="144.94" y="-2314.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">user_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="302.38" y="-2279.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text> <text text-anchor="start" x="302.38" y="-2315.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<text text-anchor="start" x="362.85" y="-2279.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text> <text text-anchor="start" x="362.85" y="-2315.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="371.74" y="-2279.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text> <text text-anchor="start" x="371.74" y="-2315.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="133.94,-2198.24 133.94,-2258.24 412.94,-2258.24 412.94,-2198.24 133.94,-2198.24"/> <polygon fill="#e7e2dd" stroke="transparent" points="133.94,-2234.24 133.94,-2294.24 412.94,-2294.24 412.94,-2234.24 133.94,-2234.24"/>
<polygon fill="none" stroke="#29235c" points="133.94,-2198.24 133.94,-2258.24 412.94,-2258.24 412.94,-2198.24 133.94,-2198.24"/> <polygon fill="none" stroke="#29235c" points="133.94,-2234.24 133.94,-2294.24 412.94,-2294.24 412.94,-2234.24 133.94,-2234.24"/>
<text text-anchor="start" x="144.94" y="-2218.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">role_id &#160;&#160;&#160;</text> <text text-anchor="start" x="144.94" y="-2254.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">role_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="302.38" y="-2219.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text> <text text-anchor="start" x="302.38" y="-2255.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<text text-anchor="start" x="362.85" y="-2219.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text> <text text-anchor="start" x="362.85" y="-2255.44" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="371.74" y="-2219.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text> <text text-anchor="start" x="371.74" y="-2255.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="132.44,-2197.24 132.44,-2439.24 413.44,-2439.24 413.44,-2197.24 132.44,-2197.24"/> <polygon fill="none" stroke="#29235c" stroke-width="2" points="132.44,-2233.24 132.44,-2475.24 413.44,-2475.24 413.44,-2233.24 132.44,-2233.24"/>
</a> </a>
</g> </g>
</g> </g>
@ -370,19 +373,19 @@
<!-- user_role&#45;&gt;app_user --> <!-- user_role&#45;&gt;app_user -->
<g id="edge10" class="edge"> <g id="edge10" class="edge">
<title>user_role:e&#45;&gt;app_user:w</title> <title>user_role:e&#45;&gt;app_user:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M413.94,-2288.24C604.93,-2288.24 514.82,-2602.57 695.65,-2613.92"/> <path fill="none" stroke="#29235c" stroke-width="3" d="M413.94,-2324.24C604.93,-2324.24 514.82,-2638.57 695.65,-2649.92"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="695.81,-2617.43 705.91,-2614.24 696.02,-2610.43 695.81,-2617.43"/> <polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="695.81,-2653.43 705.91,-2650.24 696.02,-2646.43 695.81,-2653.43"/>
<text text-anchor="middle" x="714.8" y="-2623.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text> <text text-anchor="middle" x="714.8" y="-2659.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="420.17" y="-2297.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text> <text text-anchor="middle" x="420.17" y="-2333.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g> </g>
<!-- user_role&#45;&gt;role --> <!-- user_role&#45;&gt;role -->
<!-- user_role&#45;&gt;role --> <!-- user_role&#45;&gt;role -->
<g id="edge12" class="edge"> <g id="edge12" class="edge">
<title>user_role:e&#45;&gt;role:w</title> <title>user_role:e&#45;&gt;role:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M413.94,-2228.24C579.7,-2228.24 476.28,-2023 581.89,-1895.24 666.9,-1792.39 687.95,-1711.44 815.7,-1707.4"/> <path fill="none" stroke="#29235c" stroke-width="3" d="M413.94,-2264.24C579.7,-2264.24 476.28,-2059 581.89,-1931.24 666.9,-1828.39 687.95,-1747.44 815.7,-1743.4"/>
<polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="815.96,-1710.89 825.91,-1707.24 815.85,-1703.9 815.96,-1710.89"/> <polygon fill="#29235c" stroke="#29235c" stroke-width="3" points="815.96,-1746.89 825.91,-1743.24 815.85,-1739.9 815.96,-1746.89"/>
<text text-anchor="middle" x="834.8" y="-1716.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text> <text text-anchor="middle" x="834.8" y="-1752.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">1</text>
<text text-anchor="middle" x="420.17" y="-2237.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text> <text text-anchor="middle" x="420.17" y="-2273.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g> </g>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 KiB

After

Width:  |  Height:  |  Size: 522 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 782 KiB

View File

@ -0,0 +1,550 @@
<?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="1662pt" height="5916pt"
viewBox="0.00 0.00 1661.86 5916.01" 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 5912.01)">
<title>dbml</title>
<!-- document_type -->
<g id="document_type" class="node">
<title>document_type</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="1224.65" cy="-2909.22" rx="260.84" ry="257.27"/>
<polygon fill="#29235c" stroke="transparent" points="1042.65,-3029.22 1042.65,-3089.22 1407.65,-3089.22 1407.65,-3029.22 1042.65,-3029.22"/>
<polygon fill="none" stroke="#29235c" points="1042.65,-3029.22 1042.65,-3089.22 1407.65,-3089.22 1407.65,-3029.22 1042.65,-3029.22"/>
<text text-anchor="start" x="1053.52" y="-3050.42" 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="1042.65,-2969.22 1042.65,-3029.22 1407.65,-3029.22 1407.65,-2969.22 1042.65,-2969.22"/>
<polygon fill="none" stroke="#29235c" points="1042.65,-2969.22 1042.65,-3029.22 1407.65,-3029.22 1407.65,-2969.22 1042.65,-2969.22"/>
<text text-anchor="start" x="1114.9" y="-2990.42" 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="1042.65,-2909.22 1042.65,-2969.22 1407.65,-2969.22 1407.65,-2909.22 1042.65,-2909.22"/>
<polygon fill="none" stroke="#29235c" points="1042.65,-2909.22 1042.65,-2969.22 1407.65,-2969.22 1407.65,-2909.22 1042.65,-2909.22"/>
<text text-anchor="start" x="1125.58" y="-2930.42" 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="1042.65,-2849.22 1042.65,-2909.22 1407.65,-2909.22 1407.65,-2849.22 1042.65,-2849.22"/>
<polygon fill="none" stroke="#29235c" points="1042.65,-2849.22 1042.65,-2909.22 1407.65,-2909.22 1407.65,-2849.22 1042.65,-2849.22"/>
<text text-anchor="start" x="1155.79" y="-2870.42" 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="1042.65,-2789.22 1042.65,-2849.22 1407.65,-2849.22 1407.65,-2789.22 1042.65,-2789.22"/>
<polygon fill="none" stroke="#29235c" points="1042.65,-2789.22 1042.65,-2849.22 1407.65,-2849.22 1407.65,-2789.22 1042.65,-2789.22"/>
<text text-anchor="start" x="1085.58" y="-2810.42" 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="1042.65,-2729.22 1042.65,-2789.22 1407.65,-2789.22 1407.65,-2729.22 1042.65,-2729.22"/>
<polygon fill="none" stroke="#29235c" points="1042.65,-2729.22 1042.65,-2789.22 1407.65,-2789.22 1407.65,-2729.22 1042.65,-2729.22"/>
<text text-anchor="start" x="1133.58" y="-2750.42" 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="1041.15,-2728.22 1041.15,-3090.22 1408.15,-3090.22 1408.15,-2728.22 1041.15,-2728.22"/>
</g>
<!-- recognition_pipeline -->
<g id="recognition_pipeline" class="node">
<title>recognition_pipeline</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="1224.65" cy="-1309.22" rx="307.68" ry="130.22"/>
<polygon fill="#29235c" stroke="transparent" points="1009.65,-1339.22 1009.65,-1399.22 1440.65,-1399.22 1440.65,-1339.22 1009.65,-1339.22"/>
<polygon fill="none" stroke="#29235c" points="1009.65,-1339.22 1009.65,-1399.22 1440.65,-1399.22 1440.65,-1339.22 1009.65,-1339.22"/>
<text text-anchor="start" x="1020.64" y="-1360.42" 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="1009.65,-1279.22 1009.65,-1339.22 1440.65,-1339.22 1440.65,-1279.22 1009.65,-1279.22"/>
<polygon fill="none" stroke="#29235c" points="1009.65,-1279.22 1009.65,-1339.22 1440.65,-1339.22 1440.65,-1279.22 1009.65,-1279.22"/>
<text text-anchor="start" x="1140.67" y="-1300.42" 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="1009.65,-1219.22 1009.65,-1279.22 1440.65,-1279.22 1440.65,-1219.22 1009.65,-1219.22"/>
<polygon fill="none" stroke="#29235c" points="1009.65,-1219.22 1009.65,-1279.22 1440.65,-1279.22 1440.65,-1219.22 1009.65,-1219.22"/>
<text text-anchor="start" x="1146.02" y="-1240.42" 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="1008.15,-1218.22 1008.15,-1400.22 1441.15,-1400.22 1441.15,-1218.22 1008.15,-1218.22"/>
</g>
<!-- quality_outcome -->
<g id="quality_outcome" class="node">
<title>quality_outcome</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="1224.65" cy="-5496.22" rx="429.43" ry="299.63"/>
<polygon fill="#29235c" stroke="transparent" points="923.65,-5646.22 923.65,-5706.22 1526.65,-5706.22 1526.65,-5646.22 923.65,-5646.22"/>
<polygon fill="none" stroke="#29235c" points="923.65,-5646.22 923.65,-5706.22 1526.65,-5706.22 1526.65,-5646.22 923.65,-5646.22"/>
<text text-anchor="start" x="1046.42" y="-5667.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;quality_outcome &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="923.65,-5586.22 923.65,-5646.22 1526.65,-5646.22 1526.65,-5586.22 923.65,-5586.22"/>
<polygon fill="none" stroke="#29235c" points="923.65,-5586.22 923.65,-5646.22 1526.65,-5646.22 1526.65,-5586.22 923.65,-5586.22"/>
<text text-anchor="start" x="1039.37" y="-5607.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;AUTO_CONFIRMED &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="923.65,-5526.22 923.65,-5586.22 1526.65,-5586.22 1526.65,-5526.22 923.65,-5526.22"/>
<polygon fill="none" stroke="#29235c" points="923.65,-5526.22 923.65,-5586.22 1526.65,-5586.22 1526.65,-5526.22 923.65,-5526.22"/>
<text text-anchor="start" x="1092.71" y="-5547.42" 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="923.65,-5466.22 923.65,-5526.22 1526.65,-5526.22 1526.65,-5466.22 923.65,-5466.22"/>
<polygon fill="none" stroke="#29235c" points="923.65,-5466.22 923.65,-5526.22 1526.65,-5526.22 1526.65,-5466.22 923.65,-5466.22"/>
<text text-anchor="start" x="1115.79" y="-5487.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;DELETED &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="923.65,-5406.22 923.65,-5466.22 1526.65,-5466.22 1526.65,-5406.22 923.65,-5406.22"/>
<polygon fill="none" stroke="#29235c" points="923.65,-5406.22 923.65,-5466.22 1526.65,-5466.22 1526.65,-5406.22 923.65,-5406.22"/>
<text text-anchor="start" x="1079.35" y="-5427.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;SUPERSEDED &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="923.65,-5346.22 923.65,-5406.22 1526.65,-5406.22 1526.65,-5346.22 923.65,-5346.22"/>
<polygon fill="none" stroke="#29235c" points="923.65,-5346.22 923.65,-5406.22 1526.65,-5406.22 1526.65,-5346.22 923.65,-5346.22"/>
<text text-anchor="start" x="970.92" y="-5367.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;DELETED_AFTER_CONFIRM &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="923.65,-5286.22 923.65,-5346.22 1526.65,-5346.22 1526.65,-5286.22 923.65,-5286.22"/>
<polygon fill="none" stroke="#29235c" points="923.65,-5286.22 923.65,-5346.22 1526.65,-5346.22 1526.65,-5286.22 923.65,-5286.22"/>
<text text-anchor="start" x="934.48" y="-5307.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;SUPERSEDED_AFTER_CONFIRM &#160;&#160;&#160;</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="922.15,-5285.22 922.15,-5707.22 1527.15,-5707.22 1527.15,-5285.22 922.15,-5285.22"/>
</g>
<!-- quality_cause -->
<g id="quality_cause" class="node">
<title>quality_cause</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="1224.65" cy="-4921.22" rx="359.83" ry="257.27"/>
<polygon fill="#29235c" stroke="transparent" points="972.65,-5041.22 972.65,-5101.22 1477.65,-5101.22 1477.65,-5041.22 972.65,-5041.22"/>
<polygon fill="none" stroke="#29235c" points="972.65,-5041.22 972.65,-5101.22 1477.65,-5101.22 1477.65,-5041.22 972.65,-5041.22"/>
<text text-anchor="start" x="1065.09" y="-5062.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;quality_cause &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="972.65,-4981.22 972.65,-5041.22 1477.65,-5041.22 1477.65,-4981.22 972.65,-4981.22"/>
<polygon fill="none" stroke="#29235c" points="972.65,-4981.22 972.65,-5041.22 1477.65,-5041.22 1477.65,-4981.22 972.65,-4981.22"/>
<text text-anchor="start" x="1052.68" y="-5002.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;SERVICE_ERROR &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="972.65,-4921.22 972.65,-4981.22 1477.65,-4981.22 1477.65,-4921.22 972.65,-4921.22"/>
<polygon fill="none" stroke="#29235c" points="972.65,-4921.22 972.65,-4981.22 1477.65,-4981.22 1477.65,-4921.22 972.65,-4921.22"/>
<text text-anchor="start" x="1087.37" y="-4942.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;OUR_ERROR &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="972.65,-4861.22 972.65,-4921.22 1477.65,-4921.22 1477.65,-4861.22 972.65,-4861.22"/>
<polygon fill="none" stroke="#29235c" points="972.65,-4861.22 972.65,-4921.22 1477.65,-4921.22 1477.65,-4861.22 972.65,-4861.22"/>
<text text-anchor="start" x="1031.38" y="-4882.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;CLIENT_DOCUMENT &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="972.65,-4801.22 972.65,-4861.22 1477.65,-4861.22 1477.65,-4801.22 972.65,-4801.22"/>
<polygon fill="none" stroke="#29235c" points="972.65,-4801.22 972.65,-4861.22 1477.65,-4861.22 1477.65,-4801.22 972.65,-4801.22"/>
<text text-anchor="start" x="983.37" y="-4822.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;WITHOUT_PARTICIPATION &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="972.65,-4741.22 972.65,-4801.22 1477.65,-4801.22 1477.65,-4741.22 972.65,-4741.22"/>
<polygon fill="none" stroke="#29235c" points="972.65,-4741.22 972.65,-4801.22 1477.65,-4801.22 1477.65,-4741.22 972.65,-4741.22"/>
<text text-anchor="start" x="1144.22" y="-4762.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;AS_IS &#160;&#160;&#160;</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="971.15,-4740.22 971.15,-5102.22 1478.15,-5102.22 1478.15,-4740.22 971.15,-4740.22"/>
</g>
<!-- quality_failure_kind -->
<g id="quality_failure_kind" class="node">
<title>quality_failure_kind</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="1224.65" cy="-219.22" rx="299.63" ry="214.92"/>
<polygon fill="#29235c" stroke="transparent" points="1014.65,-309.22 1014.65,-369.22 1434.65,-369.22 1434.65,-309.22 1014.65,-309.22"/>
<polygon fill="none" stroke="#29235c" points="1014.65,-309.22 1014.65,-369.22 1434.65,-369.22 1434.65,-309.22 1014.65,-309.22"/>
<text text-anchor="start" x="1025.48" y="-330.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;quality_failure_kind &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1014.65,-249.22 1014.65,-309.22 1434.65,-309.22 1434.65,-249.22 1014.65,-249.22"/>
<polygon fill="none" stroke="#29235c" points="1014.65,-249.22 1014.65,-309.22 1434.65,-309.22 1434.65,-249.22 1014.65,-249.22"/>
<text text-anchor="start" x="1052.18" y="-270.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;SERVICE_ERROR &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1014.65,-189.22 1014.65,-249.22 1434.65,-249.22 1434.65,-189.22 1014.65,-189.22"/>
<polygon fill="none" stroke="#29235c" points="1014.65,-189.22 1014.65,-249.22 1434.65,-249.22 1434.65,-189.22 1014.65,-189.22"/>
<text text-anchor="start" x="1117.09" y="-210.42" 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="1014.65,-129.22 1014.65,-189.22 1434.65,-189.22 1434.65,-129.22 1014.65,-129.22"/>
<polygon fill="none" stroke="#29235c" points="1014.65,-129.22 1014.65,-189.22 1434.65,-189.22 1434.65,-129.22 1014.65,-129.22"/>
<text text-anchor="start" x="1123.29" y="-150.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;NO_ACK &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1014.65,-69.22 1014.65,-129.22 1434.65,-129.22 1434.65,-69.22 1014.65,-69.22"/>
<polygon fill="none" stroke="#29235c" points="1014.65,-69.22 1014.65,-129.22 1434.65,-129.22 1434.65,-69.22 1014.65,-69.22"/>
<text text-anchor="start" x="1115.29" y="-90.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;MAPPING &#160;&#160;&#160;</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="1013.65,-68.22 1013.65,-370.22 1435.65,-370.22 1435.65,-68.22 1013.65,-68.22"/>
</g>
<!-- document_status -->
<g id="document_status" class="node">
<title>document_status</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="1224.65" cy="-2399.22" rx="278.7" ry="214.92"/>
<polygon fill="#29235c" stroke="transparent" points="1029.65,-2489.22 1029.65,-2549.22 1419.65,-2549.22 1419.65,-2489.22 1029.65,-2489.22"/>
<polygon fill="none" stroke="#29235c" points="1029.65,-2489.22 1029.65,-2549.22 1419.65,-2549.22 1419.65,-2489.22 1029.65,-2489.22"/>
<text text-anchor="start" x="1040.58" y="-2510.42" 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="1029.65,-2429.22 1029.65,-2489.22 1419.65,-2489.22 1419.65,-2429.22 1029.65,-2429.22"/>
<polygon fill="none" stroke="#29235c" points="1029.65,-2429.22 1029.65,-2489.22 1419.65,-2489.22 1419.65,-2429.22 1029.65,-2429.22"/>
<text text-anchor="start" x="1082.42" y="-2450.42" 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="1029.65,-2369.22 1029.65,-2429.22 1419.65,-2429.22 1419.65,-2369.22 1029.65,-2369.22"/>
<polygon fill="none" stroke="#29235c" points="1029.65,-2369.22 1029.65,-2429.22 1419.65,-2429.22 1419.65,-2369.22 1029.65,-2369.22"/>
<text text-anchor="start" x="1069.08" y="-2390.42" 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="1029.65,-2309.22 1029.65,-2369.22 1419.65,-2369.22 1419.65,-2309.22 1029.65,-2309.22"/>
<polygon fill="none" stroke="#29235c" points="1029.65,-2309.22 1029.65,-2369.22 1419.65,-2369.22 1419.65,-2309.22 1029.65,-2309.22"/>
<text text-anchor="start" x="1092.21" y="-2330.42" 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="1029.65,-2249.22 1029.65,-2309.22 1419.65,-2309.22 1419.65,-2249.22 1029.65,-2249.22"/>
<polygon fill="none" stroke="#29235c" points="1029.65,-2249.22 1029.65,-2309.22 1419.65,-2309.22 1419.65,-2249.22 1029.65,-2249.22"/>
<text text-anchor="start" x="1131.31" y="-2270.42" 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="1028.65,-2248.22 1028.65,-2550.22 1420.65,-2550.22 1420.65,-2248.22 1028.65,-2248.22"/>
</g>
<!-- quality_intake_fact -->
<g id="quality_intake_fact" class="node">
<title>quality_intake_fact</title>
<g id="a_quality_intake_fact"><a xlink:title="quality_intake_fact&#10;Отдельная схема PostgreSQL dkb_metrics (имя — настройка). Append&#45;only, без FK на рабочие таблицы: переживает удаление/перераспознавание документа. Пишется в транзакции маппинга, после map_file, до auto_confirm — один факт на созданный документ BALANCE/INCOME/OSV.">
<ellipse fill="none" stroke="black" stroke-width="0" cx="379.72" cy="-2699.22" rx="379.93" ry="1402.8"/>
<polygon fill="#1d71b8" stroke="transparent" points="113.72,-3629.22 113.72,-3689.22 646.72,-3689.22 646.72,-3629.22 113.72,-3629.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-3629.22 113.72,-3689.22 646.72,-3689.22 646.72,-3629.22 113.72,-3629.22"/>
<text text-anchor="start" x="185.48" y="-3650.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;quality_intake_fact &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-3569.22 113.72,-3629.22 646.72,-3629.22 646.72,-3569.22 113.72,-3569.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-3569.22 113.72,-3629.22 646.72,-3629.22 646.72,-3569.22 113.72,-3569.22"/>
<text text-anchor="start" x="124.72" y="-3590.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text>
<text text-anchor="start" x="149.61" y="-3590.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="575.25" y="-3590.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-3509.22 113.72,-3569.22 646.72,-3569.22 646.72,-3509.22 113.72,-3509.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-3509.22 113.72,-3569.22 646.72,-3569.22 646.72,-3509.22 113.72,-3509.22"/>
<text text-anchor="start" x="124.72" y="-3529.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">document_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="536.16" y="-3530.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<text text-anchor="start" x="596.63" y="-3530.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.52" y="-3530.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-3449.22 113.72,-3509.22 646.72,-3509.22 646.72,-3449.22 113.72,-3449.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-3449.22 113.72,-3509.22 646.72,-3509.22 646.72,-3449.22 113.72,-3449.22"/>
<text text-anchor="start" x="124.72" y="-3469.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">file_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="536.16" y="-3470.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<text text-anchor="start" x="596.63" y="-3470.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.52" y="-3470.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-3389.22 113.72,-3449.22 646.72,-3449.22 646.72,-3389.22 113.72,-3389.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-3389.22 113.72,-3449.22 646.72,-3449.22 646.72,-3389.22 113.72,-3389.22"/>
<text text-anchor="start" x="124.72" y="-3409.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">job_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="536.16" y="-3410.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<text text-anchor="start" x="596.63" y="-3410.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.52" y="-3410.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-3329.22 113.72,-3389.22 646.72,-3389.22 646.72,-3329.22 113.72,-3329.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-3329.22 113.72,-3389.22 646.72,-3389.22 646.72,-3329.22 113.72,-3329.22"/>
<text text-anchor="start" x="124.72" y="-3349.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">attempt &#160;&#160;&#160;</text>
<text text-anchor="start" x="488.2" y="-3350.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">smallint</text>
<text text-anchor="start" x="596.63" y="-3350.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.52" y="-3350.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-3269.22 113.72,-3329.22 646.72,-3329.22 646.72,-3269.22 113.72,-3269.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-3269.22 113.72,-3329.22 646.72,-3329.22 646.72,-3269.22 113.72,-3269.22"/>
<text text-anchor="start" x="124.72" y="-3289.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">legal_entity_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="536.16" y="-3290.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<text text-anchor="start" x="596.63" y="-3290.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.52" y="-3290.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-3209.22 113.72,-3269.22 646.72,-3269.22 646.72,-3209.22 113.72,-3209.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-3209.22 113.72,-3269.22 646.72,-3269.22 646.72,-3209.22 113.72,-3209.22"/>
<text text-anchor="start" x="124.72" y="-3229.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">legal_entity_name &#160;&#160;&#160;</text>
<text text-anchor="start" x="489.95" y="-3230.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<text text-anchor="start" x="596.63" y="-3230.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.52" y="-3230.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-3149.22 113.72,-3209.22 646.72,-3209.22 646.72,-3149.22 113.72,-3149.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-3149.22 113.72,-3209.22 646.72,-3209.22 646.72,-3149.22 113.72,-3149.22"/>
<text text-anchor="start" x="124.72" y="-3169.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">group_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="575.25" y="-3170.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-3089.22 113.72,-3149.22 646.72,-3149.22 646.72,-3089.22 113.72,-3089.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-3089.22 113.72,-3149.22 646.72,-3149.22 646.72,-3089.22 113.72,-3089.22"/>
<text text-anchor="start" x="124.72" y="-3109.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">group_name &#160;&#160;&#160;</text>
<text text-anchor="start" x="529.04" y="-3110.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-3029.22 113.72,-3089.22 646.72,-3089.22 646.72,-3029.22 113.72,-3029.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-3029.22 113.72,-3089.22 646.72,-3089.22 646.72,-3029.22 113.72,-3029.22"/>
<text text-anchor="start" x="124.56" y="-3049.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">document_type &#160;&#160;&#160;</text>
<text text-anchor="start" x="378.3" y="-3050.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">document_type</text>
<text text-anchor="start" x="597.05" y="-3050.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.94" y="-3050.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-2969.22 113.72,-3029.22 646.72,-3029.22 646.72,-2969.22 113.72,-2969.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-2969.22 113.72,-3029.22 646.72,-3029.22 646.72,-2969.22 113.72,-2969.22"/>
<text text-anchor="start" x="124.72" y="-2989.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">pipeline &#160;&#160;&#160;</text>
<text text-anchor="start" x="312.11" y="-2990.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">recognition_pipeline</text>
<text text-anchor="start" x="596.63" y="-2990.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.52" y="-2990.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-2909.22 113.72,-2969.22 646.72,-2969.22 646.72,-2909.22 113.72,-2909.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-2909.22 113.72,-2969.22 646.72,-2969.22 646.72,-2909.22 113.72,-2909.22"/>
<text text-anchor="start" x="124.72" y="-2929.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">is_scan &#160;&#160;&#160;</text>
<text text-anchor="start" x="521.88" y="-2930.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">boolean</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-2849.22 113.72,-2909.22 646.72,-2909.22 646.72,-2849.22 113.72,-2849.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-2849.22 113.72,-2909.22 646.72,-2909.22 646.72,-2849.22 113.72,-2849.22"/>
<text text-anchor="start" x="124.72" y="-2869.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">service_name &#160;&#160;&#160;</text>
<text text-anchor="start" x="529.04" y="-2870.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-2789.22 113.72,-2849.22 646.72,-2849.22 646.72,-2789.22 113.72,-2789.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-2789.22 113.72,-2849.22 646.72,-2849.22 646.72,-2789.22 113.72,-2789.22"/>
<text text-anchor="start" x="124.72" y="-2809.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">service_version &#160;&#160;&#160;</text>
<text text-anchor="start" x="529.04" y="-2810.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-2729.22 113.72,-2789.22 646.72,-2789.22 646.72,-2729.22 113.72,-2729.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-2729.22 113.72,-2789.22 646.72,-2789.22 646.72,-2729.22 113.72,-2729.22"/>
<text text-anchor="start" x="124.72" y="-2749.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">statements_version &#160;&#160;&#160;</text>
<text text-anchor="start" x="529.04" y="-2750.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-2669.22 113.72,-2729.22 646.72,-2729.22 646.72,-2669.22 113.72,-2669.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-2669.22 113.72,-2729.22 646.72,-2729.22 646.72,-2669.22 113.72,-2669.22"/>
<text text-anchor="start" x="124.72" y="-2689.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">result_schema_version &#160;&#160;&#160;</text>
<text text-anchor="start" x="529.04" y="-2690.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-2609.22 113.72,-2669.22 646.72,-2669.22 646.72,-2609.22 113.72,-2609.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-2609.22 113.72,-2669.22 646.72,-2669.22 646.72,-2609.22 113.72,-2609.22"/>
<text text-anchor="start" x="124.72" y="-2629.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">report_date &#160;&#160;&#160;</text>
<text text-anchor="start" x="573.46" y="-2630.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">date</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-2549.22 113.72,-2609.22 646.72,-2609.22 646.72,-2549.22 113.72,-2549.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-2549.22 113.72,-2609.22 646.72,-2609.22 646.72,-2549.22 113.72,-2549.22"/>
<text text-anchor="start" x="124.72" y="-2569.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">intake_at &#160;&#160;&#160;</text>
<text text-anchor="start" x="424.17" y="-2570.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text>
<text text-anchor="start" x="596.63" y="-2570.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.52" y="-2570.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-2489.22 113.72,-2549.22 646.72,-2549.22 646.72,-2489.22 113.72,-2489.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-2489.22 113.72,-2549.22 646.72,-2549.22 646.72,-2489.22 113.72,-2489.22"/>
<text text-anchor="start" x="124.72" y="-2509.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">intake_status &#160;&#160;&#160;</text>
<text text-anchor="start" x="352.98" y="-2510.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">document_status</text>
<text text-anchor="start" x="596.63" y="-2510.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.52" y="-2510.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-2429.22 113.72,-2489.22 646.72,-2489.22 646.72,-2429.22 113.72,-2429.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-2429.22 113.72,-2489.22 646.72,-2489.22 646.72,-2429.22 113.72,-2429.22"/>
<text text-anchor="start" x="124.72" y="-2449.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">line_count &#160;&#160;&#160;</text>
<text text-anchor="start" x="601.93" y="-2450.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-2369.22 113.72,-2429.22 646.72,-2429.22 646.72,-2369.22 113.72,-2369.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-2369.22 113.72,-2429.22 646.72,-2429.22 646.72,-2369.22 113.72,-2369.22"/>
<text text-anchor="start" x="124.72" y="-2389.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">value_count &#160;&#160;&#160;</text>
<text text-anchor="start" x="601.93" y="-2390.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-2309.22 113.72,-2369.22 646.72,-2369.22 646.72,-2309.22 113.72,-2309.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-2309.22 113.72,-2369.22 646.72,-2369.22 646.72,-2309.22 113.72,-2309.22"/>
<text text-anchor="start" x="124.72" y="-2329.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">value_needs_review_count &#160;&#160;&#160;</text>
<text text-anchor="start" x="601.93" y="-2330.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-2249.22 113.72,-2309.22 646.72,-2309.22 646.72,-2249.22 113.72,-2249.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-2249.22 113.72,-2309.22 646.72,-2309.22 646.72,-2249.22 113.72,-2249.22"/>
<text text-anchor="start" x="124.72" y="-2269.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">line_unreadable_count &#160;&#160;&#160;</text>
<text text-anchor="start" x="601.93" y="-2270.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-2189.22 113.72,-2249.22 646.72,-2249.22 646.72,-2189.22 113.72,-2189.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-2189.22 113.72,-2249.22 646.72,-2249.22 646.72,-2189.22 113.72,-2189.22"/>
<text text-anchor="start" x="124.72" y="-2209.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">line_missing_count &#160;&#160;&#160;</text>
<text text-anchor="start" x="601.93" y="-2210.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-2129.22 113.72,-2189.22 646.72,-2189.22 646.72,-2129.22 113.72,-2129.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-2129.22 113.72,-2189.22 646.72,-2189.22 646.72,-2129.22 113.72,-2129.22"/>
<text text-anchor="start" x="124.72" y="-2149.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">issue_relation_count &#160;&#160;&#160;</text>
<text text-anchor="start" x="601.93" y="-2150.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-2069.22 113.72,-2129.22 646.72,-2129.22 646.72,-2069.22 113.72,-2069.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-2069.22 113.72,-2129.22 646.72,-2129.22 646.72,-2069.22 113.72,-2069.22"/>
<text text-anchor="start" x="124.72" y="-2089.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">issue_soft_count &#160;&#160;&#160;</text>
<text text-anchor="start" x="601.93" y="-2090.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-2009.22 113.72,-2069.22 646.72,-2069.22 646.72,-2009.22 113.72,-2009.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-2009.22 113.72,-2069.22 646.72,-2069.22 646.72,-2009.22 113.72,-2009.22"/>
<text text-anchor="start" x="124.72" y="-2029.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">warning_count &#160;&#160;&#160;</text>
<text text-anchor="start" x="601.93" y="-2030.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-1949.22 113.72,-2009.22 646.72,-2009.22 646.72,-1949.22 113.72,-1949.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-1949.22 113.72,-2009.22 646.72,-2009.22 646.72,-1949.22 113.72,-1949.22"/>
<text text-anchor="start" x="124.72" y="-1969.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">raw_s3_key &#160;&#160;&#160;</text>
<text text-anchor="start" x="529.04" y="-1970.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-1889.22 113.72,-1949.22 646.72,-1949.22 646.72,-1889.22 113.72,-1889.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-1889.22 113.72,-1949.22 646.72,-1949.22 646.72,-1889.22 113.72,-1889.22"/>
<text text-anchor="start" x="124.72" y="-1909.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">result_s3_key &#160;&#160;&#160;</text>
<text text-anchor="start" x="529.04" y="-1910.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-1829.22 113.72,-1889.22 646.72,-1889.22 646.72,-1829.22 113.72,-1829.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-1829.22 113.72,-1889.22 646.72,-1889.22 646.72,-1829.22 113.72,-1829.22"/>
<text text-anchor="start" x="124.72" y="-1849.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">upload_s3_key &#160;&#160;&#160;</text>
<text text-anchor="start" x="529.04" y="-1850.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-1769.22 113.72,-1829.22 646.72,-1829.22 646.72,-1769.22 113.72,-1769.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-1769.22 113.72,-1829.22 646.72,-1829.22 646.72,-1769.22 113.72,-1769.22"/>
<text text-anchor="start" x="124.72" y="-1789.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">payload &#160;&#160;&#160;</text>
<text text-anchor="start" x="520.16" y="-1790.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">jsonb</text>
<text text-anchor="start" x="596.63" y="-1790.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.52" y="-1790.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-1709.22 113.72,-1769.22 646.72,-1769.22 646.72,-1709.22 113.72,-1709.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-1709.22 113.72,-1769.22 646.72,-1769.22 646.72,-1709.22 113.72,-1709.22"/>
<text text-anchor="start" x="124.72" y="-1729.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">payload_schema_version &#160;&#160;&#160;</text>
<text text-anchor="start" x="529.04" y="-1730.42" 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="112.22,-1708.22 112.22,-3690.22 647.22,-3690.22 647.22,-1708.22 112.22,-1708.22"/>
</a>
</g>
</g>
<!-- quality_intake_fact&#45;&gt;document_type -->
<g id="edge1" class="edge">
<title>quality_intake_fact:e&#45;&gt;document_type:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M647.72,-3059.22C822.8,-3059.22 866.57,-3059.22 1041.65,-3059.22"/>
</g>
<!-- quality_intake_fact&#45;&gt;recognition_pipeline -->
<g id="edge2" class="edge">
<title>quality_intake_fact:e&#45;&gt;recognition_pipeline:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M647.72,-2999.22C833.75,-2999.22 755.2,-2356.85 795.43,-2175.22 875.57,-1813.45 638.1,-1369.22 1008.65,-1369.22"/>
</g>
<!-- quality_intake_fact&#45;&gt;document_status -->
<g id="edge3" class="edge">
<title>quality_intake_fact:e&#45;&gt;document_status:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M647.72,-2519.22C817.02,-2519.22 859.34,-2519.22 1028.65,-2519.22"/>
</g>
<!-- quality_outcome_fact -->
<g id="quality_outcome_fact" class="node">
<title>quality_outcome_fact</title>
<g id="a_quality_outcome_fact"><a xlink:title="quality_outcome_fact&#10;НЕ unique на document_id: повторное подтверждение ОСВ и исход DELETED_AFTER_CONFIRM/SUPERSEDED_AFTER_CONFIRM пишут новый факт поверх прежнего. Метрики берут последний факт по outcome_at. Пишется при первом из событий: подтверждение (ручное/auto_confirm), удаление до подтверждения, автозамена.">
<ellipse fill="none" stroke="black" stroke-width="0" cx="379.72" cy="-5014.22" rx="374.53" ry="893.57"/>
<polygon fill="#1d71b8" stroke="transparent" points="116.72,-5584.22 116.72,-5644.22 642.72,-5644.22 642.72,-5584.22 116.72,-5584.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-5584.22 116.72,-5644.22 642.72,-5644.22 642.72,-5584.22 116.72,-5584.22"/>
<text text-anchor="start" x="166.31" y="-5605.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;quality_outcome_fact &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-5524.22 116.72,-5584.22 642.72,-5584.22 642.72,-5524.22 116.72,-5524.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-5524.22 116.72,-5584.22 642.72,-5584.22 642.72,-5524.22 116.72,-5524.22"/>
<text text-anchor="start" x="127.72" y="-5545.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text>
<text text-anchor="start" x="152.61" y="-5545.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="571.25" y="-5545.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-5464.22 116.72,-5524.22 642.72,-5524.22 642.72,-5464.22 116.72,-5464.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-5464.22 116.72,-5524.22 642.72,-5524.22 642.72,-5464.22 116.72,-5464.22"/>
<text text-anchor="start" x="127.72" y="-5484.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">document_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="532.16" y="-5485.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<text text-anchor="start" x="592.63" y="-5485.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="601.52" y="-5485.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-5404.22 116.72,-5464.22 642.72,-5464.22 642.72,-5404.22 116.72,-5404.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-5404.22 116.72,-5464.22 642.72,-5464.22 642.72,-5404.22 116.72,-5404.22"/>
<text text-anchor="start" x="127.72" y="-5424.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">outcome &#160;&#160;&#160;</text>
<text text-anchor="start" x="359.67" y="-5425.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">quality_outcome</text>
<text text-anchor="start" x="592.63" y="-5425.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="601.52" y="-5425.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-5344.22 116.72,-5404.22 642.72,-5404.22 642.72,-5344.22 116.72,-5344.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-5344.22 116.72,-5404.22 642.72,-5404.22 642.72,-5344.22 116.72,-5344.22"/>
<text text-anchor="start" x="127.72" y="-5364.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">outcome_at &#160;&#160;&#160;</text>
<text text-anchor="start" x="420.17" y="-5365.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text>
<text text-anchor="start" x="592.63" y="-5365.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="601.52" y="-5365.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-5284.22 116.72,-5344.22 642.72,-5344.22 642.72,-5284.22 116.72,-5284.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-5284.22 116.72,-5344.22 642.72,-5344.22 642.72,-5284.22 116.72,-5284.22"/>
<text text-anchor="start" x="127.72" y="-5304.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">primary_cause &#160;&#160;&#160;</text>
<text text-anchor="start" x="436.1" y="-5305.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">quality_cause</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-5224.22 116.72,-5284.22 642.72,-5284.22 642.72,-5224.22 116.72,-5224.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-5224.22 116.72,-5284.22 642.72,-5284.22 642.72,-5224.22 116.72,-5224.22"/>
<text text-anchor="start" x="127.72" y="-5244.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">fixes_value_service &#160;&#160;&#160;</text>
<text text-anchor="start" x="558.84" y="-5245.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<text text-anchor="start" x="592.63" y="-5245.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="601.52" y="-5245.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-5164.22 116.72,-5224.22 642.72,-5224.22 642.72,-5164.22 116.72,-5164.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-5164.22 116.72,-5224.22 642.72,-5224.22 642.72,-5164.22 116.72,-5164.22"/>
<text text-anchor="start" x="127.72" y="-5184.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">fixes_value_ours &#160;&#160;&#160;</text>
<text text-anchor="start" x="558.84" y="-5185.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<text text-anchor="start" x="592.63" y="-5185.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="601.52" y="-5185.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-5104.22 116.72,-5164.22 642.72,-5164.22 642.72,-5104.22 116.72,-5104.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-5104.22 116.72,-5164.22 642.72,-5164.22 642.72,-5104.22 116.72,-5104.22"/>
<text text-anchor="start" x="127.72" y="-5124.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">fixes_code_service &#160;&#160;&#160;</text>
<text text-anchor="start" x="558.84" y="-5125.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<text text-anchor="start" x="592.63" y="-5125.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="601.52" y="-5125.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-5044.22 116.72,-5104.22 642.72,-5104.22 642.72,-5044.22 116.72,-5044.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-5044.22 116.72,-5104.22 642.72,-5104.22 642.72,-5044.22 116.72,-5044.22"/>
<text text-anchor="start" x="127.72" y="-5064.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">fixes_code_ours &#160;&#160;&#160;</text>
<text text-anchor="start" x="558.84" y="-5065.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<text text-anchor="start" x="592.63" y="-5065.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="601.52" y="-5065.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-4984.22 116.72,-5044.22 642.72,-5044.22 642.72,-4984.22 116.72,-4984.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-4984.22 116.72,-5044.22 642.72,-5044.22 642.72,-4984.22 116.72,-4984.22"/>
<text text-anchor="start" x="127.72" y="-5004.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">fixes_added_row_service &#160;&#160;&#160;</text>
<text text-anchor="start" x="558.84" y="-5005.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<text text-anchor="start" x="592.63" y="-5005.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="601.52" y="-5005.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-4924.22 116.72,-4984.22 642.72,-4984.22 642.72,-4924.22 116.72,-4924.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-4924.22 116.72,-4984.22 642.72,-4984.22 642.72,-4924.22 116.72,-4924.22"/>
<text text-anchor="start" x="127.72" y="-4944.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">fixes_added_row_ours &#160;&#160;&#160;</text>
<text text-anchor="start" x="558.84" y="-4945.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<text text-anchor="start" x="592.63" y="-4945.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="601.52" y="-4945.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-4864.22 116.72,-4924.22 642.72,-4924.22 642.72,-4864.22 116.72,-4864.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-4864.22 116.72,-4924.22 642.72,-4924.22 642.72,-4864.22 116.72,-4864.22"/>
<text text-anchor="start" x="127.72" y="-4884.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">fixes_header_service &#160;&#160;&#160;</text>
<text text-anchor="start" x="558.84" y="-4885.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<text text-anchor="start" x="592.63" y="-4885.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="601.52" y="-4885.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-4804.22 116.72,-4864.22 642.72,-4864.22 642.72,-4804.22 116.72,-4804.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-4804.22 116.72,-4864.22 642.72,-4864.22 642.72,-4804.22 116.72,-4804.22"/>
<text text-anchor="start" x="127.72" y="-4824.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">fixes_header_ours &#160;&#160;&#160;</text>
<text text-anchor="start" x="558.84" y="-4825.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<text text-anchor="start" x="592.63" y="-4825.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="601.52" y="-4825.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-4744.22 116.72,-4804.22 642.72,-4804.22 642.72,-4744.22 116.72,-4744.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-4744.22 116.72,-4804.22 642.72,-4804.22 642.72,-4744.22 116.72,-4744.22"/>
<text text-anchor="start" x="127.72" y="-4764.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">fixes_osv_period_account &#160;&#160;&#160;</text>
<text text-anchor="start" x="558.84" y="-4765.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<text text-anchor="start" x="592.63" y="-4765.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="601.52" y="-4765.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-4684.22 116.72,-4744.22 642.72,-4744.22 642.72,-4684.22 116.72,-4684.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-4684.22 116.72,-4744.22 642.72,-4744.22 642.72,-4684.22 116.72,-4684.22"/>
<text text-anchor="start" x="127.72" y="-4704.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">checks_accepted &#160;&#160;&#160;</text>
<text text-anchor="start" x="478.79" y="-4705.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">boolean</text>
<text text-anchor="start" x="592.63" y="-4705.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="601.52" y="-4705.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-4624.22 116.72,-4684.22 642.72,-4684.22 642.72,-4624.22 116.72,-4624.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-4624.22 116.72,-4684.22 642.72,-4684.22 642.72,-4624.22 116.72,-4624.22"/>
<text text-anchor="start" x="127.72" y="-4644.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">issue_count_at_outcome &#160;&#160;&#160;</text>
<text text-anchor="start" x="558.84" y="-4645.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">int</text>
<text text-anchor="start" x="592.63" y="-4645.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="601.52" y="-4645.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-4564.22 116.72,-4624.22 642.72,-4624.22 642.72,-4564.22 116.72,-4564.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-4564.22 116.72,-4624.22 642.72,-4624.22 642.72,-4564.22 116.72,-4564.22"/>
<text text-anchor="start" x="127.72" y="-4584.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">report_date &#160;&#160;&#160;</text>
<text text-anchor="start" x="569.46" y="-4585.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">date</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-4504.22 116.72,-4564.22 642.72,-4564.22 642.72,-4504.22 116.72,-4504.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-4504.22 116.72,-4564.22 642.72,-4564.22 642.72,-4504.22 116.72,-4504.22"/>
<text text-anchor="start" x="127.72" y="-4524.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">confirmed_by &#160;&#160;&#160;</text>
<text text-anchor="start" x="571.25" y="-4525.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-4444.22 116.72,-4504.22 642.72,-4504.22 642.72,-4444.22 116.72,-4444.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-4444.22 116.72,-4504.22 642.72,-4504.22 642.72,-4444.22 116.72,-4444.22"/>
<text text-anchor="start" x="127.72" y="-4464.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">payload &#160;&#160;&#160;</text>
<text text-anchor="start" x="516.16" y="-4465.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">jsonb</text>
<text text-anchor="start" x="592.63" y="-4465.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="601.52" y="-4465.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="116.72,-4384.22 116.72,-4444.22 642.72,-4444.22 642.72,-4384.22 116.72,-4384.22"/>
<polygon fill="none" stroke="#29235c" points="116.72,-4384.22 116.72,-4444.22 642.72,-4444.22 642.72,-4384.22 116.72,-4384.22"/>
<text text-anchor="start" x="127.55" y="-4404.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">payload_schema_version &#160;&#160;&#160;</text>
<text text-anchor="start" x="525.38" y="-4405.42" 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="115.72,-4383.22 115.72,-5645.22 643.72,-5645.22 643.72,-4383.22 115.72,-4383.22"/>
</a>
</g>
</g>
<!-- quality_outcome_fact&#45;&gt;quality_outcome -->
<g id="edge4" class="edge">
<title>quality_outcome_fact:e&#45;&gt;quality_outcome:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M643.72,-5434.22C807.84,-5434.22 758.52,-5676.22 922.65,-5676.22"/>
</g>
<!-- quality_outcome_fact&#45;&gt;quality_cause -->
<g id="edge5" class="edge">
<title>quality_outcome_fact:e&#45;&gt;quality_cause:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M643.72,-5314.22C731.65,-5314.22 724.88,-5239.71 795.43,-5187.22 870.66,-5131.26 877.88,-5071.22 971.65,-5071.22"/>
</g>
<!-- quality_failure_fact -->
<g id="quality_failure_fact" class="node">
<title>quality_failure_fact</title>
<g id="a_quality_failure_fact"><a xlink:title="quality_failure_fact&#10;Технический отказ задания распознавания (recognition_job.status error/timeout/dlq) или неповторяемая ошибка маппинга (MappingFatal). Считается по файлам, не по документам — знаменатель «отказавших файлов от загруженных того же pipeline» (§14), фильтр по типу документа не действует. FILE_REPROCESS: отказ первой попытки остаётся фактом, документы удачной попытки получают свои intake/outcome. Нет payload/payload_schema_version — все поля плоские.">
<ellipse fill="none" stroke="black" stroke-width="0" cx="379.72" cy="-639.22" rx="379.93" ry="639.45"/>
<polygon fill="#1d71b8" stroke="transparent" points="113.72,-1029.22 113.72,-1089.22 646.72,-1089.22 646.72,-1029.22 113.72,-1029.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-1029.22 113.72,-1089.22 646.72,-1089.22 646.72,-1029.22 113.72,-1029.22"/>
<text text-anchor="start" x="184.6" y="-1050.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;quality_failure_fact &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-969.22 113.72,-1029.22 646.72,-1029.22 646.72,-969.22 113.72,-969.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-969.22 113.72,-1029.22 646.72,-1029.22 646.72,-969.22 113.72,-969.22"/>
<text text-anchor="start" x="124.72" y="-990.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">id</text>
<text text-anchor="start" x="149.61" y="-990.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> &#160;&#160;&#160;</text>
<text text-anchor="start" x="575.25" y="-990.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-909.22 113.72,-969.22 646.72,-969.22 646.72,-909.22 113.72,-909.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-909.22 113.72,-969.22 646.72,-969.22 646.72,-909.22 113.72,-909.22"/>
<text text-anchor="start" x="124.72" y="-929.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">job_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="536.16" y="-930.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<text text-anchor="start" x="596.63" y="-930.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.52" y="-930.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-849.22 113.72,-909.22 646.72,-909.22 646.72,-849.22 113.72,-849.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-849.22 113.72,-909.22 646.72,-909.22 646.72,-849.22 113.72,-849.22"/>
<text text-anchor="start" x="124.72" y="-869.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">file_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="536.16" y="-870.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<text text-anchor="start" x="596.63" y="-870.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.52" y="-870.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-789.22 113.72,-849.22 646.72,-849.22 646.72,-789.22 113.72,-789.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-789.22 113.72,-849.22 646.72,-849.22 646.72,-789.22 113.72,-789.22"/>
<text text-anchor="start" x="124.72" y="-809.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">attempt &#160;&#160;&#160;</text>
<text text-anchor="start" x="488.2" y="-810.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">smallint</text>
<text text-anchor="start" x="596.63" y="-810.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.52" y="-810.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-729.22 113.72,-789.22 646.72,-789.22 646.72,-729.22 113.72,-729.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-729.22 113.72,-789.22 646.72,-789.22 646.72,-729.22 113.72,-729.22"/>
<text text-anchor="start" x="124.72" y="-749.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">legal_entity_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="536.16" y="-750.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<text text-anchor="start" x="596.63" y="-750.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.52" y="-750.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-669.22 113.72,-729.22 646.72,-729.22 646.72,-669.22 113.72,-669.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-669.22 113.72,-729.22 646.72,-729.22 646.72,-669.22 113.72,-669.22"/>
<text text-anchor="start" x="124.72" y="-689.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">legal_entity_name &#160;&#160;&#160;</text>
<text text-anchor="start" x="489.95" y="-690.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<text text-anchor="start" x="596.63" y="-690.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.52" y="-690.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-609.22 113.72,-669.22 646.72,-669.22 646.72,-609.22 113.72,-609.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-609.22 113.72,-669.22 646.72,-669.22 646.72,-609.22 113.72,-609.22"/>
<text text-anchor="start" x="124.72" y="-629.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">group_id &#160;&#160;&#160;</text>
<text text-anchor="start" x="575.25" y="-630.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">uuid</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-549.22 113.72,-609.22 646.72,-609.22 646.72,-549.22 113.72,-549.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-549.22 113.72,-609.22 646.72,-609.22 646.72,-549.22 113.72,-549.22"/>
<text text-anchor="start" x="124.72" y="-569.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">group_name &#160;&#160;&#160;</text>
<text text-anchor="start" x="529.04" y="-570.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-489.22 113.72,-549.22 646.72,-549.22 646.72,-489.22 113.72,-489.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-489.22 113.72,-549.22 646.72,-549.22 646.72,-489.22 113.72,-489.22"/>
<text text-anchor="start" x="124.72" y="-509.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">pipeline &#160;&#160;&#160;</text>
<text text-anchor="start" x="312.11" y="-510.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">recognition_pipeline</text>
<text text-anchor="start" x="596.63" y="-510.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.52" y="-510.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-429.22 113.72,-489.22 646.72,-489.22 646.72,-429.22 113.72,-429.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-429.22 113.72,-489.22 646.72,-489.22 646.72,-429.22 113.72,-429.22"/>
<text text-anchor="start" x="124.72" y="-449.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">is_scan &#160;&#160;&#160;</text>
<text text-anchor="start" x="521.88" y="-450.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">boolean</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-369.22 113.72,-429.22 646.72,-429.22 646.72,-369.22 113.72,-369.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-369.22 113.72,-429.22 646.72,-429.22 646.72,-369.22 113.72,-369.22"/>
<text text-anchor="start" x="124.72" y="-389.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">service_name &#160;&#160;&#160;</text>
<text text-anchor="start" x="529.04" y="-390.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-309.22 113.72,-369.22 646.72,-369.22 646.72,-309.22 113.72,-309.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-309.22 113.72,-369.22 646.72,-369.22 646.72,-309.22 113.72,-309.22"/>
<text text-anchor="start" x="124.64" y="-329.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">failure_kind &#160;&#160;&#160;</text>
<text text-anchor="start" x="323.26" y="-330.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">quality_failure_kind</text>
<text text-anchor="start" x="597.09" y="-330.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.98" y="-330.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-249.22 113.72,-309.22 646.72,-309.22 646.72,-249.22 113.72,-249.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-249.22 113.72,-309.22 646.72,-309.22 646.72,-249.22 113.72,-249.22"/>
<text text-anchor="start" x="124.72" y="-269.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">error_code &#160;&#160;&#160;</text>
<text text-anchor="start" x="529.04" y="-270.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">varchar</text>
<polygon fill="#e7e2dd" stroke="transparent" points="113.72,-189.22 113.72,-249.22 646.72,-249.22 646.72,-189.22 113.72,-189.22"/>
<polygon fill="none" stroke="#29235c" points="113.72,-189.22 113.72,-249.22 646.72,-249.22 646.72,-189.22 113.72,-189.22"/>
<text text-anchor="start" x="124.72" y="-209.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">failed_at &#160;&#160;&#160;</text>
<text text-anchor="start" x="424.17" y="-210.42" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#29235c">timestamptz</text>
<text text-anchor="start" x="596.63" y="-210.42" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c"> </text>
<text text-anchor="start" x="605.52" y="-210.42" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#29235c">(!)</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="112.22,-188.22 112.22,-1090.22 647.22,-1090.22 647.22,-188.22 112.22,-188.22"/>
</a>
</g>
</g>
<!-- quality_failure_fact&#45;&gt;recognition_pipeline -->
<g id="edge6" class="edge">
<title>quality_failure_fact:e&#45;&gt;recognition_pipeline:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M647.72,-519.22C1058.14,-519.22 598.22,-1369.22 1008.65,-1369.22"/>
</g>
<!-- quality_failure_fact&#45;&gt;quality_failure_kind -->
<g id="edge7" class="edge">
<title>quality_failure_fact:e&#45;&gt;quality_failure_kind:w</title>
<path fill="none" stroke="#29235c" stroke-width="3" d="M647.72,-339.22C810.35,-339.22 851.01,-339.22 1013.65,-339.22"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 70 KiB

View File

@ -54,6 +54,10 @@ PARTS = {
["correction", "vgo_assignment", "goodwill", "kfo_result", "kfo_result_line", "kfo_result_line_company", "client_kfo_line"], ["correction", "vgo_assignment", "goodwill", "kfo_result", "kfo_result_line", "kfo_result_line_company", "client_kfo_line"],
), ),
"09_audit_ex": ("Комментарии, аудит, ЕХФД", ["comment", "audit_event", "ex_snapshot", "ex_snapshot_member", "ex_snapshot_item"]), "09_audit_ex": ("Комментарии, аудит, ЕХФД", ["comment", "audit_event", "ex_snapshot", "ex_snapshot_member", "ex_snapshot_item"]),
"10_quality_metrics": (
"Метрики качества первички",
["quality_intake_fact", "quality_outcome_fact", "quality_failure_fact"],
),
} }
LEGEND = ( LEGEND = (