from typing import Any from pydantic import BaseModel, Field class AnalyzeResponse(BaseModel): score: float = Field(ge=0.0, le=1.0) verdict: str heatmap_b64: str overlay_b64: str model_version: str elapsed_ms: int structure_score: float | None = Field(default=None, ge=0.0, le=1.0) context_score: float | None = Field(default=None, ge=0.0, le=1.0) detail_score: float | None = Field(default=None, ge=0.0, le=1.0) source: str | None = None threshold: float | None = None reason: str | None = None model_scores: list[dict[str, Any]] = Field(default_factory=list) provenance: dict[str, Any] | None = None ensemble: dict[str, Any] | None = None class VersionResponse(BaseModel): model_version: str model_path: str class HealthResponse(BaseModel): status: str