from __future__ import annotations from datetime import date from pydantic import BaseModel, Field class Record(BaseModel): type: str = Field( default="task", pattern=r"^(task|note|action_item|key_value|transcript_segment)$" ) content: str due_date: date | None = None priority: str | None = Field(default=None, pattern=r"^(high|medium|low)$") category: str | None = None speaker: str | None = None timestamp: str | None = None status: str | None = Field(default="todo", pattern=r"^(todo|done)$") confidence: float = Field(default=1.0, ge=0.0, le=1.0) class SourceParseResult(BaseModel): source_file: str source_type: str = Field(default="image", pattern=r"^(image|audio|video|document|spreadsheet)$") captured_date: date | None = None title: str | None = None summary: str | None = None records: list[Record] barcodes: list[dict] = Field(default_factory=list) tables: list[list[str]] = Field(default_factory=list)