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__, )