41 lines
1.8 KiB
Python
41 lines
1.8 KiB
Python
"""Pydantic модели для расписаний."""
|
|
from datetime import date
|
|
from typing import List, Optional
|
|
from uuid import UUID
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class Task(BaseModel):
|
|
"""Модель задания в расписании."""
|
|
|
|
id: Optional[UUID] = None
|
|
title: str = Field(..., description="Название задания")
|
|
description: Optional[str] = Field(None, description="Подробное описание")
|
|
duration_minutes: int = Field(..., ge=1, description="Длительность в минутах")
|
|
category: str = Field(..., description="Категория задания")
|
|
image_url: Optional[str] = Field(None, description="URL изображения")
|
|
completed: bool = Field(default=False, description="Выполнено ли задание")
|
|
order: int = Field(default=0, description="Порядок в расписании")
|
|
|
|
|
|
class Schedule(BaseModel):
|
|
"""Модель расписания."""
|
|
|
|
id: Optional[UUID] = None
|
|
title: str = Field(..., description="Название расписания")
|
|
date: date = Field(..., description="Дата расписания")
|
|
tasks: List[Task] = Field(default_factory=list, description="Список заданий")
|
|
user_id: Optional[UUID] = None
|
|
created_at: Optional[str] = None
|
|
|
|
|
|
class ScheduleGenerateRequest(BaseModel):
|
|
"""Запрос на генерацию расписания."""
|
|
|
|
child_age: int = Field(..., ge=1, le=18, description="Возраст ребенка")
|
|
preferences: List[str] = Field(default_factory=list, description="Предпочтения ребенка")
|
|
date: date = Field(..., description="Дата расписания")
|
|
existing_tasks: Optional[List[str]] = Field(None, description="Существующие задания для учета")
|
|
|