from datetime import date, datetime from pydantic import BaseModel from app.schemas.schedule import ScheduleBlockOut from app.schemas.child import ChildOut class SessionStart(BaseModel): child_id: int template_id: int | None = None session_date: date | None = None # defaults to today class TimerAction(BaseModel): event_type: str # start | pause | resume | complete | skip block_id: int | None = None class TimerEventOut(BaseModel): id: int block_id: int | None event_type: str occurred_at: datetime model_config = {"from_attributes": True} class DailySessionOut(BaseModel): id: int child_id: int template_id: int | None session_date: date is_active: bool current_block_id: int | None current_block: ScheduleBlockOut | None = None model_config = {"from_attributes": True} class DashboardSnapshot(BaseModel): """Public TV dashboard payload — no auth required.""" session: DailySessionOut | None child: ChildOut blocks: list[ScheduleBlockOut] = [] completed_block_ids: list[int] = [] block_elapsed_seconds: int = 0 # seconds already elapsed for the current block is_paused: bool = False # whether the current block's timer is paused morning_routine: list[str] = [] # text items shown on TV during greeting state break_activities: list[str] = [] # text items shown on TV during break time is_break_active: bool = False # whether break mode is currently active break_elapsed_seconds: int = 0 # seconds already elapsed in the break timer is_break_paused: bool = False # whether the break timer is paused