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

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

389 lines
44 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.47.0 (20210316.0004)
-->
<!-- Title: dbml Pages: 1 -->
<svg width="2056pt" height="2852pt"
viewBox="0.00 0.00 2055.66 2851.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)">
<title>dbml</title>
<!-- business_segment -->
<g id="business_segment" class="node">
<title>business_segment</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="1752.79" cy="-2164.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="none" stroke="#29235c" points="1546.79,-2224.24 1546.79,-2284.24 1959.79,-2284.24 1959.79,-2224.24 1546.79,-2224.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>
<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="none" stroke="#29235c" points="1546.79,-2164.24 1546.79,-2224.24 1959.79,-2224.24 1959.79,-2164.24 1546.79,-2164.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>
<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="none" stroke="#29235c" points="1546.79,-2104.24 1546.79,-2164.24 1959.79,-2164.24 1959.79,-2104.24 1546.79,-2104.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>
<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="none" stroke="#29235c" points="1546.79,-2044.24 1546.79,-2104.24 1959.79,-2104.24 1959.79,-2044.24 1546.79,-2044.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>
<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"/>
</g>
<!-- permission_object -->
<g id="permission_object" class="node">
<title>permission_object</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="1752.79" cy="-1087.24" rx="288.5" ry="384.83"/>
<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="none" stroke="#29235c" points="1550.79,-1297.24 1550.79,-1357.24 1954.79,-1357.24 1954.79,-1297.24 1550.79,-1297.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>
<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="none" stroke="#29235c" points="1550.79,-1237.24 1550.79,-1297.24 1954.79,-1297.24 1954.79,-1237.24 1550.79,-1237.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>
<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="none" stroke="#29235c" points="1550.79,-1177.24 1550.79,-1237.24 1954.79,-1237.24 1954.79,-1177.24 1550.79,-1177.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>
<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="none" stroke="#29235c" points="1550.79,-1117.24 1550.79,-1177.24 1954.79,-1177.24 1954.79,-1117.24 1550.79,-1117.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>
<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="none" stroke="#29235c" points="1550.79,-1057.24 1550.79,-1117.24 1954.79,-1117.24 1954.79,-1057.24 1550.79,-1057.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>
<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="none" stroke="#29235c" points="1550.79,-997.24 1550.79,-1057.24 1954.79,-1057.24 1954.79,-997.24 1550.79,-997.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>
<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="none" stroke="#29235c" points="1550.79,-937.24 1550.79,-997.24 1954.79,-997.24 1954.79,-937.24 1550.79,-937.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>
<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="none" stroke="#29235c" points="1550.79,-877.24 1550.79,-937.24 1954.79,-937.24 1954.79,-877.24 1550.79,-877.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>
<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="none" stroke="#29235c" points="1550.79,-817.24 1550.79,-877.24 1954.79,-877.24 1954.79,-817.24 1550.79,-817.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>
<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"/>
</g>
<!-- permission_action -->
<g id="permission_action" class="node">
<title>permission_action</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="1752.79" cy="-342.24" rx="288.5" ry="342.48"/>
<polygon fill="#29235c" stroke="transparent" points="1550.79,-522.24 1550.79,-582.24 1954.79,-582.24 1954.79,-522.24 1550.79,-522.24"/>
<polygon fill="none" stroke="#29235c" points="1550.79,-522.24 1550.79,-582.24 1954.79,-582.24 1954.79,-522.24 1550.79,-522.24"/>
<text text-anchor="start" x="1561.64" y="-543.44" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="32.00" fill="#ffffff"> &#160;&#160;&#160;&#160;&#160;&#160;permission_action &#160;&#160;&#160;&#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-462.24 1550.79,-522.24 1954.79,-522.24 1954.79,-462.24 1550.79,-462.24"/>
<polygon fill="none" stroke="#29235c" points="1550.79,-462.24 1550.79,-522.24 1954.79,-522.24 1954.79,-462.24 1550.79,-462.24"/>
<text text-anchor="start" x="1676.33" y="-483.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;VIEW &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-402.24 1550.79,-462.24 1954.79,-462.24 1954.79,-402.24 1550.79,-402.24"/>
<polygon fill="none" stroke="#29235c" points="1550.79,-402.24 1550.79,-462.24 1954.79,-462.24 1954.79,-402.24 1550.79,-402.24"/>
<text text-anchor="start" x="1680.78" y="-423.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;EDIT &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-342.24 1550.79,-402.24 1954.79,-402.24 1954.79,-342.24 1550.79,-342.24"/>
<polygon fill="none" stroke="#29235c" points="1550.79,-342.24 1550.79,-402.24 1954.79,-402.24 1954.79,-342.24 1550.79,-342.24"/>
<text text-anchor="start" x="1639.87" y="-363.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;APPROVE &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-282.24 1550.79,-342.24 1954.79,-342.24 1954.79,-282.24 1550.79,-282.24"/>
<polygon fill="none" stroke="#29235c" points="1550.79,-282.24 1550.79,-342.24 1954.79,-342.24 1954.79,-282.24 1550.79,-282.24"/>
<text text-anchor="start" x="1659.44" y="-303.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;VERIFY &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-222.24 1550.79,-282.24 1954.79,-282.24 1954.79,-222.24 1550.79,-222.24"/>
<polygon fill="none" stroke="#29235c" points="1550.79,-222.24 1550.79,-282.24 1954.79,-282.24 1954.79,-222.24 1550.79,-222.24"/>
<text text-anchor="start" x="1654.99" y="-243.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;DELETE &#160;&#160;&#160;</text>
<polygon fill="#e7e2dd" stroke="transparent" points="1550.79,-162.24 1550.79,-222.24 1954.79,-222.24 1954.79,-162.24 1550.79,-162.24"/>
<polygon fill="none" stroke="#29235c" points="1550.79,-162.24 1550.79,-222.24 1954.79,-222.24 1954.79,-162.24 1550.79,-162.24"/>
<text text-anchor="start" x="1651.44" y="-183.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,-102.24 1550.79,-162.24 1954.79,-162.24 1954.79,-102.24 1550.79,-102.24"/>
<polygon fill="none" stroke="#29235c" points="1550.79,-102.24 1550.79,-162.24 1954.79,-162.24 1954.79,-102.24 1550.79,-102.24"/>
<text text-anchor="start" x="1665.68" y="-123.44" font-family="Helvetica,sans-Serif" font-style="italic" font-size="32.00" fill="#1d71b8"> &#160;&#160;&#160;ADMIN &#160;&#160;&#160;</text>
<polygon fill="none" stroke="#29235c" stroke-width="2" points="1549.79,-101.24 1549.79,-583.24 1955.79,-583.24 1955.79,-101.24 1549.79,-101.24"/>
</g>
<!-- regional_office -->
<g id="regional_office" class="node">
<title>regional_office</title>
<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"/>
<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="none" stroke="#29235c" points="1575.79,-2644.24 1575.79,-2704.24 1929.79,-2704.24 1929.79,-2644.24 1575.79,-2644.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>
<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="none" stroke="#29235c" points="1575.79,-2584.24 1575.79,-2644.24 1929.79,-2644.24 1929.79,-2584.24 1575.79,-2584.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="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="1858.33" y="-2605.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"/>
</a>
</g>
</g>
<!-- app_user -->
<g id="app_user" class="node">
<title>app_user</title>
<ellipse fill="none" stroke="black" stroke-width="0" cx="1001.91" cy="-2374.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="none" stroke="#29235c" points="706.91,-2644.24 706.91,-2704.24 1296.91,-2704.24 1296.91,-2644.24 706.91,-2644.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>
<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="none" stroke="#29235c" points="706.91,-2584.24 706.91,-2644.24 1296.91,-2644.24 1296.91,-2584.24 706.91,-2584.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="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="1225.44" y="-2605.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="none" stroke="#29235c" points="706.91,-2524.24 706.91,-2584.24 1296.91,-2584.24 1296.91,-2524.24 706.91,-2524.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="1179.24" y="-2545.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="none" stroke="#29235c" points="706.91,-2464.24 706.91,-2524.24 1296.91,-2524.24 1296.91,-2464.24 706.91,-2464.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="1179.24" y="-2485.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="none" stroke="#29235c" points="706.91,-2404.24 706.91,-2464.24 1296.91,-2464.24 1296.91,-2404.24 706.91,-2404.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="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="1246.82" y="-2425.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>
<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="none" stroke="#29235c" points="706.91,-2344.24 706.91,-2404.24 1296.91,-2404.24 1296.91,-2344.24 706.91,-2344.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="1179.24" y="-2365.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="none" stroke="#29235c" points="706.91,-2284.24 706.91,-2344.24 1296.91,-2344.24 1296.91,-2284.24 706.91,-2284.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="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="1246.82" y="-2305.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>
<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="none" stroke="#29235c" points="706.91,-2224.24 706.91,-2284.24 1296.91,-2284.24 1296.91,-2224.24 706.91,-2224.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="1019.54" y="-2245.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="none" stroke="#29235c" points="706.91,-2164.24 706.91,-2224.24 1296.91,-2224.24 1296.91,-2164.24 706.91,-2164.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="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="1246.82" y="-2185.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>
<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="none" stroke="#29235c" points="706.91,-2104.24 706.91,-2164.24 1296.91,-2164.24 1296.91,-2104.24 706.91,-2104.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="1113.46" y="-2125.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="none" stroke="#29235c" points="706.91,-2044.24 706.91,-2104.24 1296.91,-2104.24 1296.91,-2044.24 706.91,-2044.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="1113.46" y="-2065.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"/>
</g>
<!-- app_user&#45;&gt;business_segment -->
<g id="edge13" class="edge">
<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"/>
</g>
<!-- app_user&#45;&gt;regional_office -->
<!-- app_user&#45;&gt;regional_office -->
<g id="edge2" class="edge">
<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"/>
<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"/>
<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="1304.13" y="-2323.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
<!-- role -->
<g id="role" class="node">
<title>role</title>
<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"/>
<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="none" stroke="#29235c" points="826.91,-1737.24 826.91,-1797.24 1177.91,-1797.24 1177.91,-1737.24 826.91,-1737.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>
<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="none" stroke="#29235c" points="826.91,-1677.24 826.91,-1737.24 1177.91,-1737.24 1177.91,-1677.24 826.91,-1677.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="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="1106.44" y="-1698.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="none" stroke="#29235c" points="826.91,-1617.24 826.91,-1677.24 1177.91,-1677.24 1177.91,-1617.24 826.91,-1617.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="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="1127.82" y="-1638.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>
<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="none" stroke="#29235c" points="826.91,-1557.24 826.91,-1617.24 1177.91,-1617.24 1177.91,-1557.24 826.91,-1557.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="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="1127.82" y="-1578.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>
<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="none" stroke="#29235c" points="826.91,-1497.24 826.91,-1557.24 1177.91,-1557.24 1177.91,-1497.24 826.91,-1497.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="1115.33" y="-1518.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="none" stroke="#29235c" points="826.91,-1437.24 826.91,-1497.24 1177.91,-1497.24 1177.91,-1437.24 826.91,-1437.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="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="1128.28" y="-1458.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>
<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="none" stroke="#29235c" points="826.91,-1377.24 826.91,-1437.24 1177.91,-1437.24 1177.91,-1377.24 826.91,-1377.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="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="1127.82" y="-1398.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>
<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"/>
</a>
</g>
</g>
<!-- permission -->
<g id="permission" class="node">
<title>permission</title>
<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"/>
<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="none" stroke="#29235c" points="743.91,-1119.24 743.91,-1179.24 1260.91,-1179.24 1260.91,-1119.24 743.91,-1119.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>
<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="none" stroke="#29235c" points="743.91,-1059.24 743.91,-1119.24 1260.91,-1119.24 1260.91,-1059.24 743.91,-1059.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="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="1189.44" y="-1080.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="none" stroke="#29235c" points="743.91,-999.24 743.91,-1059.24 1260.91,-1059.24 1260.91,-999.24 743.91,-999.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="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="1210.82" y="-1020.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>
<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="none" stroke="#29235c" points="743.91,-939.24 743.91,-999.24 1260.91,-999.24 1260.91,-939.24 743.91,-939.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="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="1211.27" y="-960.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>
<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="none" stroke="#29235c" points="743.91,-879.24 743.91,-939.24 1260.91,-939.24 1260.91,-879.24 743.91,-879.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="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="1210.82" y="-900.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>
<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="none" stroke="#29235c" points="743.91,-819.24 743.91,-879.24 1260.91,-879.24 1260.91,-819.24 743.91,-819.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="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="1210.82" y="-840.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>
<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="none" stroke="#29235c" points="743.91,-759.24 743.91,-819.24 1260.91,-819.24 1260.91,-759.24 743.91,-759.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="1198.33" y="-780.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"/>
</a>
</g>
</g>
<!-- permission&#45;&gt;permission_object -->
<g id="edge14" class="edge">
<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"/>
</g>
<!-- permission&#45;&gt;permission_action -->
<g id="edge15" class="edge">
<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"/>
</g>
<!-- role_permission -->
<g id="role_permission" class="node">
<title>role_permission</title>
<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"/>
<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="none" stroke="#29235c" points="81.94,-1737.24 81.94,-1797.24 463.94,-1797.24 463.94,-1737.24 81.94,-1737.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>
<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="none" stroke="#29235c" points="81.94,-1677.24 81.94,-1737.24 463.94,-1737.24 463.94,-1677.24 81.94,-1677.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="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="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="413.85" y="-1698.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>
<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="none" stroke="#29235c" points="81.94,-1617.24 81.94,-1677.24 463.94,-1677.24 463.94,-1617.24 81.94,-1617.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="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="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="413.85" y="-1638.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>
<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="none" stroke="#29235c" points="81.94,-1557.24 81.94,-1617.24 463.94,-1617.24 463.94,-1557.24 81.94,-1557.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="392.48" y="-1578.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="none" stroke="#29235c" points="81.94,-1497.24 81.94,-1557.24 463.94,-1557.24 463.94,-1497.24 81.94,-1497.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="280.72" y="-1518.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"/>
</a>
</g>
</g>
<!-- role_permission&#45;&gt;app_user -->
<!-- role_permission&#45;&gt;app_user -->
<g id="edge8" class="edge">
<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"/>
<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"/>
<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="471.17" y="-1596.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
<!-- role_permission&#45;&gt;role -->
<!-- role_permission&#45;&gt;role -->
<g id="edge4" class="edge">
<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"/>
<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"/>
<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="471.17" y="-1716.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
<!-- role_permission&#45;&gt;permission -->
<!-- role_permission&#45;&gt;permission -->
<g id="edge6" class="edge">
<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"/>
<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"/>
<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="471.17" y="-1656.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
<!-- user_role -->
<g id="user_role" class="node">
<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)">
<ellipse fill="none" stroke="black" stroke-width="0" cx="272.94" cy="-2318.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="none" stroke="#29235c" points="133.94,-2378.24 133.94,-2438.24 412.94,-2438.24 412.94,-2378.24 133.94,-2378.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>
<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="none" stroke="#29235c" points="133.94,-2318.24 133.94,-2378.24 412.94,-2378.24 412.94,-2318.24 133.94,-2318.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="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="341.48" y="-2339.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="none" stroke="#29235c" points="133.94,-2258.24 133.94,-2318.24 412.94,-2318.24 412.94,-2258.24 133.94,-2258.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="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="362.85" y="-2279.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>
<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="none" stroke="#29235c" points="133.94,-2198.24 133.94,-2258.24 412.94,-2258.24 412.94,-2198.24 133.94,-2198.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="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="362.85" y="-2219.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>
<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"/>
</a>
</g>
</g>
<!-- user_role&#45;&gt;app_user -->
<!-- user_role&#45;&gt;app_user -->
<g id="edge10" class="edge">
<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"/>
<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"/>
<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="420.17" y="-2297.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
<!-- user_role&#45;&gt;role -->
<!-- user_role&#45;&gt;role -->
<g id="edge12" class="edge">
<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"/>
<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"/>
<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="420.17" y="-2237.84" font-family="Helvetica,sans-Serif" font-size="32.00" fill="#29235c">*</text>
</g>
</g>
</svg>