73 lines
3.2 KiB
Python
73 lines
3.2 KiB
Python
"""Scenario: Normal Operations — all flights on time, clear weather, full crew.
|
|
|
|
Baseline scenario. Agents should produce minimal/calm output.
|
|
"""
|
|
|
|
from datetime import datetime, timezone
|
|
|
|
from mcp_servers.data.models import (
|
|
CrewMember,
|
|
CrewRole,
|
|
FlightData,
|
|
FlightStatus,
|
|
MPStatus,
|
|
Passenger,
|
|
RebookingCase,
|
|
MELItem,
|
|
)
|
|
|
|
SCENARIO_ID = "normal_ops"
|
|
SCENARIO_NAME = "Normal Operations"
|
|
SCENARIO_DESCRIPTION = "All flights on time at ORD. Clear weather. No disruptions."
|
|
SCENARIO_HUBS = ["ORD"]
|
|
|
|
FLIGHTS: list[FlightData] = [
|
|
FlightData(
|
|
flight_id="UA1440", origin="ORD", destination="SFO",
|
|
scheduled_departure=datetime(2026, 4, 11, 18, 0, tzinfo=timezone.utc),
|
|
scheduled_arrival=datetime(2026, 4, 11, 20, 30, tzinfo=timezone.utc),
|
|
status=FlightStatus.ON_TIME, aircraft_tail="N79001", gate="H10",
|
|
crew_ids=["CR-2001", "CR-2002"], passenger_count=175,
|
|
),
|
|
FlightData(
|
|
flight_id="UA1552", origin="ORD", destination="EWR",
|
|
scheduled_departure=datetime(2026, 4, 11, 18, 30, tzinfo=timezone.utc),
|
|
scheduled_arrival=datetime(2026, 4, 11, 21, 45, tzinfo=timezone.utc),
|
|
status=FlightStatus.ON_TIME, aircraft_tail="N79002", gate="B12",
|
|
crew_ids=["CR-2003", "CR-2004"], passenger_count=190,
|
|
),
|
|
FlightData(
|
|
flight_id="UA1678", origin="ORD", destination="DEN",
|
|
scheduled_departure=datetime(2026, 4, 11, 19, 0, tzinfo=timezone.utc),
|
|
scheduled_arrival=datetime(2026, 4, 11, 20, 30, tzinfo=timezone.utc),
|
|
status=FlightStatus.ON_TIME, aircraft_tail="N79003", gate="C8",
|
|
crew_ids=["CR-2005", "CR-2006"], passenger_count=160,
|
|
),
|
|
]
|
|
|
|
CREW: list[CrewMember] = [
|
|
CrewMember(crew_id="CR-2001", name="Capt. Hayes", role=CrewRole.CAPTAIN,
|
|
duty_hours_elapsed=4.0, duty_hours_limit=14.0,
|
|
rest_hours_since_last=18.0, next_scheduled_flight="UA1440", base_hub="ORD"),
|
|
CrewMember(crew_id="CR-2002", name="FO Park", role=CrewRole.FIRST_OFFICER,
|
|
duty_hours_elapsed=4.0, duty_hours_limit=14.0,
|
|
rest_hours_since_last=16.0, next_scheduled_flight="UA1440", base_hub="ORD"),
|
|
CrewMember(crew_id="CR-2003", name="Capt. Lewis", role=CrewRole.CAPTAIN,
|
|
duty_hours_elapsed=5.0, duty_hours_limit=14.0,
|
|
rest_hours_since_last=15.0, next_scheduled_flight="UA1552", base_hub="ORD"),
|
|
CrewMember(crew_id="CR-2004", name="FO Sharma", role=CrewRole.FIRST_OFFICER,
|
|
duty_hours_elapsed=5.0, duty_hours_limit=14.0,
|
|
rest_hours_since_last=14.0, next_scheduled_flight="UA1552", base_hub="ORD"),
|
|
CrewMember(crew_id="CR-2005", name="Capt. Brown", role=CrewRole.CAPTAIN,
|
|
duty_hours_elapsed=3.0, duty_hours_limit=14.0,
|
|
rest_hours_since_last=20.0, next_scheduled_flight="UA1678", base_hub="ORD"),
|
|
CrewMember(crew_id="CR-2006", name="FO Nguyen", role=CrewRole.FIRST_OFFICER,
|
|
duty_hours_elapsed=3.0, duty_hours_limit=14.0,
|
|
rest_hours_since_last=19.0, next_scheduled_flight="UA1678", base_hub="ORD"),
|
|
]
|
|
|
|
CREW_NOTES: dict[str, list[str]] = {}
|
|
MAINTENANCE: dict[str, list[MELItem]] = {}
|
|
REBOOKINGS: list[RebookingCase] = []
|
|
PASSENGERS: list[Passenger] = []
|