105 lines
3.6 KiB
Plaintext
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"]
|
|
}
|