digraph data_flow { rankdir=LR bgcolor="#0a0e17" fontname="Helvetica" node [fontname="Helvetica" fontsize=10 style=filled color="#1e2a4a" fontcolor="#e8eaf0"] edge [fontname="Helvetica" fontsize=9 fontcolor="#8892a8" color="#4a5568"] label="Data Flow — Real vs Mock" labelloc=t fontsize=14 fontcolor="#0066ff" subgraph cluster_real { label="LIVE DATA (no API key)" color="#00c853" fontcolor="#00c853" style=rounded openmeteo [label="OpenMeteo API\napi.open-meteo.com\n\nWeather at waypoints\nHub forecasts" fillcolor="#0d2a0d" shape=box fontcolor="#00c853"] faa [label="FAA NASSTATUS\nnasstatus.faa.gov\n\nGround stops\nGround delay programs\nClosures" fillcolor="#0d2a0d" shape=box fontcolor="#00c853"] } subgraph cluster_mock { label="SCENARIO DATA (switchable)" color="#ffc107" fontcolor="#ffc107" style=rounded sc_mgr [label="Scenario Manager\n\nnormal_ops\nweather_disruption_ord\nmaintenance_delay_sfo\ncrew_swap_ewr" fillcolor="#2a2a0d" shape=box fontcolor="#ffc107"] flights [label="FlightData\n7 flights/scenario\nstatus · delay · gate\ncrew · passengers" fillcolor="#121829" shape=box] crew [label="CrewMember\n~12/scenario\nduty hours · rest\nPart 117 state" fillcolor="#121829" shape=box] pax [label="Passenger\nMP status · connections\nspecial needs" fillcolor="#121829" shape=box] mel [label="MELItem\nsystem · restriction\nexpiry" fillcolor="#121829" shape=box] notes [label="Crew Notes\nfree text per flight" fillcolor="#121829" shape=box] rebook [label="RebookingCase\nurgency · next option" fillcolor="#121829" shape=box] } subgraph cluster_mcp { label="MCP Tools" color="#0066ff" fontcolor="#0066ff" t_weather [label="get_route_weather\nget_hub_forecasts" fillcolor="#0d1a33" shape=box] t_airport [label="get_airport_status\nget_airport_congestion" fillcolor="#0d1a33" shape=box] t_flight [label="get_flight_status\nget_flight_details\nget_irregular_ops" fillcolor="#0d1a33" shape=box] t_crew [label="get_crew_notes\nget_crew_duty_status" fillcolor="#0d1a33" shape=box] t_maint [label="get_maintenance_flags" fillcolor="#0d1a33" shape=box] t_pax [label="get_pending_rebookings" fillcolor="#0d1a33" shape=box] } subgraph cluster_output { label="Agent Output" color="#1e2a4a" fontcolor="#8892a8" notif [label="Passenger\nNotification" fillcolor="#1a3a1a" shape=box fontcolor="#00c853"] brief [label="Handover\nBrief" fillcolor="#3a1a0d" shape=box fontcolor="#ff3d00"] } // Real data flow openmeteo -> t_weather [color="#00c853" penwidth=2] faa -> t_airport [color="#00c853" penwidth=2] // Mock data flow sc_mgr -> flights [color="#ffc107"] sc_mgr -> crew [color="#ffc107"] sc_mgr -> pax [color="#ffc107"] sc_mgr -> mel [color="#ffc107"] sc_mgr -> notes [color="#ffc107"] sc_mgr -> rebook [color="#ffc107"] flights -> t_flight [color="#4a5568"] crew -> t_crew [color="#4a5568"] notes -> t_crew [color="#4a5568"] mel -> t_maint [color="#4a5568"] pax -> t_pax [color="#4a5568"] rebook -> t_pax [color="#4a5568"] // To agents t_weather -> notif [color="#0066ff"] t_airport -> notif [color="#0066ff"] t_flight -> notif [color="#0066ff"] t_crew -> notif [color="#0066ff" style=dashed] t_weather -> brief [color="#0066ff"] t_airport -> brief [color="#0066ff"] t_flight -> brief [color="#0066ff"] t_crew -> brief [color="#0066ff"] t_maint -> brief [color="#0066ff"] t_pax -> brief [color="#0066ff"] }