from typing import Optional
from pydantic import BaseModel, Field


class CreditRequest(BaseModel):
    """
    Input principal do motor de scoring (MVP).
    Dados declarativos + metadados de documentação.
    """

    empresa_id: str = Field(..., min_length=3)

    meses_atividade: int = Field(
        ...,
        ge=0,
        description="Meses de actividade da empresa"
    )

    faturamento_mensal: Optional[float] = Field(
        None,
        ge=0,
        description="Faturamento médio mensal declarado (MT)"
    )

    valor_credito: float = Field(
        ...,
        gt=0,
        description="Valor do crédito solicitado (MT)"
    )

    num_documentos: int = Field(
        ...,
        ge=0,
        le=5,
        description="Número de documentos submetidos (0–5)"
    )

    percentual_completude: float = Field(
        ...,
        ge=0,
        le=100,
        description="Percentual de campos preenchidos no formulário"
    )
