44 lines
1.0 KiB
Python
44 lines
1.0 KiB
Python
from datetime import datetime
|
|
from enum import StrEnum
|
|
|
|
from pydantic import BaseModel, ConfigDict
|
|
|
|
|
|
class PredictionTargetMetric(StrEnum):
|
|
CONSUMPTION_KWH = "consumption_kwh"
|
|
CONSUMPTION_KW = "consumption_kw"
|
|
|
|
|
|
class PredictionStatus(StrEnum):
|
|
AVAILABLE = "available"
|
|
INSUFFICIENT_DATA = "insufficient_data"
|
|
ERROR = "error"
|
|
|
|
|
|
class SitePredictionResponse(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
target_at: datetime
|
|
target_metric: PredictionTargetMetric
|
|
period_minutes: int | None
|
|
predicted_value: float | None
|
|
status: PredictionStatus
|
|
failure_reason: str | None
|
|
model_reference: str
|
|
created_at: datetime
|
|
|
|
|
|
class SitePredictionSummaryResponse(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
site_id: str
|
|
site_name: str
|
|
prediction: SitePredictionResponse | None
|
|
|
|
|
|
class PredictionSummaryResponse(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
timestamp: datetime
|
|
sites: list[SitePredictionSummaryResponse]
|