feat(backend): expose GET /api/v1/alerts
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
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
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
|
||||
Reference in New Issue
Block a user