"""Pydantic request/response schemas for the compliance-check route."""

from __future__ import annotations

from pydantic import BaseModel


class ExtractTextRequest(BaseModel):
    url: str


class DocumentInput(BaseModel):
    doc_type: str  # dse, agb, impressum, cookie, widerruf, avv, loeschkonzept, etc.
    url: str = ""
    text: str = ""  # text has priority over URL


class ComplianceCheckRequest(BaseModel):
    documents: list[DocumentInput]
    use_agent: bool = False
    recipient: str = "dsb@breakpilot.local"
    # P12: Override fuer TDM-Vorbehalt bei dokumentierter Kunden-Erlaubnis.
    # Pflichtfeld tdm_override_reason wenn tdm_override=True
    # (z.B. "Auftragsbeziehung Safetykon GmbH, Email Hr. X 18.05.2026").
    tdm_override: bool = False
    tdm_override_reason: str = ""
    # P79: 8-Feld Pre-Scan-Wizard (Branche, B2B/B2C, Direkt-Vertrieb,
    # Rechtsform, Konzern, MA, Besondere Daten, Drittland). Wird im
    # Snapshot persistiert und filtert die MC-Auswertung (P72).
    scan_context: dict | None = None
    # Frontend-eingegebene Firma + Origin-Domain. Priorisiert vor
    # LLM-extracted_profile-Inferenz. Wenn leer: Fallback auf Heuristik
    # aus URL-Domains und DSE-Text.
    company_name: str | None = None
    origin_domain: str | None = None


class ComplianceCheckStartResponse(BaseModel):
    check_id: str
    status: str = "running"


class ComplianceCheckStatusResponse(BaseModel):
    check_id: str
    status: str
    progress: str = ""
    progress_pct: int = 0
    result: dict | None = None
    error: str = ""
