TP3 Parties 2-4 : API REST FastAPI (health, predict, batch, erreurs 404)

This commit is contained in:
Johan LEROY
2026-07-22 11:22:50 +02:00
parent 9a52395c91
commit b0bd6cdb07
6 changed files with 262 additions and 0 deletions

44
lab/serving/schemas.py Normal file
View File

@@ -0,0 +1,44 @@
"""Schemas Pydantic du service de prediction (contrat d'entree/sortie de l'API)."""
import datetime
from pydantic import BaseModel, Field
class PredictionRequest(BaseModel):
"""Ce que le client fournit : QUI et QUAND, pas les features (calculees cote serveur)."""
client_id: str = Field(
...,
description="Identifiant du client (ex. 'MT_124').",
examples=["MT_124"],
)
date: datetime.date | None = Field(
default=None,
description="Date de la prediction (parametre de requete). Optionnelle.",
examples=["2015-01-01"],
)
class BatchPredictionRequest(BaseModel):
"""Prediction pour plusieurs clients en une seule requete (inference batch)."""
client_ids: list[str] = Field(
...,
description="Liste d'identifiants clients.",
examples=[["MT_124", "MT_156", "MT_158"]],
)
date: datetime.date | None = None
class PredictionResponse(BaseModel):
client_id: str
prediction_kwh: float = Field(description="Consommation predite (kWh).")
model_name: str
model_version: str
class BatchPredictionResponse(BaseModel):
predictions: list[PredictionResponse]
# Clients ignores (features introuvables) : on ne fait pas echouer tout le lot.
unknown_client_ids: list[str] = Field(default_factory=list)