update architecture docs for split MCP files, new clusters, Langfuse, and EC2 deploy
This commit is contained in:
@@ -193,7 +193,7 @@
|
||||
|
||||
<section id="system" class="graph-section active">
|
||||
<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>
|
||||
<p>End-to-end view: Vue UI → Kong gateway (optional) → FastAPI → MCP servers → live and scenario data sources. Langfuse (separate shared cluster) traces every agent run and tool call.</p>
|
||||
<div class="graph-container">
|
||||
<a href="viewer.html?src=graphs/system_architecture.svg"><img src="graphs/system_architecture.svg" alt="System Architecture"></a>
|
||||
</div>
|
||||
@@ -252,7 +252,7 @@
|
||||
|
||||
<section id="deploy" class="graph-section">
|
||||
<h2>DEPLOYMENT</h2>
|
||||
<p>Kind cluster for dev (Tilt), docker-compose for quick start, EC2 for production demo. Entry point: localhost:8040.</p>
|
||||
<p>Kind cluster for dev (Tilt), docker-compose for EC2 production (nova-api + nova-ui on shared gateway network). Woodpecker CI builds images on push to main. EC2 nginx proxies stellarair.mcrn.ar → container; Kong Konnect available as optional governance layer.</p>
|
||||
<div class="graph-container">
|
||||
<a href="viewer.html?src=graphs/deployment.svg"><img src="graphs/deployment.svg" alt="Deployment"></a>
|
||||
</div>
|
||||
@@ -264,38 +264,45 @@
|
||||
<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>
|
||||
│ ├── <span class="t-mcp">shared/</span> <span class="t-comment">server.py · tools.py · resources.py · prompts.py</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>
|
||||
│ ├── <span class="t-ops">ops/</span> <span class="t-comment">server.py · tools.py · resources.py · prompts.py</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>
|
||||
│ ├── <span class="t-pax">passenger/</span> <span class="t-comment">server.py · tools.py · resources.py · prompts.py</span>
|
||||
│ │ └── tools: generate_notification
|
||||
│ ├── shared_llm.py <span class="t-comment">multi-provider: Groq · Anthropic · Bedrock · OpenAI</span>
|
||||
│ └── <span class="t-dir">data/</span>
|
||||
│ ├── models.py <span class="t-comment">FlightData, CrewMember, Passenger, MELItem, HubInfo</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>
|
||||
│ ├── fce.py <span class="t-comment">FCE — "Behind Every Departure" (passenger notifications)</span>
|
||||
│ ├── handover.py <span class="t-comment">Shift Handover (ops brief: IMMEDIATE / MONITOR / FYI)</span>
|
||||
│ └── shared/
|
||||
│ ├── mcp_client.py <span class="t-comment">MCPMultiClient + connect_servers context manager</span>
|
||||
│ ├── parser.py <span class="t-comment">parse_tool_result · parse_resource_result · parse_prompt_result</span>
|
||||
│ └── tool_runner.py <span class="t-comment">build_tool_caller — timeout · Langfuse span · error collection</span>
|
||||
├── <span class="t-dir">api/</span>
|
||||
│ └── main.py <span class="t-comment">FastAPI + WebSocket + scenario data API</span>
|
||||
│ ├── main.py <span class="t-comment">FastAPI: agents, scenarios, WebSocket, /health, Langfuse traces</span>
|
||||
│ └── config.py <span class="t-comment">Pydantic Settings — centralized env var reads</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>
|
||||
│ └── app/ <span class="t-comment">Vue 3 SPA — Operations · Internals · Data · Settings</span>
|
||||
│ └── src/config.ts <span class="t-comment">Kong proxy URL + API/WS base</span>
|
||||
├── <span class="t-dir">ctrl/</span>
|
||||
│ ├── Dockerfile.api/ui <span class="t-comment">Container builds</span>
|
||||
│ ├── nginx.conf <span class="t-comment">UI nginx (proxies /agents /scenarios /config /health /ws)</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>
|
||||
│ ├── edge/ <span class="t-comment">Production docker-compose (nova-api + nova-ui on gateway net)</span>
|
||||
│ └── deploy.sh <span class="t-comment">rsync (bypass CI) · edge (pull registry images)</span>
|
||||
├── <span class="t-dir">tests/</span> <span class="t-comment">69 tests: models · clients · MCP · scenarios · agents</span>
|
||||
│ └── base.py <span class="t-comment">dual-mode: inprocess (default) · live (CONTRACT_TEST_MODE=live)</span>
|
||||
├── <span class="t-dir">.woodpecker/</span> <span class="t-comment">CI pipeline — build API + UI, push to registry.mcrn.ar</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>
|
||||
|
||||
Reference in New Issue
Block a user