"""Schemas — Government ID verification (SOW proctored interviews)."""

from typing import Any
from uuid import UUID

from pydantic import BaseModel, Field, model_validator

from app.schemas.common import StubMeta


class IdVerificationRequest(BaseModel):
    """POST /api/v1/id-verification/verify"""

    correlation_id: UUID | None = None
    interview_id: str | None = None
    candidate_id: str | None = None
    expected_name: str | None = None
    id_image_base64: str | None = None
    id_source_url: str | None = None
    id_country: str | None = None
    options: dict[str, Any] = Field(default_factory=dict)

    @model_validator(mode="after")
    def require_image(self) -> "IdVerificationRequest":
        if not self.id_image_base64 and not self.id_source_url:
            raise ValueError("Provide id_image_base64 or id_source_url")
        return self


class IdVerificationResponse(StubMeta):
    correlation_id: UUID | None = None
    verified: bool | None = None
    extracted_name: str | None = None
    extracted_id_number: str | None = None
    document_type: str | None = None
    match_score: float | None = None
    warnings: list[str] = Field(default_factory=list)
