govorov/backend/app/schemas/calculation.py

35 lines
1.5 KiB
Python
Raw Normal View History

2025-04-07 09:02:54 +02:00
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 # Если модель определяется по результату