Consultation des alertes de consommation, filtrable par site_id et severity a l'identique du contrat GET /alerts de l'API Mock. Reprend le gabarit endpoints -> services -> repositories -> models pose par sites, sur la table alert deja creee par la revision Alembic e6d2026091501. Generalise aussi le garde-fou OpenAPI du 403 (ROUTES_A_ROLE) au-dela du seul tag users, pour que l'ajout d'alerts a la liste des routes protegees par role soit reellement verifie. Closes #59
35 lines
673 B
Python
35 lines
673 B
Python
from datetime import datetime
|
|
from enum import StrEnum
|
|
|
|
from pydantic import BaseModel, ConfigDict
|
|
|
|
|
|
class AlertType(StrEnum):
|
|
SPIKE = "spike"
|
|
THRESHOLD = "threshold"
|
|
ANOMALY = "anomaly"
|
|
OUTAGE = "outage"
|
|
SENSOR = "sensor"
|
|
|
|
|
|
class AlertSeverity(StrEnum):
|
|
LOW = "low"
|
|
MEDIUM = "medium"
|
|
HIGH = "high"
|
|
CRITICAL = "critical"
|
|
|
|
|
|
class AlertResponse(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
alert_id: int
|
|
site_id: str
|
|
timestamp: datetime
|
|
type: AlertType
|
|
severity: AlertSeverity
|
|
message: str
|
|
value: float | None
|
|
threshold: float | None
|
|
metric: str | None
|
|
prediction_id: int | None
|