from datetime import datetime from typing import Literal from pydantic import BaseModel, ConfigDict, Field class ReportCreate(BaseModel): image_id: str hand_side: Literal["left", "right", "unknown"] = "unknown" class ReportSummary(BaseModel): model_config = ConfigDict(from_attributes=True) id: str status: str hand_side: str created_at: datetime overall_summary: str | None = None class ReportDetail(BaseModel): model_config = ConfigDict(from_attributes=True) id: str status: str hand_side: str error_message: str | None = None report_data: dict | None = None created_at: datetime updated_at: datetime class ReportDimension(BaseModel): name: str observations: list[str] = Field(default_factory=list) interpretation: str confidence: float = Field(ge=0, le=1) advice: str