"""İtiraz ayıklayıcısının veri modelleri."""

from __future__ import annotations

from pydantic import BaseModel, Field


class ObjectionItem(BaseModel):
    """Şekli inceleme/itiraz yazısından çıkarılan tek bir eksiklik maddesi."""

    description: str = Field(
        ..., description="Kurumun tespit ettiği eksikliğin metni"
    )
    category: str = Field(
        default="genel",
        description="Eksikliğin türü: istemler | tarifname | ozet | resimler | genel",
    )
    matched_rule_id: str = Field(
        default="",
        description=(
            "Eşleştirilebildiyse şekli tarayıcının kural kimliği "
            "(örn. 'claims.no_subheadings'); eşleşmezse boş."
        ),
    )
    suggested_fix: str = Field(
        default="",
        description="Eksikliğin nasıl giderilebileceğine dair kısa öneri",
    )


class ObjectionReport(BaseModel):
    """Bir itiraz/şekli inceleme yazısı için ayıklama sonucu."""

    items: list[ObjectionItem] = Field(default_factory=list)
    deadline: str = Field(
        default="",
        description="Yazıda belirtilen süre (örn. 'iki ay'); bulunamazsa boş",
    )
    application_number: str = Field(
        default="", description="Yazıdan çıkarılan başvuru numarası"
    )
    letter_reference: str = Field(
        default="", description="Yazının sayı/tarih bilgisi"
    )
    item_count: int = 0
    extracted: bool = Field(
        default=False,
        description="LLM ayıklaması çalıştı mı (API key vs.)",
    )
