from pydantic import BaseModel, ConfigDict from datetime import datetime from typing import Optional, Dict, Any # --- Базовая схема --- # Общие поля для расчета class CalculationBase(BaseModel): input_params: Dict[str, Any] model_name: Optional[str] = None # Модель может быть выбрана сервером # --- Схема для создания (запуска) расчета --- # Данные, которые пользователь отправляет для запуска class CalculationCreate(CalculationBase): pass # Пока совпадает с Base, но может быть расширена # --- Схема для чтения --- # Полная информация о расчете, возвращаемая API class CalculationRead(CalculationBase): id: int output_results: Optional[Dict[str, Any]] = None timestamp: datetime objective_score: Optional[float] = None # Включаем режим ORM model_config = ConfigDict(from_attributes=True) # В Pydantic v1 было: # class Config: # orm_mode = True # --- Опционально: Схема для обновления (если результаты добавляются позже) --- class CalculationUpdate(BaseModel): output_results: Optional[Dict[str, Any]] = None objective_score: Optional[float] = None model_name: Optional[str] = None # Если модель определяется по результату