""" Modeles Pydantic pour les refrigerants """ from typing import Optional, List from pydantic import BaseModel, Field class RefrigerantInfo(BaseModel): """Informations sur un refrigerant""" name: str = Field(..., description="Nom du refrigerant (ex: R134a)") available: bool = Field(..., description="Disponibilite de la bibliotheque") loaded: bool = Field(default=False, description="Si charge en memoire") error: Optional[str] = Field(None, description="Message d'erreur si indisponible") class RefrigerantsListResponse(BaseModel): """Reponse pour la liste des refrigerants""" refrigerants: List[RefrigerantInfo] = Field(..., description="Liste des refrigerants") total: int = Field(..., description="Nombre total de refrigerants") available_count: int = Field(..., description="Nombre de refrigerants disponibles") class ThermodynamicProperties(BaseModel): """Proprietes thermodynamiques d'un point""" temperature: float = Field(..., description="Temperature (K)") pressure: float = Field(..., description="Pression (Pa)") enthalpy: float = Field(..., description="Enthalpie (J/kg)") entropy: float = Field(..., description="Entropie (J/kg.K)") density: float = Field(..., description="Densite (kg/m3)") quality: Optional[float] = Field(None, description="Qualite (0-1)", ge=0, le=1) class SaturationProperties(BaseModel): """Proprietes de saturation""" temperature_sat: float = Field(..., description="Temperature de saturation (K)") pressure: float = Field(..., description="Pression (Pa)") enthalpy_liquid: float = Field(..., description="Enthalpie liquide saturee (J/kg)") enthalpy_vapor: float = Field(..., description="Enthalpie vapeur saturee (J/kg)") density_liquid: float = Field(..., description="Densite liquide (kg/m3)") density_vapor: float = Field(..., description="Densite vapeur (kg/m3)") class PropertyRequest(BaseModel): """Requete pour calculer des proprietes""" refrigerant: str = Field(..., description="Nom du refrigerant", example="R134a") pressure: float = Field(..., description="Pression (Pa)", gt=0) quality: Optional[float] = Field(None, description="Qualite (0-1)", ge=0, le=1) temperature: Optional[float] = Field(None, description="Temperature (K)", gt=0) enthalpy: Optional[float] = Field(None, description="Enthalpie (J/kg)") class Config: json_schema_extra = { "example": { "refrigerant": "R134a", "pressure": 500000, "quality": 0.5 } }