init commit

This commit is contained in:
2026-04-12 07:19:48 -03:00
commit 9dbf89da02
111 changed files with 14925 additions and 0 deletions

137
mcp_servers/data/models.py Normal file
View File

@@ -0,0 +1,137 @@
"""Pydantic models for all operational data."""
from datetime import datetime
from enum import Enum
from pydantic import BaseModel
class FlightStatus(str, Enum):
ON_TIME = "ON_TIME"
DELAYED = "DELAYED"
CANCELLED = "CANCELLED"
DIVERTED = "DIVERTED"
class DelayCause(str, Enum):
WEATHER = "WEATHER"
MAINTENANCE = "MAINTENANCE"
CREW = "CREW"
ATC = "ATC"
LATE_AIRCRAFT = "LATE_AIRCRAFT"
class CrewRole(str, Enum):
CAPTAIN = "CAPTAIN"
FIRST_OFFICER = "FIRST_OFFICER"
FA = "FA"
class MPStatus(str, Enum):
GLOBAL_SERVICES = "GLOBAL_SERVICES"
K1 = "1K"
PLATINUM = "PLATINUM"
GOLD = "GOLD"
SILVER = "SILVER"
GENERAL = "GENERAL"
class FlightData(BaseModel):
flight_id: str
origin: str
destination: str
scheduled_departure: datetime
actual_departure: datetime | None = None
scheduled_arrival: datetime
actual_arrival: datetime | None = None
status: FlightStatus
delay_minutes: int = 0
delay_cause: DelayCause | None = None
aircraft_tail: str
gate: str
inbound_flight: str | None = None
crew_ids: list[str] = []
passenger_count: int = 0
class CrewMember(BaseModel):
crew_id: str
name: str
role: CrewRole
duty_hours_elapsed: float
duty_hours_limit: float
rest_hours_since_last: float
next_scheduled_flight: str | None = None
base_hub: str
class Passenger(BaseModel):
pax_id: str
name: str
mileage_plus_status: MPStatus
flight_id: str
destination: str
connection_flight: str | None = None
connection_deadline: datetime | None = None
special_needs: list[str] = []
class MELItem(BaseModel):
mel_id: str
aircraft_tail: str
system: str
description: str
restriction: str | None = None
expires: datetime
class RebookingCase(BaseModel):
pax_id: str
name: str
original_flight: str
mileage_plus_status: MPStatus
destination: str
next_available: str | None = None
urgency: str # HIGH | MEDIUM | LOW
class HubInfo(BaseModel):
code: str
name: str
city: str
timezone: str
latitude: float
longitude: float
terminals: int
gates: int
runways: int
# Hub reference data
HUBS: dict[str, HubInfo] = {
"ORD": HubInfo(
code="ORD", name="O'Hare International", city="Chicago",
timezone="America/Chicago", latitude=41.9742, longitude=-87.9073,
terminals=4, gates=191, runways=8,
),
"EWR": HubInfo(
code="EWR", name="Newark Liberty International", city="Newark",
timezone="America/New_York", latitude=40.6895, longitude=-74.1745,
terminals=3, gates=120, runways=3,
),
"IAH": HubInfo(
code="IAH", name="George Bush Intercontinental", city="Houston",
timezone="America/Chicago", latitude=29.9902, longitude=-95.3368,
terminals=5, gates=130, runways=5,
),
"SFO": HubInfo(
code="SFO", name="San Francisco International", city="San Francisco",
timezone="America/Los_Angeles", latitude=37.6213, longitude=-122.3790,
terminals=4, gates=115, runways=4,
),
"DEN": HubInfo(
code="DEN", name="Denver International", city="Denver",
timezone="America/Denver", latitude=39.8561, longitude=-104.6737,
terminals=1, gates=95, runways=6,
),
}