from datetime import datetime from pydantic import BaseModel, Field from app.models.task import TaskDispatchStatus, TaskPriority, TaskQuadrant, TaskStatus from app.schemas.goal import GoalOut from app.schemas.reminder import ReminderOut from app.schemas.task import TaskOut from app.schemas.todo import TodoOut class ScheduleCenterDaySummary(BaseModel): date: str todo_total: int todo_completed: int task_due_total: int high_priority_total: int reminder_total: int goal_total: int class ScheduleCenterFocusTaskOut(BaseModel): id: str title: str status: TaskStatus priority: TaskPriority quadrant: TaskQuadrant | None = None assignee_type: str | None = None assignee_id: str | None = None dispatch_status: TaskDispatchStatus due_date: datetime | None = None class ScheduleCenterQuadrantTaskOut(BaseModel): id: str title: str status: TaskStatus priority: TaskPriority dispatch_status: TaskDispatchStatus assignee_type: str | None = None assignee_id: str | None = None class ScheduleCenterQuadrantOut(BaseModel): id: TaskQuadrant title: str subtitle: str color: str glow_color: str icon: str tasks: list[ScheduleCenterQuadrantTaskOut] = Field(default_factory=list) class ScheduleCenterCommanderSummaryOut(BaseModel): total: int = 0 queued: int = 0 running: int = 0 completed: int = 0 failed: int = 0 overall_status: str | None = None class ScheduleCenterMonthOut(BaseModel): month: str days: list[ScheduleCenterDaySummary] class ScheduleCenterDateOut(BaseModel): date: str todos: list[TodoOut] tasks: list[TaskOut] reminders: list[ReminderOut] goals: list[GoalOut] summary: ScheduleCenterDaySummary focus_tasks: list[ScheduleCenterFocusTaskOut] = Field(default_factory=list) quadrants: list[ScheduleCenterQuadrantOut] = Field(default_factory=list) commander_summary: ScheduleCenterCommanderSummaryOut = Field( default_factory=ScheduleCenterCommanderSummaryOut, ) generated_at: datetime