Ajoute le resume instantane de consommation du parc attendu par le frontend (deja developpe contre ce contrat en mode mock). Nouveaux SiteRepository et ReadingRepository (derniere lecture par site via DISTINCT ON), StatsService pour l'agregation et les cas de repli (capacite nulle, absence de lecture, data_quality inconnue), et le endpoint lecteur-seul correspondant. Documentation des routes et du schema des couches mises a jour.
17 lines
471 B
Python
17 lines
471 B
Python
from fastapi import APIRouter
|
|
|
|
from app.api.deps import LecteurDep, StatsServiceDep
|
|
from app.schemas.stats import StatsSummaryResponse
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get(
|
|
"/summary",
|
|
response_model=StatsSummaryResponse,
|
|
summary="Résume la consommation instantanée du parc",
|
|
)
|
|
async def get_summary(_: LecteurDep, service: StatsServiceDep) -> StatsSummaryResponse:
|
|
resume = await service.summary()
|
|
return StatsSummaryResponse.model_validate(resume)
|