Files
Investidor-V2/Doc/.$EDA.drawio.bkp
T
Nelson_Matsinhe a1b553372e
tests / ci (push) Canceled after 0s
ajuste do tamanho da navbar
2026-10-22 15:26:56 +02:00

2 lines
116 KiB
XML

<?xml version='1.0' encoding='utf-8'?>
<mxfile host="app.diagrams.net" modified="2026-10-13T00:00:00.000Z" agent="Codex" version="24.7.17" type="device"><diagram id="model-1" name="Oportunidades e submissões"><mxGraphModel dx="2600" dy="2610" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2600" pageHeight="2610" math="0" shadow="0"><root><mxCell id="0" /><mxCell id="1" parent="0" /><mxCell id="p0_title" value="Esquema relacional — Oportunidades e submissões" style="text;html=1;align=left;verticalAlign=middle;fontSize=22;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1"><mxGeometry x="30" y="20" width="1600" height="40" as="geometry" /></mxCell><mxCell id="p0_note" value="Fonte: migrations e manifestos do repositório. FK entre páginas aparece como referência no cartão; layout não declara relações adicionais." style="text;html=1;align=left;verticalAlign=middle;fontSize=11;fontColor=#475569;" vertex="1" parent="1"><mxGeometry x="30" y="65" width="2200" height="30" as="geometry" /></mxCell><mxCell id="p0_t0" value="&lt;b&gt;interest_requests&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK opportunity_id → opportunities.id NULL&lt;br&gt;FK reviewed_by → users.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t1" value="&lt;b&gt;interest_submission_receipts&lt;/b&gt;&lt;hr&gt;FK interest_request_id → interest_requests.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t2" value="&lt;b&gt;investment_accounts&lt;/b&gt;&lt;hr&gt;FK user_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t3" value="&lt;b&gt;investment_company_declarations&lt;/b&gt;&lt;hr&gt;FK user_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t4" value="&lt;b&gt;investment_dossiers&lt;/b&gt;&lt;hr&gt;FK cluster_id → economic_clusters.id NULL&lt;br&gt;FK corridor_id → development_corridors.id NULL&lt;br&gt;FK editor_id → users.id NULL&lt;br&gt;FK project_id → projects.id NULL&lt;br&gt;FK reviewer_id → users.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t5" value="&lt;b&gt;investment_gaps&lt;/b&gt;&lt;hr&gt;FK cluster_id → economic_clusters.id&lt;br&gt;FK value_chain_id → value_chains.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t6" value="&lt;b&gt;investment_messages&lt;/b&gt;&lt;hr&gt;FK actor_id → users.id&lt;br&gt;FK submission_id → investment_submissions.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t7" value="&lt;b&gt;investment_notifications&lt;/b&gt;&lt;hr&gt;FK submission_id → investment_submissions.id&lt;br&gt;FK user_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t8" value="&lt;b&gt;investment_reference_options&lt;/b&gt;&lt;hr&gt;(sem FK identificada)" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t9" value="&lt;b&gt;investment_specific_needs&lt;/b&gt;&lt;hr&gt;FK category_id → investment_reference_options.id&lt;br&gt;FK option_id → investment_reference_options.id&lt;br&gt;FK priority_id → investment_reference_options.id NULL&lt;br&gt;FK submission_id → investment_submissions.id&lt;br&gt;FK unit_id → investment_reference_options.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t10" value="&lt;b&gt;investment_submission_attachments&lt;/b&gt;&lt;hr&gt;FK document_id → documents.id&lt;br&gt;FK submission_id → investment_submissions.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t11" value="&lt;b&gt;investment_submission_events&lt;/b&gt;&lt;hr&gt;FK actor_id → users.id&lt;br&gt;FK submission_id → investment_submissions.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t12" value="&lt;b&gt;investment_submission_revisions&lt;/b&gt;&lt;hr&gt;FK submission_id → investment_submissions.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="1170" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t13" value="&lt;b&gt;investment_submission_zones&lt;/b&gt;&lt;hr&gt;FK submission_id → investment_submissions.id&lt;br&gt;FK zone_id → investment_zones.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="1170" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t14" value="&lt;b&gt;investment_submissions&lt;/b&gt;&lt;hr&gt;FK dossier_id → investment_dossiers.id NULL&lt;br&gt;FK interest_request_id → interest_requests.id NULL&lt;br&gt;FK opportunity_id → opportunities.id NULL&lt;br&gt;FK user_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="1170" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t15" value="&lt;b&gt;investor_accounts&lt;/b&gt;&lt;hr&gt;FK investor_id → investors.id&lt;br&gt;FK user_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="1170" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t16" value="&lt;b&gt;opportunities&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK sector_id → sectors.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="1520" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t17" value="&lt;b&gt;opportunity_clusters&lt;/b&gt;&lt;hr&gt;FK cluster_id → economic_clusters.id&lt;br&gt;FK opportunity_id → opportunities.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="1520" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t18" value="&lt;b&gt;opportunity_corridors&lt;/b&gt;&lt;hr&gt;FK corridor_id → development_corridors.id&lt;br&gt;FK opportunity_id → opportunities.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="1520" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t19" value="&lt;b&gt;opportunity_facets&lt;/b&gt;&lt;hr&gt;FK opportunity_id → opportunities.id&lt;br&gt;FK option_id → investment_reference_options.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="1520" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t20" value="&lt;b&gt;opportunity_favourites&lt;/b&gt;&lt;hr&gt;FK opportunity_id → opportunities.id&lt;br&gt;FK user_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="1870" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t21" value="&lt;b&gt;opportunity_locations&lt;/b&gt;&lt;hr&gt;FK geo_location_id → geo_locations.id&lt;br&gt;FK opportunity_id → opportunities.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="1870" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t22" value="&lt;b&gt;opportunity_profiles&lt;/b&gt;&lt;hr&gt;FK opportunity_id → opportunities.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="1870" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t23" value="&lt;b&gt;opportunity_projects&lt;/b&gt;&lt;hr&gt;FK opportunity_id → opportunities.id&lt;br&gt;FK project_id → projects.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="1870" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_t24" value="&lt;b&gt;sectors&lt;/b&gt;&lt;hr&gt;PK id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="2220" width="570" height="280" as="geometry" /></mxCell><mxCell id="p0_e1" value="option_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p0_t8" target="p0_t19"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p0_e2" value="dossier_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p0_t4" target="p0_t14"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p0_e3" value="submission_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p0_t14" target="p0_t9"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p0_e4" value="category_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p0_t8" target="p0_t9"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p0_e5" value="option_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p0_t8" target="p0_t9"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p0_e6" value="unit_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p0_t8" target="p0_t9"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p0_e7" value="priority_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p0_t8" target="p0_t9"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p0_e8" value="submission_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p0_t14" target="p0_t10"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p0_e9" value="submission_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p0_t14" target="p0_t11"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p0_e10" value="submission_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p0_t14" target="p0_t6"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p0_e11" value="submission_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p0_t14" target="p0_t7"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p0_e12" value="submission_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p0_t14" target="p0_t12"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p0_e13" value="submission_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p0_t14" target="p0_t13"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p0_e132" value="sector_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p0_t24" target="p0_t16"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p0_e133" value="opportunity_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p0_t16" target="p0_t0"><mxGeometry relative="1" as="geometry" /></mxCell></root></mxGraphModel></diagram><diagram id="model-2" name="Projectos, geografia e territórios"><mxGraphModel dx="2600" dy="2260" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2600" pageHeight="2260" math="0" shadow="0"><root><mxCell id="0" /><mxCell id="1" parent="0" /><mxCell id="p1_title" value="Esquema relacional — Projectos, geografia e territórios" style="text;html=1;align=left;verticalAlign=middle;fontSize=22;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1"><mxGeometry x="30" y="20" width="1600" height="40" as="geometry" /></mxCell><mxCell id="p1_note" value="Fonte: migrations e manifestos do repositório. FK entre páginas aparece como referência no cartão; layout não declara relações adicionais." style="text;html=1;align=left;verticalAlign=middle;fontSize=11;fontColor=#475569;" vertex="1" parent="1"><mxGeometry x="30" y="65" width="2200" height="30" as="geometry" /></mxCell><mxCell id="p1_t0" value="&lt;b&gt;anchor_project_links&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK anchor_project_id → projects.id&lt;br&gt;FK cluster_id → economic_clusters.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t1" value="&lt;b&gt;authorities&lt;/b&gt;&lt;hr&gt;FK catalog_version_id → reference_catalog_versions.id&lt;br&gt;FK jurisdiction_id → geo_locations.id NULL&lt;br&gt;FK organization_id → organizations.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t2" value="&lt;b&gt;cluster_projects&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK cluster_id → economic_clusters.id&lt;br&gt;FK project_id → projects.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t3" value="&lt;b&gt;complementary_project_links&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK anchor_project_id → projects.id&lt;br&gt;FK complementary_project_id → projects.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t4" value="&lt;b&gt;corridor_clusters&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK cluster_id → economic_clusters.id&lt;br&gt;FK corridor_id → development_corridors.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t5" value="&lt;b&gt;corridor_locations&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK corridor_id → development_corridors.id&lt;br&gt;FK geo_location_id → geo_locations.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t6" value="&lt;b&gt;corridor_projects&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK corridor_id → development_corridors.id&lt;br&gt;FK project_id → projects.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t7" value="&lt;b&gt;development_corridors&lt;/b&gt;&lt;hr&gt;PK id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t8" value="&lt;b&gt;economic_activities&lt;/b&gt;&lt;hr&gt;FK catalog_version_id → reference_catalog_versions.id&lt;br&gt;FK sector_id → sectors.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t9" value="&lt;b&gt;economic_clusters&lt;/b&gt;&lt;hr&gt;PK id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t10" value="&lt;b&gt;geo_geometries&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK geo_location_id → geo_locations.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t11" value="&lt;b&gt;geo_locations&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK parent_id → geo_locations.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t12" value="&lt;b&gt;geo_names&lt;/b&gt;&lt;hr&gt;FK geo_location_id → geo_locations.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="1170" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t13" value="&lt;b&gt;geo_sources&lt;/b&gt;&lt;hr&gt;FK editor_id → users.id&lt;br&gt;FK reviewer_id → users.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="1170" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t14" value="&lt;b&gt;geo_territory_profiles&lt;/b&gt;&lt;hr&gt;FK capital_territory_id → geo_locations.id NULL&lt;br&gt;FK editor_id → users.id&lt;br&gt;FK geo_location_id → geo_locations.id&lt;br&gt;FK publisher_id → users.id NULL&lt;br&gt;FK reviewer_id → users.id NULL&lt;br&gt;FK source_id → geo_sources.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="1170" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t15" value="&lt;b&gt;geo_territory_revisions&lt;/b&gt;&lt;hr&gt;FK actor_id → users.id&lt;br&gt;FK geo_location_id → geo_locations.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="1170" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t16" value="&lt;b&gt;geo_write_receipts&lt;/b&gt;&lt;hr&gt;FK actor_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="1520" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t17" value="&lt;b&gt;project_documents&lt;/b&gt;&lt;hr&gt;PK project_id, document_id&lt;br&gt;FK document_id → documents.id&lt;br&gt;FK project_id → projects.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="1520" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t18" value="&lt;b&gt;project_locations&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK geo_location_id → geo_locations.id&lt;br&gt;FK project_id → projects.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="1520" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t19" value="&lt;b&gt;projects&lt;/b&gt;&lt;hr&gt;PK id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="1520" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t20" value="&lt;b&gt;reference_catalog_versions&lt;/b&gt;&lt;hr&gt;(sem FK identificada)" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="1870" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t21" value="&lt;b&gt;value_chain_links&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK from_value_chain_id → value_chains.id&lt;br&gt;FK to_value_chain_id → value_chains.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="1870" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_t22" value="&lt;b&gt;value_chains&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK cluster_id → economic_clusters.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="1870" width="570" height="280" as="geometry" /></mxCell><mxCell id="p1_e14" value="parent_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t11" target="p1_t11"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e15" value="geo_location_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t11" target="p1_t10"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e16" value="project_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t19" target="p1_t18"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e17" value="geo_location_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t11" target="p1_t18"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e18" value="cluster_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t9" target="p1_t22"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e19" value="from_value_chain_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t22" target="p1_t21"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e20" value="to_value_chain_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t22" target="p1_t21"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e21" value="cluster_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t9" target="p1_t2"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e22" value="project_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t19" target="p1_t2"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e23" value="anchor_project_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t19" target="p1_t0"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e24" value="cluster_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t9" target="p1_t0"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e25" value="anchor_project_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t19" target="p1_t3"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e26" value="complementary_project_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t19" target="p1_t3"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e27" value="corridor_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t7" target="p1_t5"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e28" value="geo_location_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t11" target="p1_t5"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e29" value="corridor_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t7" target="p1_t6"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e30" value="project_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t19" target="p1_t6"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e31" value="corridor_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t7" target="p1_t4"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e32" value="cluster_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t9" target="p1_t4"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e50" value="geo_location_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t11" target="p1_t14"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e51" value="source_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t13" target="p1_t14"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e52" value="capital_territory_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t11" target="p1_t14"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e53" value="geo_location_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t11" target="p1_t12"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e54" value="geo_location_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t11" target="p1_t15"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e63" value="catalog_version_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t20" target="p1_t1"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e64" value="jurisdiction_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t11" target="p1_t1"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p1_e65" value="catalog_version_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p1_t20" target="p1_t8"><mxGeometry relative="1" as="geometry" /></mxCell></root></mxGraphModel></diagram><diagram id="model-3" name="Zonas e fontes legais"><mxGraphModel dx="2600" dy="1500" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2600" pageHeight="1500" math="0" shadow="0"><root><mxCell id="0" /><mxCell id="1" parent="0" /><mxCell id="p2_title" value="Esquema relacional — Zonas e fontes legais" style="text;html=1;align=left;verticalAlign=middle;fontSize=22;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1"><mxGeometry x="30" y="20" width="1600" height="40" as="geometry" /></mxCell><mxCell id="p2_note" value="Fonte: migrations e manifestos do repositório. FK entre páginas aparece como referência no cartão; layout não declara relações adicionais." style="text;html=1;align=left;verticalAlign=middle;fontSize=11;fontColor=#475569;" vertex="1" parent="1"><mxGeometry x="30" y="65" width="2200" height="30" as="geometry" /></mxCell><mxCell id="p2_t0" value="&lt;b&gt;investment_item_opportunities&lt;/b&gt;&lt;hr&gt;FK item_id → investment_items.id&lt;br&gt;FK opportunity_id → opportunities.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p2_t1" value="&lt;b&gt;investment_item_projects&lt;/b&gt;&lt;hr&gt;FK item_id → investment_items.id&lt;br&gt;FK project_id → projects.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p2_t2" value="&lt;b&gt;investment_items&lt;/b&gt;&lt;hr&gt;(sem FK identificada)" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p2_t3" value="&lt;b&gt;investment_legal_sources&lt;/b&gt;&lt;hr&gt;FK owner_id → users.id&lt;br&gt;FK validator_id → users.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p2_t4" value="&lt;b&gt;investment_zone_attachment_events&lt;/b&gt;&lt;hr&gt;FK actor_id → users.id&lt;br&gt;FK attachment_id → investment_zone_attachments.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p2_t5" value="&lt;b&gt;investment_zone_attachments&lt;/b&gt;&lt;hr&gt;FK document_id → documents.id&lt;br&gt;FK publicly_selected_by → users.id NULL&lt;br&gt;FK reviewed_by → users.id NULL&lt;br&gt;FK uploaded_by → users.id&lt;br&gt;FK zone_id → investment_zones.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p2_t6" value="&lt;b&gt;investment_zone_geometries&lt;/b&gt;&lt;hr&gt;FK editor_id → users.id NULL&lt;br&gt;FK geometry_id → geo_geometries.id&lt;br&gt;FK legal_source_id → investment_legal_sources.id NULL&lt;br&gt;FK reviewer_id → users.id NULL&lt;br&gt;FK zone_id → investment_zones.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p2_t7" value="&lt;b&gt;investment_zone_links&lt;/b&gt;&lt;hr&gt;FK item_id → investment_items.id&lt;br&gt;FK zone_id → investment_zones.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p2_t8" value="&lt;b&gt;investment_zone_locations&lt;/b&gt;&lt;hr&gt;FK editor_id → users.id&lt;br&gt;FK geo_location_id → geo_locations.id&lt;br&gt;FK legal_source_id → investment_legal_sources.id NULL&lt;br&gt;FK reviewer_id → users.id NULL&lt;br&gt;FK zone_id → investment_zones.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p2_t9" value="&lt;b&gt;investment_zone_relations&lt;/b&gt;&lt;hr&gt;FK cluster_id → economic_clusters.id NULL&lt;br&gt;FK corridor_id → development_corridors.id NULL&lt;br&gt;FK project_id → projects.id NULL&lt;br&gt;FK zone_id → investment_zones.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p2_t10" value="&lt;b&gt;investment_zone_revisions&lt;/b&gt;&lt;hr&gt;FK actor_id → users.id&lt;br&gt;FK editor_id → users.id&lt;br&gt;FK legal_source_id → investment_legal_sources.id NULL&lt;br&gt;FK validator_id → users.id NULL&lt;br&gt;FK zone_id → investment_zones.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p2_t11" value="&lt;b&gt;investment_zones&lt;/b&gt;&lt;hr&gt;FK editor_id → users.id&lt;br&gt;FK legal_source_id → investment_legal_sources.id NULL&lt;br&gt;FK operator_id → organizations.id NULL&lt;br&gt;FK parent_zone_id → investment_zones.id NULL&lt;br&gt;FK reviewer_id → users.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p2_e33" value="legal_source_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p2_t3" target="p2_t11"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p2_e34" value="zone_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p2_t11" target="p2_t9"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p2_e38" value="item_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p2_t2" target="p2_t7"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p2_e39" value="zone_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p2_t11" target="p2_t7"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p2_e40" value="zone_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p2_t11" target="p2_t6"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p2_e42" value="legal_source_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p2_t3" target="p2_t6"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p2_e43" value="zone_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p2_t11" target="p2_t10"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p2_e44" value="legal_source_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p2_t3" target="p2_t10"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p2_e69" value="parent_zone_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p2_t11" target="p2_t11"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p2_e70" value="zone_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p2_t11" target="p2_t8"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p2_e72" value="legal_source_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p2_t3" target="p2_t8"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p2_e73" value="zone_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p2_t11" target="p2_t5"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p2_e74" value="attachment_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p2_t5" target="p2_t4"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p2_e75" value="item_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p2_t2" target="p2_t0"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p2_e76" value="item_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p2_t2" target="p2_t1"><mxGeometry relative="1" as="geometry" /></mxCell></root></mxGraphModel></diagram><diagram id="model-4" name="Negócios existentes e assistência fundiária"><mxGraphModel dx="2600" dy="1560" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2600" pageHeight="1560" math="0" shadow="0"><root><mxCell id="0" /><mxCell id="1" parent="0" /><mxCell id="p3_title" value="Esquema relacional — Negócios existentes e assistência fundiária" style="text;html=1;align=left;verticalAlign=middle;fontSize=22;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1"><mxGeometry x="30" y="20" width="1600" height="40" as="geometry" /></mxCell><mxCell id="p3_note" value="Fonte: migrations e manifestos do repositório. FK entre páginas aparece como referência no cartão; layout não declara relações adicionais." style="text;html=1;align=left;verticalAlign=middle;fontSize=11;fontColor=#475569;" vertex="1" parent="1"><mxGeometry x="30" y="65" width="2200" height="30" as="geometry" /></mxCell><mxCell id="p3_t0" value="&lt;b&gt;business_workflow_transitions&lt;/b&gt;&lt;hr&gt;FK actor_id → users.id NULL&lt;br&gt;FK existing_business_id → existing_businesses.id NULL&lt;br&gt;FK interest_request_id → interest_requests.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p3_t1" value="&lt;b&gt;existing_business_document_links&lt;/b&gt;&lt;hr&gt;FK document_id → documents.id&lt;br&gt;FK existing_business_id → existing_businesses.id NULL&lt;br&gt;FK interest_request_id → interest_requests.id NULL&lt;br&gt;FK uploaded_by → users.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p3_t2" value="&lt;b&gt;existing_business_locations&lt;/b&gt;&lt;hr&gt;FK admin_post_id → geo_locations.id NULL&lt;br&gt;FK district_id → geo_locations.id NULL&lt;br&gt;FK existing_business_id → existing_businesses.id&lt;br&gt;FK locality_id → geo_locations.id NULL&lt;br&gt;FK province_id → geo_locations.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p3_t3" value="&lt;b&gt;existing_business_mandates&lt;/b&gt;&lt;hr&gt;FK business_id → existing_businesses.id&lt;br&gt;FK document_id → documents.id&lt;br&gt;FK representative_user_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p3_t4" value="&lt;b&gt;existing_business_objects&lt;/b&gt;&lt;hr&gt;FK business_id → existing_businesses.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p3_t5" value="&lt;b&gt;existing_business_reviews&lt;/b&gt;&lt;hr&gt;FK actor_id → users.id&lt;br&gt;FK business_id → existing_businesses.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p3_t6" value="&lt;b&gt;existing_business_revisions&lt;/b&gt;&lt;hr&gt;FK actor_id → users.id&lt;br&gt;FK business_id → existing_businesses.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p3_t7" value="&lt;b&gt;existing_business_rights&lt;/b&gt;&lt;hr&gt;FK business_object_id → existing_business_objects.id NULL&lt;br&gt;FK existing_business_id → existing_businesses.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p3_t8" value="&lt;b&gt;existing_businesses&lt;/b&gt;&lt;hr&gt;FK investment_item_id → investment_items.id NULL&lt;br&gt;FK organization_id → organizations.id NULL&lt;br&gt;FK owner_user_id → users.id&lt;br&gt;FK sector_id → sectors.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p3_t9" value="&lt;b&gt;external_record_links&lt;/b&gt;&lt;hr&gt;FK existing_business_id → existing_businesses.id NULL&lt;br&gt;FK interest_request_id → interest_requests.id NULL&lt;br&gt;FK investor_id → investors.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p3_t10" value="&lt;b&gt;land_assistance_cases&lt;/b&gt;&lt;hr&gt;FK assigned_to → users.id NULL&lt;br&gt;FK interest_request_id → interest_requests.id NULL&lt;br&gt;FK user_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p3_t11" value="&lt;b&gt;land_assistance_documents&lt;/b&gt;&lt;hr&gt;FK case_id → land_assistance_cases.id&lt;br&gt;FK document_id → documents.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p3_t12" value="&lt;b&gt;land_assistance_events&lt;/b&gt;&lt;hr&gt;FK actor_id → users.id&lt;br&gt;FK case_id → land_assistance_cases.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="1170" width="570" height="280" as="geometry" /></mxCell><mxCell id="p3_t13" value="&lt;b&gt;land_assistance_revisions&lt;/b&gt;&lt;hr&gt;FK case_id → land_assistance_cases.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="1170" width="570" height="280" as="geometry" /></mxCell><mxCell id="p3_e46" value="business_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p3_t8" target="p3_t4"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p3_e47" value="business_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p3_t8" target="p3_t3"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p3_e48" value="business_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p3_t8" target="p3_t6"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p3_e49" value="business_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p3_t8" target="p3_t5"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p3_e55" value="existing_business_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p3_t8" target="p3_t2"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p3_e60" value="existing_business_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p3_t8" target="p3_t7"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p3_e61" value="business_object_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p3_t4" target="p3_t7"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p3_e62" value="existing_business_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p3_t8" target="p3_t1"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p3_e66" value="case_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p3_t10" target="p3_t13"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p3_e67" value="case_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p3_t10" target="p3_t12"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p3_e68" value="case_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p3_t10" target="p3_t11"><mxGeometry relative="1" as="geometry" /></mxCell></root></mxGraphModel></diagram><diagram id="model-5" name="Documentos e portal"><mxGraphModel dx="2600" dy="1500" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2600" pageHeight="1500" math="0" shadow="0"><root><mxCell id="0" /><mxCell id="1" parent="0" /><mxCell id="p4_title" value="Esquema relacional — Documentos e portal" style="text;html=1;align=left;verticalAlign=middle;fontSize=22;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1"><mxGeometry x="30" y="20" width="1600" height="40" as="geometry" /></mxCell><mxCell id="p4_note" value="Fonte: migrations e manifestos do repositório. FK entre páginas aparece como referência no cartão; layout não declara relações adicionais." style="text;html=1;align=left;verticalAlign=middle;fontSize=11;fontColor=#475569;" vertex="1" parent="1"><mxGeometry x="30" y="65" width="2200" height="30" as="geometry" /></mxCell><mxCell id="p4_t0" value="&lt;b&gt;aftercare_documents&lt;/b&gt;&lt;hr&gt;PK aftercare_plan_id, document_id&lt;br&gt;FK aftercare_plan_id → aftercare_plans.id&lt;br&gt;FK document_id → documents.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p4_t1" value="&lt;b&gt;document_malware_scans&lt;/b&gt;&lt;hr&gt;FK document_id → documents.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p4_t2" value="&lt;b&gt;documents&lt;/b&gt;&lt;hr&gt;PK id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p4_t3" value="&lt;b&gt;education_documents&lt;/b&gt;&lt;hr&gt;PK education_opportunity_id, document_id&lt;br&gt;FK document_id → documents.id&lt;br&gt;FK education_opportunity_id → education_opportunities.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p4_t4" value="&lt;b&gt;investor_documents&lt;/b&gt;&lt;hr&gt;PK investor_id, document_id&lt;br&gt;FK document_id → documents.id&lt;br&gt;FK investor_id → investors.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p4_t5" value="&lt;b&gt;journey_documents&lt;/b&gt;&lt;hr&gt;PK journey_id, document_id&lt;br&gt;FK document_id → documents.id&lt;br&gt;FK journey_id → investor_journeys.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p4_t6" value="&lt;b&gt;portal_partnerships&lt;/b&gt;&lt;hr&gt;FK organization_id → organizations.id NULL&lt;br&gt;FK reviewed_by → users.id NULL&lt;br&gt;FK sector_id → sectors.id NULL&lt;br&gt;FK user_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p4_t7" value="&lt;b&gt;portal_resource_links&lt;/b&gt;&lt;hr&gt;FK resource_id → portal_resources.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p4_t8" value="&lt;b&gt;portal_resource_revisions&lt;/b&gt;&lt;hr&gt;FK actor_user_id → users.id NULL&lt;br&gt;FK resource_id → portal_resources.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p4_t9" value="&lt;b&gt;portal_resources&lt;/b&gt;&lt;hr&gt;FK approved_by → users.id&lt;br&gt;FK created_by → users.id NULL&lt;br&gt;FK document_id → documents.id&lt;br&gt;FK duplicate_of_resource_id → portal_resources.id NULL&lt;br&gt;FK last_reviewed_by → users.id NULL&lt;br&gt;FK territory_id → geo_locations.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p4_e79" value="document_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p4_t2" target="p4_t4"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p4_e80" value="document_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p4_t2" target="p4_t5"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p4_e81" value="document_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p4_t2" target="p4_t0"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p4_e82" value="document_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p4_t2" target="p4_t3"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p4_e83" value="document_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p4_t2" target="p4_t9"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p4_e84" value="duplicate_of_resource_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p4_t9" target="p4_t9"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p4_e85" value="resource_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p4_t9" target="p4_t7"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p4_e86" value="resource_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p4_t9" target="p4_t8"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p4_e87" value="document_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p4_t2" target="p4_t1"><mxGeometry relative="1" as="geometry" /></mxCell></root></mxGraphModel></diagram><diagram id="model-6" name="CRM e jornada do investidor"><mxGraphModel dx="2600" dy="1560" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2600" pageHeight="1560" math="0" shadow="0"><root><mxCell id="0" /><mxCell id="1" parent="0" /><mxCell id="p5_title" value="Esquema relacional — CRM e jornada do investidor" style="text;html=1;align=left;verticalAlign=middle;fontSize=22;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1"><mxGeometry x="30" y="20" width="1600" height="40" as="geometry" /></mxCell><mxCell id="p5_note" value="Fonte: migrations e manifestos do repositório. FK entre páginas aparece como referência no cartão; layout não declara relações adicionais." style="text;html=1;align=left;verticalAlign=middle;fontSize=11;fontColor=#475569;" vertex="1" parent="1"><mxGeometry x="30" y="65" width="2200" height="30" as="geometry" /></mxCell><mxCell id="p5_t0" value="&lt;b&gt;activities&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK actor_user_id → users.id NULL&lt;br&gt;FK investor_id → investors.id NULL&lt;br&gt;FK opportunity_id → crm_opportunities.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p5_t1" value="&lt;b&gt;aftercare_plans&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK investor_id → investors.id&lt;br&gt;FK owner_user_id → users.id NULL&lt;br&gt;FK project_id → projects.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p5_t2" value="&lt;b&gt;constraints&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK aftercare_plan_id → aftercare_plans.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p5_t3" value="&lt;b&gt;contacts&lt;/b&gt;&lt;hr&gt;PK id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p5_t4" value="&lt;b&gt;crm_opportunities&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK lead_id → leads.id NULL&lt;br&gt;FK owner_user_id → users.id NULL&lt;br&gt;FK project_id → projects.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p5_t5" value="&lt;b&gt;escalations&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK constraint_id → constraints.id&lt;br&gt;FK escalated_by → users.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p5_t6" value="&lt;b&gt;investor_contacts&lt;/b&gt;&lt;hr&gt;PK investor_id, contact_id&lt;br&gt;FK contact_id → contacts.id&lt;br&gt;FK investor_id → investors.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p5_t7" value="&lt;b&gt;investor_journeys&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK dossier_id → investment_dossiers.id NULL&lt;br&gt;FK interest_request_id → interest_requests.id NULL&lt;br&gt;FK investor_id → investors.id&lt;br&gt;FK opportunity_id → crm_opportunities.id NULL&lt;br&gt;FK origin_dossier_id → investment_dossiers.id NULL&lt;br&gt;FK user_id → users.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p5_t8" value="&lt;b&gt;investors&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK organization_id → organizations.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p5_t9" value="&lt;b&gt;journey_steps&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK journey_id → investor_journeys.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p5_t10" value="&lt;b&gt;leads&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK interest_request_id → interest_requests.id NULL&lt;br&gt;FK investor_id → investors.id NULL&lt;br&gt;FK owner_user_id → users.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p5_t11" value="&lt;b&gt;submissions&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK journey_step_id → journey_steps.id&lt;br&gt;FK submitted_by → users.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p5_t12" value="&lt;b&gt;tasks&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK assignee_user_id → users.id NULL&lt;br&gt;FK existing_business_id → existing_businesses.id NULL&lt;br&gt;FK interest_request_id → interest_requests.id NULL&lt;br&gt;FK lead_id → leads.id NULL&lt;br&gt;FK opportunity_id → crm_opportunities.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="1170" width="570" height="280" as="geometry" /></mxCell><mxCell id="p5_e88" value="investor_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p5_t8" target="p5_t6"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p5_e89" value="contact_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p5_t3" target="p5_t6"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p5_e90" value="investor_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p5_t8" target="p5_t10"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p5_e91" value="lead_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p5_t10" target="p5_t4"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p5_e92" value="investor_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p5_t8" target="p5_t0"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p5_e93" value="opportunity_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p5_t4" target="p5_t0"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p5_e94" value="opportunity_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p5_t4" target="p5_t12"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p5_e95" value="investor_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p5_t8" target="p5_t7"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p5_e96" value="opportunity_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p5_t4" target="p5_t7"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p5_e97" value="journey_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p5_t7" target="p5_t9"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p5_e98" value="journey_step_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p5_t9" target="p5_t11"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p5_e99" value="investor_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p5_t8" target="p5_t1"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p5_e100" value="aftercare_plan_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p5_t1" target="p5_t2"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p5_e101" value="constraint_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p5_t2" target="p5_t5"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p5_e102" value="lead_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p5_t10" target="p5_t12"><mxGeometry relative="1" as="geometry" /></mxCell></root></mxGraphModel></diagram><diagram id="model-7" name="Educação e formação"><mxGraphModel dx="2600" dy="1500" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2600" pageHeight="1500" math="0" shadow="0"><root><mxCell id="0" /><mxCell id="1" parent="0" /><mxCell id="p6_title" value="Esquema relacional — Educação e formação" style="text;html=1;align=left;verticalAlign=middle;fontSize=22;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1"><mxGeometry x="30" y="20" width="1600" height="40" as="geometry" /></mxCell><mxCell id="p6_note" value="Fonte: migrations e manifestos do repositório. FK entre páginas aparece como referência no cartão; layout não declara relações adicionais." style="text;html=1;align=left;verticalAlign=middle;fontSize=11;fontColor=#475569;" vertex="1" parent="1"><mxGeometry x="30" y="65" width="2200" height="30" as="geometry" /></mxCell><mxCell id="p6_t0" value="&lt;b&gt;courses&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK provider_id → training_providers.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p6_t1" value="&lt;b&gt;education_investment_proposals&lt;/b&gt;&lt;hr&gt;FK created_by → users.id&lt;br&gt;FK labour_demand_id → labour_demands.id&lt;br&gt;FK opportunity_id → opportunities.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p6_t2" value="&lt;b&gt;education_opportunities&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK course_id → courses.id&lt;br&gt;FK geo_location_id → geo_locations.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p6_t3" value="&lt;b&gt;labour_demands&lt;/b&gt;&lt;hr&gt;FK geo_location_id → geo_locations.id&lt;br&gt;FK occupation_id → occupations.id&lt;br&gt;FK project_id → projects.id&lt;br&gt;FK reviewed_by → users.id NULL&lt;br&gt;FK skill_id → skills.id&lt;br&gt;FK submitted_by → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p6_t4" value="&lt;b&gt;occupations&lt;/b&gt;&lt;hr&gt;PK id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p6_t5" value="&lt;b&gt;skills&lt;/b&gt;&lt;hr&gt;PK id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p6_t6" value="&lt;b&gt;training_capacities&lt;/b&gt;&lt;hr&gt;FK course_id → courses.id&lt;br&gt;FK geo_location_id → geo_locations.id&lt;br&gt;FK occupation_id → occupations.id&lt;br&gt;FK reviewed_by → users.id NULL&lt;br&gt;FK skill_id → skills.id&lt;br&gt;FK submitted_by → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p6_t7" value="&lt;b&gt;training_needs&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK occupation_id → occupations.id NULL&lt;br&gt;FK project_id → projects.id NULL&lt;br&gt;FK skill_id → skills.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p6_t8" value="&lt;b&gt;training_providers&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK organization_id → organizations.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p6_e103" value="occupation_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p6_t4" target="p6_t7"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p6_e104" value="skill_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p6_t5" target="p6_t7"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p6_e105" value="provider_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p6_t8" target="p6_t0"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p6_e106" value="course_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p6_t0" target="p6_t2"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p6_e107" value="labour_demand_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p6_t3" target="p6_t1"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p6_e111" value="occupation_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p6_t4" target="p6_t3"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p6_e112" value="skill_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p6_t5" target="p6_t3"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p6_e113" value="occupation_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p6_t4" target="p6_t6"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p6_e114" value="skill_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p6_t5" target="p6_t6"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p6_e115" value="course_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p6_t0" target="p6_t6"><mxGeometry relative="1" as="geometry" /></mxCell></root></mxGraphModel></diagram><diagram id="model-8" name="Simulação e parâmetros fiscais"><mxGraphModel dx="2600" dy="1560" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2600" pageHeight="1560" math="0" shadow="0"><root><mxCell id="0" /><mxCell id="1" parent="0" /><mxCell id="p7_note" value="Fonte: migrations e manifestos do repositório. FK entre páginas aparece como referência no cartão; layout não declara relações adicionais." style="text;html=1;align=left;verticalAlign=middle;fontSize=11;fontColor=#475569;" vertex="1" parent="1"><mxGeometry x="30" y="65" width="2200" height="30" as="geometry" /></mxCell><mxCell id="p7_t0" value="&lt;b&gt;questionnaire_versions&lt;/b&gt;&lt;hr&gt;PK id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p7_t1" value="&lt;b&gt;simulation_audit_events&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK simulation_id → simulations.id&lt;br&gt;FK actor_user_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p7_t2" value="&lt;b&gt;simulation_draft_business_links&lt;/b&gt;&lt;hr&gt;FK business_id → existing_businesses.id&lt;br&gt;FK linked_by → users.id&lt;br&gt;FK owner_user_id → users.id&lt;br&gt;FK unlinked_by → users.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p7_t3" value="&lt;b&gt;simulation_form_drafts&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK owner_user_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p7_t4" value="&lt;b&gt;simulation_idempotency&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK simulation_id → simulations.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p7_t5" value="&lt;b&gt;simulation_jobs&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK simulation_id → simulations.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p7_t6" value="&lt;b&gt;simulation_obligations&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK simulation_id → simulations.id&lt;br&gt;FK scenario_id → simulation_scenarios.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p7_t7" value="&lt;b&gt;simulation_reports&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK simulation_id → simulations.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p7_t8" value="&lt;b&gt;simulation_result_sources&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK result_id → simulation_results.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p7_t9" value="&lt;b&gt;simulation_results&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK simulation_id → simulations.id&lt;br&gt;FK scenario_id → simulation_scenarios.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p7_t10" value="&lt;b&gt;simulation_scenarios&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK simulation_id → simulations.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p7_t11" value="&lt;b&gt;simulation_tax_rule_events&lt;/b&gt;&lt;hr&gt;FK actor_user_id → users.id&lt;br&gt;FK rule_version_id → simulation_tax_rule_versions.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p7_t12" value="&lt;b&gt;simulation_tax_rule_versions&lt;/b&gt;&lt;hr&gt;FK approver_id → users.id NULL&lt;br&gt;FK author_id → users.id&lt;br&gt;FK legal_source_id → investment_legal_sources.id&lt;br&gt;FK publisher_id → users.id NULL&lt;br&gt;FK reviewer_id → users.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="1170" width="570" height="280" as="geometry" /></mxCell><mxCell id="p7_t13" value="&lt;b&gt;simulations&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK questionnaire_version_id → questionnaire_versions.id&lt;br&gt;FK owner_user_id → users.id&lt;br&gt;FK organization_id → organizations.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="1170" width="570" height="280" as="geometry" /></mxCell><mxCell id="p7_e5" value="rule_version_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p7_t12" target="p7_t11"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p7_e11" value="simulation_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p7_t13" target="p7_t1"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p7_e14" value="simulation_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p7_t13" target="p7_t4"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p7_e15" value="simulation_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p7_t13" target="p7_t5"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p7_e16" value="simulation_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p7_t13" target="p7_t6"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p7_e17" value="scenario_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p7_t10" target="p7_t6"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p7_e18" value="simulation_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p7_t13" target="p7_t7"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p7_e19" value="result_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p7_t9" target="p7_t8"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p7_e20" value="simulation_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p7_t13" target="p7_t9"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p7_e21" value="scenario_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p7_t10" target="p7_t9"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p7_e22" value="simulation_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p7_t13" target="p7_t10"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p7_e23" value="questionnaire_version_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p7_t0" target="p7_t13"><mxGeometry relative="1" as="geometry" /></mxCell></root></mxGraphModel></diagram><diagram id="model-9" name="Inteligência artificial"><mxGraphModel dx="2600" dy="1500" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2600" pageHeight="1500" math="0" shadow="0"><root><mxCell id="0" /><mxCell id="1" parent="0" /><mxCell id="p8_title" value="Esquema relacional — Inteligência artificial" style="text;html=1;align=left;verticalAlign=middle;fontSize=22;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1"><mxGeometry x="30" y="20" width="1600" height="40" as="geometry" /></mxCell><mxCell id="p8_note" value="Fonte: migrations e manifestos do repositório. FK entre páginas aparece como referência no cartão; layout não declara relações adicionais." style="text;html=1;align=left;verticalAlign=middle;fontSize=11;fontColor=#475569;" vertex="1" parent="1"><mxGeometry x="30" y="65" width="2200" height="30" as="geometry" /></mxCell><mxCell id="p8_t0" value="&lt;b&gt;ai_chunks&lt;/b&gt;&lt;hr&gt;FK source_id → ai_sources.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p8_t1" value="&lt;b&gt;ai_controls&lt;/b&gt;&lt;hr&gt;(sem FK identificada)" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p8_t2" value="&lt;b&gt;ai_feedback&lt;/b&gt;&lt;hr&gt;FK run_id → ai_runs.id&lt;br&gt;FK user_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p8_t3" value="&lt;b&gt;ai_runs&lt;/b&gt;&lt;hr&gt;FK actor_id → users.id&lt;br&gt;FK reviewed_by → users.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p8_t4" value="&lt;b&gt;ai_sources&lt;/b&gt;&lt;hr&gt;FK document_id → documents.id&lt;br&gt;FK reviewed_by → users.id NULL&lt;br&gt;FK submitted_by → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p8_e108" value="source_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p8_t4" target="p8_t0"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p8_e109" value="run_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p8_t3" target="p8_t2"><mxGeometry relative="1" as="geometry" /></mxCell></root></mxGraphModel></diagram><diagram id="model-10" name="Parcerias e atendimento virtual"><mxGraphModel dx="2600" dy="1910" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2600" pageHeight="1910" math="0" shadow="0"><root><mxCell id="0" /><mxCell id="1" parent="0" /><mxCell id="p9_title" value="Esquema relacional — Parcerias e atendimento virtual" style="text;html=1;align=left;verticalAlign=middle;fontSize=22;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1"><mxGeometry x="30" y="20" width="1600" height="40" as="geometry" /></mxCell><mxCell id="p9_note" value="Fonte: migrations e manifestos do repositório. FK entre páginas aparece como referência no cartão; layout não declara relações adicionais." style="text;html=1;align=left;verticalAlign=middle;fontSize=11;fontColor=#475569;" vertex="1" parent="1"><mxGeometry x="30" y="65" width="2200" height="30" as="geometry" /></mxCell><mxCell id="p9_t0" value="&lt;b&gt;desk_cases&lt;/b&gt;&lt;hr&gt;FK company_id → investment_company_declarations.id NULL&lt;br&gt;FK organization_id → organizations.id NULL&lt;br&gt;FK submission_id → investment_submissions.id NULL&lt;br&gt;FK user_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_t1" value="&lt;b&gt;desk_documents&lt;/b&gt;&lt;hr&gt;FK case_id → desk_cases.id&lt;br&gt;FK document_id → documents.id&lt;br&gt;FK linked_by → users.id&lt;br&gt;FK request_id → desk_requests.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_t2" value="&lt;b&gt;desk_events&lt;/b&gt;&lt;hr&gt;FK actor_id → users.id&lt;br&gt;FK case_id → desk_cases.id&lt;br&gt;FK request_id → desk_requests.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_t3" value="&lt;b&gt;desk_institutional_links&lt;/b&gt;&lt;hr&gt;FK verified_by → users.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_t4" value="&lt;b&gt;desk_messages&lt;/b&gt;&lt;hr&gt;FK actor_id → users.id&lt;br&gt;FK request_id → desk_requests.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_t5" value="&lt;b&gt;desk_notifications&lt;/b&gt;&lt;hr&gt;FK event_id → desk_events.id&lt;br&gt;FK user_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_t6" value="&lt;b&gt;desk_payments&lt;/b&gt;&lt;hr&gt;FK document_id → documents.id NULL&lt;br&gt;FK request_id → desk_requests.id&lt;br&gt;FK verified_by → users.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_t7" value="&lt;b&gt;desk_requests&lt;/b&gt;&lt;hr&gt;FK analyst_id → users.id NULL&lt;br&gt;FK case_id → desk_cases.id&lt;br&gt;FK service_version_id → desk_service_versions.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_t8" value="&lt;b&gt;desk_revisions&lt;/b&gt;&lt;hr&gt;FK request_id → desk_requests.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_t9" value="&lt;b&gt;desk_service_versions&lt;/b&gt;&lt;hr&gt;FK author_id → users.id&lt;br&gt;FK published_by → users.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_t10" value="&lt;b&gt;partnership_documents&lt;/b&gt;&lt;hr&gt;FK document_id → documents.id&lt;br&gt;FK owner_id → users.id&lt;br&gt;FK room_id → partnership_rooms.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_t11" value="&lt;b&gt;partnership_events&lt;/b&gt;&lt;hr&gt;FK actor_id → users.id&lt;br&gt;FK partnership_id → portal_partnerships.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_t12" value="&lt;b&gt;partnership_interests&lt;/b&gt;&lt;hr&gt;FK organization_id → organizations.id NULL&lt;br&gt;FK partnership_id → portal_partnerships.id&lt;br&gt;FK user_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="1170" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_t13" value="&lt;b&gt;partnership_locations&lt;/b&gt;&lt;hr&gt;FK geo_location_id → geo_locations.id&lt;br&gt;FK partnership_id → portal_partnerships.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="1170" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_t14" value="&lt;b&gt;partnership_messages&lt;/b&gt;&lt;hr&gt;FK author_id → users.id&lt;br&gt;FK room_id → partnership_rooms.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="1170" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_t15" value="&lt;b&gt;partnership_milestones&lt;/b&gt;&lt;hr&gt;FK responsible_id → users.id&lt;br&gt;FK room_id → partnership_rooms.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="1170" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_t16" value="&lt;b&gt;partnership_notifications&lt;/b&gt;&lt;hr&gt;FK event_id → partnership_events.id&lt;br&gt;FK user_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="1520" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_t17" value="&lt;b&gt;partnership_origins&lt;/b&gt;&lt;hr&gt;FK partnership_id → portal_partnerships.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="1520" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_t18" value="&lt;b&gt;partnership_rooms&lt;/b&gt;&lt;hr&gt;FK interest_id → partnership_interests.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="1520" width="570" height="280" as="geometry" /></mxCell><mxCell id="p9_e116" value="interest_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p9_t12" target="p9_t18"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p9_e117" value="room_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p9_t18" target="p9_t14"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p9_e118" value="room_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p9_t18" target="p9_t10"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p9_e119" value="room_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p9_t18" target="p9_t15"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p9_e120" value="event_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p9_t11" target="p9_t16"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p9_e121" value="case_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p9_t0" target="p9_t7"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p9_e122" value="service_version_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p9_t9" target="p9_t7"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p9_e123" value="case_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p9_t0" target="p9_t1"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p9_e124" value="request_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p9_t7" target="p9_t1"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p9_e125" value="case_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p9_t0" target="p9_t2"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p9_e126" value="request_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p9_t7" target="p9_t2"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p9_e127" value="request_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p9_t7" target="p9_t8"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p9_e128" value="request_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p9_t7" target="p9_t4"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p9_e129" value="event_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p9_t2" target="p9_t5"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p9_e130" value="request_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p9_t7" target="p9_t6"><mxGeometry relative="1" as="geometry" /></mxCell></root></mxGraphModel></diagram><diagram id="model-11" name="Governação e integrações"><mxGraphModel dx="2600" dy="1500" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2600" pageHeight="1500" math="0" shadow="0"><root><mxCell id="0" /><mxCell id="1" parent="0" /><mxCell id="p10_title" value="Esquema relacional — Governação e integrações" style="text;html=1;align=left;verticalAlign=middle;fontSize=22;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1"><mxGeometry x="30" y="20" width="1600" height="40" as="geometry" /></mxCell><mxCell id="p10_note" value="Fonte: migrations e manifestos do repositório. FK entre páginas aparece como referência no cartão; layout não declara relações adicionais." style="text;html=1;align=left;verticalAlign=middle;fontSize=11;fontColor=#475569;" vertex="1" parent="1"><mxGeometry x="30" y="65" width="2200" height="30" as="geometry" /></mxCell><mxCell id="p10_t7" value="&lt;b&gt;audit_events&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK actor_user_id → users.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p10_t8" value="&lt;b&gt;inbox_events&lt;/b&gt;&lt;hr&gt;PK id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p10_t9" value="&lt;b&gt;outbox_events&lt;/b&gt;&lt;hr&gt;PK id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p10_t10" value="&lt;b&gt;reconciliation_issues&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK sync_run_id → sync_runs.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p10_t11" value="&lt;b&gt;sync_runs&lt;/b&gt;&lt;hr&gt;PK id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p10_e0" value="sync_run_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p10_t11" target="p10_t10"><mxGeometry relative="1" as="geometry" /></mxCell></root></mxGraphModel></diagram><diagram id="model-12" name="Aplicação e identidade"><mxGraphModel dx="2600" dy="1500" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2600" pageHeight="1500" math="0" shadow="0"><root><mxCell id="0" /><mxCell id="1" parent="0" /><mxCell id="p11_title" value="Esquema relacional — Aplicação e identidade" style="text;html=1;align=left;verticalAlign=middle;fontSize=22;fontStyle=1;fontColor=#0f172a;" vertex="1" parent="1"><mxGeometry x="30" y="20" width="1600" height="40" as="geometry" /></mxCell><mxCell id="p11_note" value="Fonte: migrations e manifestos do repositório. FK entre páginas aparece como referência no cartão; layout não declara relações adicionais." style="text;html=1;align=left;verticalAlign=middle;fontSize=11;fontColor=#475569;" vertex="1" parent="1"><mxGeometry x="30" y="65" width="2200" height="30" as="geometry" /></mxCell><mxCell id="p11_t0" value="&lt;b&gt;cache&lt;/b&gt;&lt;hr&gt;PK key" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p11_t1" value="&lt;b&gt;cache_locks&lt;/b&gt;&lt;hr&gt;PK key" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p11_t2" value="&lt;b&gt;consents&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK user_id → users.id NULL" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p11_t3" value="&lt;b&gt;failed_jobs&lt;/b&gt;&lt;hr&gt;PK id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="120" width="570" height="280" as="geometry" /></mxCell><mxCell id="p11_t4" value="&lt;b&gt;job_batches&lt;/b&gt;&lt;hr&gt;PK id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p11_t5" value="&lt;b&gt;jobs&lt;/b&gt;&lt;hr&gt;PK id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p11_t6" value="&lt;b&gt;memberships&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK organization_id → organizations.id&lt;br&gt;FK user_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p11_t7" value="&lt;b&gt;organizations&lt;/b&gt;&lt;hr&gt;PK id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="470" width="570" height="280" as="geometry" /></mxCell><mxCell id="p11_t8" value="&lt;b&gt;passkeys&lt;/b&gt;&lt;hr&gt;PK id&lt;br&gt;FK user_id → users.id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="30" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p11_t9" value="&lt;b&gt;password_reset_tokens&lt;/b&gt;&lt;hr&gt;PK email" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="650" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p11_t10" value="&lt;b&gt;sessions&lt;/b&gt;&lt;hr&gt;PK id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1270" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p11_t11" value="&lt;b&gt;users&lt;/b&gt;&lt;hr&gt;PK id" style="rounded=1;whiteSpace=wrap;html=1;align=left;verticalAlign=top;spacing=8;fontSize=12;fillColor=#f8fafc;strokeColor=#64748b;" vertex="1" parent="1"><mxGeometry x="1890" y="820" width="570" height="280" as="geometry" /></mxCell><mxCell id="p11_e131" value="user_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p11_t11" target="p11_t8"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p11_e135" value="user_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p11_t11" target="p11_t6"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p11_e136" value="organization_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p11_t7" target="p11_t6"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="p11_e137" value="user_id" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERone;startArrow=ERmany;startFill=0;endFill=0;strokeColor=#64748b;fontSize=10;" edge="1" parent="1" source="p11_t11" target="p11_t2"><mxGeometry relative="1" as="geometry" /></mxCell></root></mxGraphModel></diagram></mxfile>