36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
"""
|
|
API models for the Airport Announcement System.
|
|
"""
|
|
from enum import Enum
|
|
from pydantic import BaseModel, Field
|
|
from typing import Optional, List
|
|
|
|
class AnnouncementStates(Enum):
|
|
IDLE: str = "Ready"
|
|
TRANSLATING: str = "Translating"
|
|
GENERATING_VOICE: str = "Generating voice synthesis"
|
|
ROUTING: str = "Routing to endpoints"
|
|
ACTIVE: str = "Broadcasting announcement"
|
|
COMPLETE: str = "Complete"
|
|
ERROR: str = "Error"
|
|
|
|
class AnnouncementParameters(BaseModel):
|
|
text: Optional[str] = None
|
|
languages: List[str] = []
|
|
start_time: Optional[float] = None
|
|
|
|
class AnnouncementProgress(BaseModel):
|
|
current_state: str = AnnouncementStates.IDLE.value
|
|
progress: float = Field(default=0.0, ge=0.0, le=1.0)
|
|
error: Optional[str] = None
|
|
|
|
class EndpointGroup(BaseModel):
|
|
id: int
|
|
name: str
|
|
endpoints: List[str]
|
|
languages: List[str]
|
|
|
|
# Announcement parameters and progress as nested models
|
|
parameters: AnnouncementParameters = Field(default_factory=AnnouncementParameters)
|
|
progress: AnnouncementProgress = Field(default_factory=AnnouncementProgress)
|