35 lines
1.5 KiB
Python
35 lines
1.5 KiB
Python
|
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 # Если модель определяется по результату
|