Files
Schemas/soile_anomaly_detection.py
T
2026-04-27 03:12:33 +03:30

43 lines
1.1 KiB
Python

from __future__ import annotations
from typing import Literal
from uuid import UUID
from pydantic import Field
from .common import ApiEnvelope, JsonObject, JsonList, RouteContract, SchemaModel
HTTP_METHOD = 'POST'
ROUTE_PATH = '/api/soile/anomaly-detection/'
class SoileAnomalyDetectionRequest(SchemaModel):
farm_uuid: UUID
class SoileAnomalyDetectionResponseData(SchemaModel):
farm_uuid: str
summary: str
explanation: str | None = None
likely_cause: str | None = None
recommended_action: str | None = None
monitoring_priority: Literal['low', 'medium', 'high', 'urgent'] | str
confidence: float | None = None
generated_at: str | None = None
anomalies: JsonList = Field(default_factory=list)
interpretation: JsonObject = Field(default_factory=dict)
knowledge_base: str | None = None
raw_response: str | None = None
class SoileAnomalyDetectionResponse(ApiEnvelope[SoileAnomalyDetectionResponseData]):
pass
CONTRACT = RouteContract(
method=HTTP_METHOD,
path=ROUTE_PATH,
request_model=SoileAnomalyDetectionRequest.__name__,
response_model=SoileAnomalyDetectionResponse.__name__,
)