"""Contracts for reviewable PDF/DOCX resume imports.""" from __future__ import annotations from datetime import datetime from typing import Any, Literal from pydantic import BaseModel, ConfigDict, Field class ImportEvidence(BaseModel): page: int | None = Field(default=None, ge=1) paragraph: int | None = Field(default=None, ge=1) text: str = Field(min_length=1, max_length=500) class ImportFieldReview(BaseModel): field_path: str = Field(min_length=1, max_length=256) value: Any confidence: float = Field(ge=0, le=1) status: Literal["needs_review", "verified"] = "needs_review" evidence: list[ImportEvidence] = Field(min_length=1, max_length=10) class ParsedResumeDraft(BaseModel): model_config = ConfigDict(extra="forbid") document: dict[str, Any] field_reviews: list[ImportFieldReview] = Field(default_factory=list) class ResumeImportView(BaseModel): id: str session_id: str file_name: str mime_type: str size_bytes: int sha256: str status: Literal["awaiting_review", "applied", "failed", "cancelled"] document: dict[str, Any] | None = None field_reviews: list[ImportFieldReview] = Field(default_factory=list) error_code: str | None = None created_at: datetime updated_at: datetime class ApplyResumeImportRequest(BaseModel): model_config = ConfigDict(extra="forbid") expected_revision: int = Field(ge=0)