Files
nova/docs/graphs/system_architecture.dot
2026-04-12 07:19:48 -03:00

105 lines
3.6 KiB
Plaintext

digraph system_architecture {
rankdir=TB
bgcolor="#0a0e17"
fontname="Helvetica"
node [fontname="Helvetica" fontsize=11 style=filled color="#1e2a4a" fontcolor="#e8eaf0"]
edge [fontname="Helvetica" fontsize=9 fontcolor="#8892a8" color="#4a5568"]
label="System Architecture"
labelloc=t
fontsize=16
fontcolor="#0066ff"
subgraph cluster_external {
label="External"
style=dashed
color="#1e2a4a"
fontcolor="#8892a8"
kong [label="Kong Konnect\n(API Gateway)" fillcolor="#243056" shape=octagon]
bedrock [label="AWS Bedrock\n(Claude Sonnet)" fillcolor="#243056" shape=octagon]
openmeteo [label="OpenMeteo\n(Live Weather)" fillcolor="#1a3a1a" shape=octagon fontcolor="#00c853"]
faa [label="FAA NASSTATUS\n(Live Airport Status)" fillcolor="#1a3a1a" shape=octagon fontcolor="#00c853"]
}
subgraph cluster_app {
label="Application (EC2 / Kind Cluster)"
style=dashed
color="#1e2a4a"
fontcolor="#8892a8"
subgraph cluster_frontend {
label="Frontend"
color="#1e2a4a"
fontcolor="#4a5568"
ui [label="Vue 3 SPA\n(NOVA UI)\nPort 8040" fillcolor="#121829" shape=box]
}
subgraph cluster_api {
label="API Layer"
color="#1e2a4a"
fontcolor="#4a5568"
fastapi [label="FastAPI\n+ WebSocket\nPort 8000" fillcolor="#121829" shape=box]
}
subgraph cluster_agents {
label="Agent Clients"
color="#1e2a4a"
fontcolor="#4a5568"
efhas [label="FCE Agent\n(Passenger)" fillcolor="#1a1a3a" shape=box]
handover [label="Handover Agent\n(Ops)" fillcolor="#1a1a3a" shape=box]
}
subgraph cluster_mcp {
label="MCP Servers (stdio)"
color="#0066ff"
fontcolor="#0066ff"
shared [label="shared\nflights · weather · airport\nmaintenance" fillcolor="#0d1a33" shape=component]
ops [label="ops\ncrew · rebookings\nnarrative" fillcolor="#0d1a33" shape=component]
passenger [label="passenger\nnotification" fillcolor="#0d1a33" shape=component]
}
subgraph cluster_data {
label="Data Layer"
color="#1e2a4a"
fontcolor="#4a5568"
scenarios [label="Scenario Manager\n4 scenarios" fillcolor="#121829" shape=cylinder]
mock [label="Mock Data\n(Pydantic models)" fillcolor="#121829" shape=cylinder]
}
subgraph cluster_obs {
label="Observability"
color="#1e2a4a"
fontcolor="#4a5568"
langfuse [label="Langfuse\nPort 3000" fillcolor="#121829" shape=box]
postgres [label="PostgreSQL" fillcolor="#121829" shape=cylinder]
}
}
// Connections
ui -> kong [label="HTTP" style=dashed]
kong -> fastapi [label="proxy"]
ui -> fastapi [label="WebSocket" color="#0066ff"]
fastapi -> efhas [label="trigger"]
fastapi -> handover [label="trigger"]
efhas -> shared [label="MCP" color="#0066ff"]
efhas -> passenger [label="MCP" color="#0066ff"]
handover -> shared [label="MCP" color="#0066ff"]
handover -> ops [label="MCP" color="#0066ff"]
shared -> openmeteo [label="HTTP" color="#00c853"]
shared -> faa [label="HTTP" color="#00c853"]
shared -> scenarios
shared -> mock
ops -> mock
ops -> scenarios
ops -> bedrock [label="Converse API" style=dashed]
passenger -> bedrock [label="Converse API" style=dashed]
langfuse -> postgres
fastapi -> langfuse [label="traces" style=dotted color="#8892a8"]
}