Last active
August 21, 2025 19:00
-
-
Save jedjohan/1058909f6b00ae85a813b6d580a61c20 to your computer and use it in GitHub Desktop.
Revisions
-
jedjohan revised this gist
Aug 21, 2025 . 1 changed file with 51 additions and 5 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -36,22 +36,22 @@ <mxCell id="1" parent="0" /> <!-- User Layer --> <mxCell id="users" value="π₯ Users
Technical Writers
Content Teams
Reviewers" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E1F5FE;strokeColor=#0277BD;strokeWidth=2;fontSize=11;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="480" y="40" width="200" height="80" as="geometry" /> </mxCell> <!-- Frontend Layer --> <mxCell id="frontend" value="π Frontend Application
Collaborative Document Editor
Review & Approval Interface" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E1F5FE;strokeColor=#0277BD;strokeWidth=2;fontSize=11;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="480" y="160" width="200" height="80" as="geometry" /> </mxCell> <!-- API Gateway --> <mxCell id="gateway" value="π API Gateway
Authentication & Authorization
Rate Limiting & Routing" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFEBEE;strokeColor=#D32F2F;strokeWidth=2;fontSize=11;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="480" y="280" width="200" height="80" as="geometry" /> </mxCell> <!-- Platform API --> <mxCell id="api" value="π Platform API
Document Lifecycle Management
Slim Endpoints β Service Delegation" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F3E5F5;strokeColor=#7B1FA2;strokeWidth=2;fontSize=11;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="480" y="400" width="200" height="80" as="geometry" /> </mxCell> @@ -333,7 +333,53 @@ </mxCell> <!-- Queue for Async Processing (ADR-007) --> <mxCell id="queue_res" value="οΏ½ Queue (Service Bus / Storage)
Document Events
Async Triggers" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <!-- Queue for Async Processing (ADR-007) --> <mxCell id="queue_res" value="π¨ Queue (Service Bus / Storage)
Document Events
Async Triggers" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="840" y="500" width="140" height="80" as="geometry" /> </mxCell> <!-- Transformer / Processor --> <mxCell id="transform_res" value="π§© Transformer Service
AST + Enrichment
Background Processing" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="780" y="740" width="170" height="80" as="geometry" /> </mxCell> <!-- AI Agent Orchestrator --> <mxCell id="ai_agent_res" value="π€ AI Agent Orchestrator
Agent Scenarios
Semantic Actions" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="420" y="740" width="170" height="80" as="geometry" /> </mxCell> <!-- Audit Logs --> <mxCell id="audit_logs_res" value="π Audit Logs
Centralized Events
User Correlation" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="240" y="740" width="160" height="80" as="geometry" /> </mxCell> <!-- Metadata vs Versions --> <mxCell id="metadata_split_res" value="π Metadata vs Versions
Mutable / Immutable" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="40" y="740" width="180" height="80" as="geometry" /> </mxCell> <!-- ADR Badges (Azure Resources Diagram) --> <mxCell id="badge_aiagent_res_014" value="ADR-014" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#388E3C;fontSize=9;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="590" y="732" width="60" height="18" as="geometry" /> </mxCell> <mxCell id="badge_audit_res_010" value="ADR-010" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#F57C00;fontSize=9;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="300" y="732" width="60" height="18" as="geometry" /> </mxCell> <mxCell id="badge_metadata_res_012" value="ADR-012" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#F57C00;fontSize=9;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="100" y="732" width="60" height="18" as="geometry" /> </mxCell> <mxCell id="badge_transform_res_006" value="ADR-006" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#388E3C;fontSize=9;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="890" y="732" width="60" height="18" as="geometry" /> </mxCell> <mxCell id="badge_queue_res_007" value="ADR-007" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#388E3C;fontSize=9;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="840" y="492" width="60" height="18" as="geometry" /> </mxCell> <mxCell id="badge_search_res_011" value="ADR-011" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#388E3C;fontSize=9;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="660" y="492" width="60" height="18" as="geometry" /> </mxCell> <!-- Legend (Azure Resources) --> <mxCell id="legend_azure" value="LEGEND\nColors & meanings align with logical view.\nSolid Edge = Sync Call; Dashed = Async / External / Audit.\nBadges ADR-### map to docs/adr records for rationale." style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#424242;strokeWidth=1;fontSize=9" vertex="1" parent="1"> <mxGeometry x="960" y="40" width="180" height="140" as="geometry" /> </mxCell> <!-- Connections --> </mxCell> <!-- Transformer / Processor --> <mxCell id="transform_res" value="π§© Transformer Service
AST + Enrichment
Background Processing" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> -
jedjohan revised this gist
Aug 21, 2025 . 1 changed file with 152 additions and 22 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,34 @@ <?xml version="1.0" encoding="UTF-8"?> <mxfile host="app.diagrams.net" modified="2025-08-21T18:00:00.000Z" agent="Platform Archit <mxCell id="metadata_split" value="π Metadata vs Versions
Mutable Current State
Immutable History" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="870" y="850" width="170" height="60" as="geometry" /> </mxCell> <!-- ADR Badges (Logical Diagram) --> <mxCell id="badge_async_007" value="ADR-007" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#388E3C;fontSize=9;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="890" y="820" width="60" height="18" as="geometry" /> </mxCell> <mxCell id="badge_transform_006" value="ADR-006" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#388E3C;fontSize=9;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="300" y="832" width="60" height="18" as="geometry" /> </mxCell> <mxCell id="badge_aiagent_014" value="ADR-014" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#388E3C;fontSize=9;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="490" y="832" width="60" height="18" as="geometry" /> </mxCell> <mxCell id="badge_audit_010" value="ADR-010" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#F57C00;fontSize=9;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="680" y="832" width="60" height="18" as="geometry" /> </mxCell> <mxCell id="badge_metadata_012" value="ADR-012" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#F57C00;fontSize=9;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="870" y="832" width="60" height="18" as="geometry" /> </mxCell> <mxCell id="badge_search_011" value="ADR-011" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#388E3C;fontSize=9;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="760" y="552" width="60" height="18" as="geometry" /> </mxCell> <!-- Legend (Logical) --> <mxCell id="legend_logical" value="LEGEND\nColors:\nBlue = User / Frontend\nPink/Red = Security & Gateway\nPurple = Core API Layer\nGreen = Domain / Processing Services\nOrange = Platform / Integration / Audit\nOlive/Light Green = DevOps / Infra\nPink (Alt) = AI & Observability\n\nEdges:\nSolid = Synchronous Call\nDashed = Async / External / Audit\n\nBadges:\nADR-### = Architecture Decision Record" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#424242;strokeWidth=1;fontSize=9" vertex="1" parent="1"> <mxGeometry x="40" y="40" width="200" height="260" as="geometry" /> </mxCell> <!-- Connections -->e Template" etag="template" version="24.6.4" type="device"> <diagram name="Logisk Arkitektur" id="logisk"> <mxGraphModel dx="1422" dy="794" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <root> @@ -27,60 +56,60 @@ </mxCell> <!-- Domain Services --> <mxCell id="services_container" value="πΌ Domain Services" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=3;fontSize=11;fontStyle=1;verticalAlign=top;spacingTop=10;shadow=1" vertex="1" parent="1"> <mxGeometry x="120" y="520" width="840" height="120" as="geometry" /> </mxCell> <mxCell id="doc_service" value="π Document Service
CRUD Operations
Validation & Mapping" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="140" y="560" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="version_service" value="π Versioning Service
Git-based Version Control
Change Tracking" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="280" y="560" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="collab_service" value="π₯ Collaboration Service
Comments & Reviews
Real-time Updates" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="420" y="560" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="approval_service" value="β Approval Service
Workflow Management
Review Processes" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="560" y="560" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="search_service" value="π Search Service
Hybrid Vector + Text Search
AI-powered Semantic Search" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="700" y="560" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="locale_service" value="π Localization Service
Multi-language Support
Translation Workflows" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="840" y="560" width="120" height="60" as="geometry" /> </mxCell> <!-- Azure Services --> <mxCell id="azure_container" value="βοΈ Azure Services Integration" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=3;fontSize=11;fontStyle=1;verticalAlign=top;spacingTop=10;shadow=1" vertex="1" parent="1"> <mxGeometry x="120" y="680" width="840" height="120" as="geometry" /> </mxCell> <mxCell id="azure_devops" value="π Azure DevOps
Git Repository
Raw Document Storage
Version History" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="140" y="720" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="cosmos_db" value="ποΈ Cosmos DB
Document Metadata
Comments & Approvals
Search Index Data" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="280" y="720" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="ai_search" value="π Azure AI Search
Vector + Text Search
Semantic Ranking
Hybrid Queries" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="420" y="720" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="openai" value="π€ Azure OpenAI
Embeddings Generation
Text-to-Vector
AI Content Analysis" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="560" y="720" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="blob_storage" value="π¦ Azure Blob Storage
AST Document Trees
Binary Content
Search Artifacts" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="700" y="720" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="app_config" value="βοΈ Azure App Configuration
Environment Settings
Feature Flags
Multi-tenant Config" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="840" y="720" width="120" height="60" as="geometry" /> </mxCell> @@ -89,8 +118,47 @@ <mxGeometry x="40" y="280" width="140" height="80" as="geometry" /> </mxCell> <!-- Azure DevOps Pipelines (Replacing prior GitHub CI/CD) --> <mxCell id="azdo_pipelines" value="π Azure DevOps Pipelines
Build / Test / Deploy
Boards & Repos
Artifact Publishing" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F1F8E9;strokeColor=#689F38;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="1000" y="400" width="160" height="90" as="geometry" /> </mxCell> <!-- Async Processing (ADR-007) --> <mxCell id="async_container" value="οΏ½ Async Processing" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=3;fontSize=12;fontStyle=1;verticalAlign=top;spacingTop=8" vertex="1" parent="1"> <!-- Async Processing (ADR-007) --> <mxCell id="async_container" value="π Async Processing" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=3;fontSize=11;fontStyle=1;verticalAlign=top;spacingTop=8;shadow=1" vertex="1" parent="1"> <mxGeometry x="120" y="820" width="840" height="120" as="geometry" /> </mxCell> <mxCell id="queue_service" value="π¨ Queue
Document Events
Transformation Triggers" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="140" y="850" width="140" height="60" as="geometry" /> </mxCell> <mxCell id="transform_service" value="π§© Transformer Service
JSON AST Generation
AI Enrichment" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="300" y="850" width="170" height="60" as="geometry" /> </mxCell> <mxCell id="ai_agent" value="π€ AI Agent Orchestrator
Agent Scenarios
Semantic Actions" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="490" y="850" width="170" height="60" as="geometry" /> </mxCell> <mxCell id="audit_logs" value="π Audit Logs
Centralized Actions
User Context & Correlation" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="680" y="850" width="170" height="60" as="geometry" /> </mxCell> <mxCell id="metadata_split" value="π Metadata vs Versions
Mutable Current State
Immutable History" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="870" y="850" width="170" height="60" as="geometry" /> </mxCell> </mxCell> <mxCell id="queue_service" value="π¨ Queue
Document Events
Transformation Triggers" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="140" y="850" width="140" height="60" as="geometry" /> </mxCell> <mxCell id="transform_service" value="π§© Transformer Service
JSON AST Generation (ADR-006)
AI Enrichment" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="300" y="850" width="170" height="60" as="geometry" /> </mxCell> <mxCell id="ai_agent" value="π€ AI Agent Orchestrator
Agent Scenarios (ADR-014)
Semantic Actions" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="490" y="850" width="170" height="60" as="geometry" /> </mxCell> <mxCell id="audit_logs" value="π Audit Logs (ADR-010)
Centralized Actions
User Context & Correlation" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="680" y="850" width="170" height="60" as="geometry" /> </mxCell> <mxCell id="metadata_split" value="π Metadata vs Versions (ADR-012)
Mutable Current State
Immutable History" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="870" y="850" width="170" height="60" as="geometry" /> </mxCell> <!-- Connections --> @@ -133,7 +201,29 @@ </mxCell> <!-- External integrations --> <mxCell id="api_to_pipeline" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=2;strokeColor=#689F38;dashed=1" source="api" target="azdo_pipelines" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <!-- Async edges --> <mxCell id="api_to_queue" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;strokeColor=#388E3C;dashed=1" source="api" target="queue_service" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="queue_to_transform" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;strokeColor=#388E3C" source="queue_service" target="transform_service" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="transform_to_aiagent" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;strokeColor=#388E3C" source="transform_service" target="ai_agent" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="aiagent_to_openai" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;strokeColor=#388E3C;dashed=1" source="ai_agent" target="openai" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="aiagent_to_audit" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;strokeColor=#F57C00;dashed=1" source="ai_agent" target="audit_logs" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="api_to_audit" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;strokeColor=#F57C00;dashed=1" source="api" target="audit_logs" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="cosmos_to_metadata_split" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;strokeColor=#F57C00;dashed=1" source="cosmos_db" target="metadata_split" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> @@ -237,9 +327,29 @@ <mxGeometry x="240" y="140" width="160" height="80" as="geometry" /> </mxCell> <!-- Azure DevOps Pipelines (Resources) --> <mxCell id="azdo_pipelines_res" value="π Azure DevOps Pipelines
Build / Test / Deploy
Boards & Repos
Artifacts" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F1F8E9;strokeColor=#689F38;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="760" y="260" width="170" height="90" as="geometry" /> </mxCell> <!-- Queue for Async Processing (ADR-007) --> <mxCell id="queue_res" value="οΏ½ Queue (Service Bus / Storage)
Document Events
Async Triggers" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxCell id="queue_res" value="π¨ Queue (Service Bus / Storage)
Document Events
Async Triggers" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> </mxCell> <!-- Transformer / Processor --> <mxCell id="transform_res" value="π§© Transformer Service
AST + Enrichment
Background Processing" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="780" y="740" width="170" height="80" as="geometry" /> </mxCell> <!-- AI Agent Orchestrator --> <mxCell id="ai_agent_res" value="π€ AI Agent Orchestrator
Agent Scenarios (ADR-014)
Semantic Actions" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="420" y="740" width="170" height="80" as="geometry" /> </mxCell> <!-- Audit Logs --> <mxCell id="audit_logs_res" value="π Audit Logs (ADR-010)
Centralized Events
User Correlation" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="240" y="740" width="160" height="80" as="geometry" /> </mxCell> <!-- Metadata vs Versions --> <mxCell id="metadata_split_res" value="π Metadata vs Versions (ADR-012)
Mutable / Immutable" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="40" y="740" width="180" height="80" as="geometry" /> </mxCell> <!-- Connections --> @@ -278,7 +388,27 @@ </mxCell> <!-- CI/CD connections --> <!-- Pipelines to Container Env --> <mxCell id="pipelines_to_container" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=2;strokeColor=#689F38;dashed=1" source="azdo_pipelines_res" target="container_env" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <!-- Async Flow Edges --> <mxCell id="api_to_ai_agent_res" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;strokeColor=#388E3C;dashed=1" source="platform_api" target="ai_agent_res" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="ai_agent_to_queue_res" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;strokeColor=#388E3C" source="ai_agent_res" target="queue_res" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="queue_to_transform_res" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;strokeColor=#388E3C" source="queue_res" target="transform_res" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="transform_to_openai_res" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;strokeColor=#388E3C" source="transform_res" target="openai_res" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="api_to_audit_res" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;strokeColor=#F57C00;dashed=1" source="platform_api" target="audit_logs_res" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="cosmos_to_metadata_split_res" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;strokeColor=#F57C00;dashed=1" source="cosmos_db_res" target="metadata_split_res" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> -
jedjohan created this gist
Aug 21, 2025 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,288 @@ <?xml version="1.0" encoding="UTF-8"?> <mxfile host="app.diagrams.net" modified="2025-08-21T18:00:00.000Z" agent="Platform Architecture Template" etag="template" version="24.6.4" type="device"> <diagram name="Logisk Arkitektur" id="logisk"> <mxGraphModel dx="1422" dy="794" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <!-- User Layer --> <mxCell id="users" value="π₯ Users
Technical Writers
Content Teams
Reviewers" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E1F5FE;strokeColor=#0277BD;strokeWidth=2;fontSize=12;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="480" y="40" width="200" height="80" as="geometry" /> </mxCell> <!-- Frontend Layer --> <mxCell id="frontend" value="π Frontend Application
Collaborative Document Editor
Review & Approval Interface" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E1F5FE;strokeColor=#0277BD;strokeWidth=2;fontSize=12;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="480" y="160" width="200" height="80" as="geometry" /> </mxCell> <!-- API Gateway --> <mxCell id="gateway" value="π API Gateway
Authentication & Authorization
Rate Limiting & Routing" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFEBEE;strokeColor=#D32F2F;strokeWidth=2;fontSize=12;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="480" y="280" width="200" height="80" as="geometry" /> </mxCell> <!-- Platform API --> <mxCell id="api" value="π Platform API
Document Lifecycle Management
Slim Endpoints β Service Delegation" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F3E5F5;strokeColor=#7B1FA2;strokeWidth=2;fontSize=12;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="480" y="400" width="200" height="80" as="geometry" /> </mxCell> <!-- Domain Services --> <mxCell id="services_container" value="πΌ Domain Services" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=3;fontSize=14;fontStyle=1;verticalAlign=top;spacingTop=10" vertex="1" parent="1"> <mxGeometry x="120" y="520" width="840" height="120" as="geometry" /> </mxCell> <mxCell id="doc_service" value="π Document Service
CRUD Operations
Validation & Mapping" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="140" y="560" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="version_service" value="π Versioning Service
Git-based Version Control
Change Tracking" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="280" y="560" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="collab_service" value="π₯ Collaboration Service
Comments & Reviews
Real-time Updates" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="420" y="560" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="approval_service" value="β Approval Service
Workflow Management
Review Processes" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="560" y="560" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="search_service" value="π Search Service
Hybrid Vector + Text Search
AI-powered Semantic Search" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="700" y="560" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="locale_service" value="π Localization Service
Multi-language Support
Translation Workflows" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="840" y="560" width="120" height="60" as="geometry" /> </mxCell> <!-- Azure Services --> <mxCell id="azure_container" value="βοΈ Azure Services Integration" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=3;fontSize=14;fontStyle=1;verticalAlign=top;spacingTop=10" vertex="1" parent="1"> <mxGeometry x="120" y="680" width="840" height="120" as="geometry" /> </mxCell> <mxCell id="azure_devops" value="π Azure DevOps
Git Repository
Raw Document Storage
Version History" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="140" y="720" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="cosmos_db" value="ποΈ Cosmos DB
Document Metadata
Comments & Approvals
Search Index Data" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="280" y="720" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="ai_search" value="π Azure AI Search
Vector + Text Search
Semantic Ranking
Hybrid Queries" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="420" y="720" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="openai" value="π€ Azure OpenAI
Embeddings Generation
Text-to-Vector
AI Content Analysis" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="560" y="720" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="blob_storage" value="π¦ Azure Blob Storage
AST Document Trees
Binary Content
Search Artifacts" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="700" y="720" width="120" height="60" as="geometry" /> </mxCell> <mxCell id="app_config" value="βοΈ Azure App Configuration
Environment Settings
Feature Flags
Multi-tenant Config" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="840" y="720" width="120" height="60" as="geometry" /> </mxCell> <!-- External Services --> <mxCell id="entra_id" value="π Microsoft Entra ID
Enterprise Authentication
JWT Token Validation
RBAC Permissions" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFEBEE;strokeColor=#D32F2F;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="40" y="280" width="140" height="80" as="geometry" /> </mxCell> <mxCell id="github" value="π GitHub Actions
CI/CD Pipelines
Automated Testing
Deployment Automation" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F1F8E9;strokeColor=#689F38;strokeWidth=2;fontSize=10" vertex="1" parent="1"> <mxGeometry x="1000" y="400" width="140" height="80" as="geometry" /> </mxCell> <!-- Connections --> <mxCell id="users_to_frontend" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;strokeColor=#0277BD" source="users" target="frontend" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="frontend_to_gateway" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;strokeColor=#0277BD" source="frontend" target="gateway" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="gateway_to_api" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;strokeColor=#D32F2F" source="gateway" target="api" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="api_to_services" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=3;strokeColor=#7B1FA2" source="api" target="services_container" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <!-- Service to Azure connections --> <mxCell id="doc_to_devops" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;strokeColor=#388E3C" source="doc_service" target="azure_devops" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="doc_to_cosmos" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;strokeColor=#388E3C" source="version_service" target="cosmos_db" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="search_to_ai" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;strokeColor=#388E3C" source="search_service" target="ai_search" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="search_to_openai" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;strokeColor=#388E3C" source="approval_service" target="openai" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <!-- Auth connections --> <mxCell id="gateway_to_entra" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=2;strokeColor=#D32F2F;dashed=1" source="gateway" target="entra_id" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <!-- External integrations --> <mxCell id="api_to_github" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=2;strokeColor=#689F38;dashed=1" source="api" target="github" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> </root> </mxGraphModel> </diagram> <diagram name="Azure Resources" id="azure"> <mxGraphModel dx="1422" dy="794" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <!-- Internet --> <mxCell id="internet" value="π Internet" style="ellipse;whiteSpace=wrap;html=1;fillColor=#E3F2FD;strokeColor=#1976D2;strokeWidth=2;fontSize=14;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="520" y="40" width="120" height="60" as="geometry" /> </mxCell> <!-- Application Gateway --> <mxCell id="app_gateway" value="πͺ Application Gateway
WAF Protection
SSL Termination
Load Balancing" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFEBEE;strokeColor=#D32F2F;strokeWidth=3;fontSize=12;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="480" y="140" width="200" height="80" as="geometry" /> </mxCell> <!-- Container Apps Environment --> <mxCell id="container_env" value="π¦ Container Apps Environment
Microservices Hosting
Auto-scaling
Blue-Green Deployments" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E3F2FD;strokeColor=#1976D2;strokeWidth=3;fontSize=12;fontStyle=1" vertex="1" parent="1"> <mxGeometry x="480" y="260" width="200" height="80" as="geometry" /> </mxCell> <!-- Platform API --> <mxCell id="platform_api" value="π Platform API
Container App
Document Management
RESTful Endpoints" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E3F2FD;strokeColor=#1976D2;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="420" y="380" width="140" height="70" as="geometry" /> </mxCell> <!-- Dev Host --> <mxCell id="dev_host" value="π§ Development Host
Aspire Orchestration
Local Development
Service Discovery" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E3F2FD;strokeColor=#1976D2;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="600" y="380" width="140" height="70" as="geometry" /> </mxCell> <!-- Azure DevOps --> <mxCell id="azure_devops_res" value="π Azure DevOps
Git Repositories
Raw Document Content
Version Control History" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="40" y="500" width="140" height="80" as="geometry" /> </mxCell> <!-- Blob Storage --> <mxCell id="blob_storage_res" value="π¦ Azure Blob Storage
AST Document Trees
Binary Content
Search Artifacts" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="200" y="500" width="140" height="80" as="geometry" /> </mxCell> <!-- Cosmos DB --> <mxCell id="cosmos_db_res" value="ποΈ Azure Cosmos DB
Document Metadata
Comments & Approvals
Global Distribution" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="360" y="500" width="140" height="80" as="geometry" /> </mxCell> <!-- AI Search --> <mxCell id="ai_search_res" value="π Azure AI Search
Vector + Text Search
Semantic Ranking
Cognitive Skills" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E8;strokeColor=#388E3C;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="520" y="500" width="140" height="80" as="geometry" /> </mxCell> <!-- Azure OpenAI --> <mxCell id="openai_res" value="π€ Azure OpenAI
GPT-4 & Embeddings
Content Generation
Semantic Analysis" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FCE4EC;strokeColor=#C2185B;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="40" y="620" width="140" height="80" as="geometry" /> </mxCell> <!-- Application Insights --> <mxCell id="app_insights" value="π Application Insights
Performance Monitoring
Error Tracking
Usage Analytics" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FCE4EC;strokeColor=#C2185B;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="200" y="620" width="140" height="80" as="geometry" /> </mxCell> <!-- Log Analytics --> <mxCell id="log_analytics" value="π Log Analytics
Centralized Logging
Query & Alerting
Security Monitoring" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FCE4EC;strokeColor=#C2185B;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="360" y="620" width="140" height="80" as="geometry" /> </mxCell> <!-- App Configuration --> <mxCell id="app_config_res" value="βοΈ Azure App Configuration
Environment Settings
Feature Flags
Configuration Management" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="680" y="500" width="140" height="80" as="geometry" /> </mxCell> <!-- Key Vault --> <mxCell id="key_vault" value="π Azure Key Vault
Secrets Management
Certificate Storage
Managed Identity Keys" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="840" y="500" width="140" height="80" as="geometry" /> </mxCell> <!-- Managed Identity --> <mxCell id="managed_id_res" value="π Managed Identity
Service Authentication
Zero-Trust Security
Azure Service Access" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#F57C00;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="520" y="620" width="140" height="80" as="geometry" /> </mxCell> <!-- Virtual Network --> <mxCell id="vnet" value="π Virtual Network
Private Endpoints
Network Security Groups
Service Integration" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F1F8E9;strokeColor=#689F38;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="680" y="620" width="140" height="80" as="geometry" /> </mxCell> <!-- Private Endpoints --> <mxCell id="private_endpoints" value="π Private Endpoints
Secure Service Access
Network Isolation
Private Connectivity" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F1F8E9;strokeColor=#689F38;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="840" y="620" width="140" height="80" as="geometry" /> </mxCell> <!-- Entra ID --> <mxCell id="entra_id_res" value="π Microsoft Entra ID
Enterprise Authentication
Conditional Access
Multi-factor Authentication" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFEBEE;strokeColor=#D32F2F;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="240" y="140" width="160" height="80" as="geometry" /> </mxCell> <!-- GitHub --> <mxCell id="github_res" value="π GitHub
Source Code Repository
CI/CD Pipelines
Automated Deployments" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F1F8E9;strokeColor=#689F38;strokeWidth=2;fontSize=11" vertex="1" parent="1"> <mxGeometry x="760" y="260" width="160" height="80" as="geometry" /> </mxCell> <!-- Connections --> <mxCell id="internet_to_gateway" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=3;strokeColor=#1976D2" source="internet" target="app_gateway" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="gateway_to_container" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=3;strokeColor=#D32F2F" source="app_gateway" target="container_env" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="container_to_api" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;strokeColor=#1976D2" source="container_env" target="platform_api" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="container_to_devhost" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;strokeColor=#1976D2" source="container_env" target="dev_host" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <!-- Data connections --> <mxCell id="api_to_devops" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;strokeColor=#388E3C" source="platform_api" target="azure_devops_res" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="api_to_cosmos" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;strokeColor=#388E3C" source="platform_api" target="cosmos_db_res" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="api_to_search" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=1;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;strokeColor=#388E3C" source="platform_api" target="ai_search_res" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <!-- Auth connections --> <mxCell id="gateway_to_entra_res" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=2;strokeColor=#D32F2F;dashed=1" source="app_gateway" target="entra_id_res" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <!-- CI/CD connections --> <mxCell id="github_to_container" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=2;strokeColor=#689F38;dashed=1" source="github_res" target="container_env" edge="1" parent="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> </root> </mxGraphModel> </diagram> </mxfile>