brand renaming, scenario reloads flight
This commit is contained in:
@@ -144,6 +144,30 @@
|
||||
.legend .mock::before { background: #ffc107; }
|
||||
.legend .mcp::before { background: #0066ff; }
|
||||
.legend .ops::before { background: #ff3d00; }
|
||||
|
||||
.graph-container a { display: block; }
|
||||
.graph-container img { max-width: 100%; height: auto; }
|
||||
|
||||
/* Repo tree */
|
||||
.tree-container {
|
||||
background: #0a0e17;
|
||||
border: 1px solid #1e2a4a;
|
||||
padding: 24px;
|
||||
overflow: auto;
|
||||
}
|
||||
.repo-tree {
|
||||
font-family: 'JetBrains Mono', monospace;
|
||||
font-size: 13px;
|
||||
line-height: 1.7;
|
||||
color: #8892a8;
|
||||
}
|
||||
.t-root { color: #0066ff; font-weight: 600; font-size: 15px; }
|
||||
.t-dir { color: #e8eaf0; font-weight: 500; }
|
||||
.t-mcp { color: #0066ff; font-weight: 500; }
|
||||
.t-ops { color: #ff3d00; font-weight: 500; }
|
||||
.t-pax { color: #00c853; font-weight: 500; }
|
||||
.t-live { color: #00c853; }
|
||||
.t-comment { color: #4a5568; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@@ -171,7 +195,7 @@
|
||||
<h2>SYSTEM ARCHITECTURE</h2>
|
||||
<p>End-to-end view: Vue UI → Kong gateway → FastAPI → MCP servers → live and scenario data sources. Langfuse traces every agent run.</p>
|
||||
<div class="graph-container">
|
||||
<img src="graphs/system_architecture.svg" alt="System Architecture">
|
||||
<a href="viewer.html?src=graphs/system_architecture.svg"><img src="graphs/system_architecture.svg" alt="System Architecture"></a>
|
||||
</div>
|
||||
<div class="legend">
|
||||
<span class="live">Live API</span>
|
||||
@@ -184,20 +208,25 @@
|
||||
<h2>MCP SERVER TOPOLOGY</h2>
|
||||
<p>Three servers scoped by access domain. Each exposes tools, resources, and prompts. FCE connects to shared + passenger. Handover connects to shared + ops.</p>
|
||||
<div class="graph-container">
|
||||
<img src="graphs/mcp_servers.svg" alt="MCP Servers">
|
||||
<a href="viewer.html?src=graphs/mcp_servers.svg"><img src="graphs/mcp_servers.svg" alt="MCP Servers"></a>
|
||||
</div>
|
||||
<div class="legend">
|
||||
<span class="mcp">Shared server</span>
|
||||
<span class="ops">Ops server</span>
|
||||
<span class="live">Passenger server</span>
|
||||
</div>
|
||||
<div class="legend" style="margin-top: 8px;">
|
||||
<span style="color:#8892a8">── solid = tool calls</span>
|
||||
<span style="color:#8892a8">╌╌ dashed = resource reads</span>
|
||||
<span style="color:#8892a8">··· dotted = prompt gets</span>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="efhas" class="graph-section">
|
||||
<h2>FCE AGENT — BEHIND EVERY DEPARTURE</h2>
|
||||
<p>Passenger notification agent. Triages flight status, gathers context from 5 parallel tool calls (including live weather and FAA data), synthesizes an empathetic notification.</p>
|
||||
<div class="graph-container">
|
||||
<img src="graphs/efhas_agent.svg" alt="FCE Agent">
|
||||
<a href="viewer.html?src=graphs/efhas_agent.svg"><img src="graphs/efhas_agent.svg" alt="FCE Agent"></a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -205,7 +234,7 @@
|
||||
<h2>SHIFT HANDOVER AGENT</h2>
|
||||
<p>Ops briefing agent. Scans all hubs in parallel, scores issues by severity × time sensitivity, categorizes into IMMEDIATE / MONITOR / FYI, generates a structured brief.</p>
|
||||
<div class="graph-container">
|
||||
<img src="graphs/handover_agent.svg" alt="Handover Agent">
|
||||
<a href="viewer.html?src=graphs/handover_agent.svg"><img src="graphs/handover_agent.svg" alt="Handover Agent"></a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -213,7 +242,7 @@
|
||||
<h2>DATA FLOW — REAL vs MOCK</h2>
|
||||
<p>Weather and FAA airport status are live (no API key). Flight, crew, passenger, and maintenance data are scenario-based fixtures switchable from the UI.</p>
|
||||
<div class="graph-container">
|
||||
<img src="graphs/data_flow.svg" alt="Data Flow">
|
||||
<a href="viewer.html?src=graphs/data_flow.svg"><img src="graphs/data_flow.svg" alt="Data Flow"></a>
|
||||
</div>
|
||||
<div class="legend">
|
||||
<span class="live">Live data (no API key)</span>
|
||||
@@ -225,15 +254,50 @@
|
||||
<h2>DEPLOYMENT</h2>
|
||||
<p>Kind cluster for dev (Tilt), docker-compose for quick start, EC2 for production demo. Entry point: localhost:8040.</p>
|
||||
<div class="graph-container">
|
||||
<img src="graphs/deployment.svg" alt="Deployment">
|
||||
<a href="viewer.html?src=graphs/deployment.svg"><img src="graphs/deployment.svg" alt="Deployment"></a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="repo" class="graph-section">
|
||||
<h2>REPOSITORY STRUCTURE</h2>
|
||||
<p>Monorepo: MCP servers, agents, IRROP engine, API, Vue UI (with shared component framework), and deployment configs.</p>
|
||||
<div class="graph-container">
|
||||
<img src="graphs/repo_structure.svg" alt="Repository Structure">
|
||||
<div class="tree-container">
|
||||
<pre class="repo-tree"><span class="t-root">stellar-ops/</span>
|
||||
├── <span class="t-dir">mcp_servers/</span>
|
||||
│ ├── <span class="t-mcp">shared/</span> <span class="t-comment">server.py — tools/ resources/ prompts/</span>
|
||||
│ │ └── tools: <span class="t-live">get_route_weather</span> · <span class="t-live">get_hub_forecasts</span> · <span class="t-live">get_airport_status</span>
|
||||
│ │ get_flight_status · get_flight_details · get_irregular_ops
|
||||
│ │ get_airport_congestion · get_maintenance_flags
|
||||
│ ├── <span class="t-ops">ops/</span> <span class="t-comment">server.py — tools/ resources/ prompts/</span>
|
||||
│ │ └── tools: get_crew_notes · get_crew_duty_status · get_pending_rebookings
|
||||
│ │ generate_narrative
|
||||
│ ├── <span class="t-pax">passenger/</span> <span class="t-comment">server.py — tools/ resources/ prompts/</span>
|
||||
│ │ └── tools: generate_notification
|
||||
│ └── <span class="t-dir">data/</span>
|
||||
│ ├── models.py <span class="t-comment">FlightData, CrewMember, Passenger, MELItem, HubInfo</span>
|
||||
│ ├── real/ <span class="t-live">openmeteo.py · faa.py</span>
|
||||
│ └── scenarios/ <span class="t-comment">normal_ops · weather_disruption_ord</span>
|
||||
│ <span class="t-comment">maintenance_delay_sfo · crew_swap_ewr</span>
|
||||
├── <span class="t-dir">agents/</span>
|
||||
│ ├── fce.py <span class="t-comment">FCE — "Behind Every Departure"</span>
|
||||
│ ├── handover.py <span class="t-comment">Shift Handover agent</span>
|
||||
│ └── shared/ <span class="t-comment">mcp_client.py · llm.py (Bedrock/Anthropic)</span>
|
||||
├── <span class="t-dir">irrop/</span> <span class="t-comment">Disruption Recovery Engine (Project 3)</span>
|
||||
│ ├── models/ <span class="t-comment">flight · passenger · crew · recovery</span>
|
||||
│ ├── rules/ <span class="t-comment">faa_part117 · rebooking · compensation</span>
|
||||
│ └── pipeline/ <span class="t-comment">ingest → triage → rebook → compensate</span>
|
||||
├── <span class="t-dir">api/</span>
|
||||
│ └── main.py <span class="t-comment">FastAPI + WebSocket + scenario data API</span>
|
||||
├── <span class="t-dir">ui/</span>
|
||||
│ ├── framework/ <span class="t-comment">soleprint-ui (shared component library)</span>
|
||||
│ └── app/ <span class="t-comment">Vue 3 SPA — Operations · Internals · Data</span>
|
||||
├── <span class="t-dir">ctrl/</span>
|
||||
│ ├── Dockerfile.api/ui <span class="t-comment">Container builds</span>
|
||||
│ ├── k8s/ <span class="t-comment">base/ + overlays/dev/ (Kustomize)</span>
|
||||
│ ├── Tiltfile <span class="t-comment">Dev environment (Kind cluster: unt)</span>
|
||||
│ └── docker-compose.yml <span class="t-comment">Simple alternative</span>
|
||||
├── <span class="t-dir">docs/</span> <span class="t-comment">Architecture graphs (this page)</span>
|
||||
└── .mcp.json <span class="t-comment">Claude Code integration — 3 servers</span></pre>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -248,6 +312,7 @@ function show(id) {
|
||||
document.getElementById(id).classList.add('active');
|
||||
event.currentTarget.classList.add('active');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user