59 lines
2.5 KiB
Python
59 lines
2.5 KiB
Python
"""
|
|
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
|
|
}
|
|
} |