from typing import List, Optional
from pydantic import BaseModel, Field


class DocumentSignals(BaseModel):
    """
    Sinais agregados dos documentos para uso no Motor de Scoring.
    (Core não depende de OCR nem de infra.)
    """
    legibilidade_score: float = Field(..., ge=0.0, le=1.0)
    validacao_score: float = Field(..., ge=0.0, le=1.0)
    coerencia_score: float = Field(..., ge=0.0, le=1.0)
    problemas: List[str] = Field(default_factory=list)

    # opcional: texto extraído pode existir no futuro, mas fora do MVP
    extra: Optional[dict] = None
