Coverage for src / schemas / api_schema.py: 100%
22 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-26 08:30 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-26 08:30 +0000
1from typing import Optional
3from pydantic import BaseModel, Field
6class CustomerRequest(BaseModel):
7 """
8 Schema Pydantic para a porta de entrada do FastAPI.
9 Valida a tipagem básica do JSON submetido no endpoint /predict.
10 Se o cliente esquecer de mandar uma coluna obrigatória, o FastAPI
11 rejeitará a requisição automaticamente (HTTP 422 Unprocessable Entity).
12 """
14 gender: str = Field(..., description="Gênero do cliente (Female/Male)")
15 SeniorCitizen: int = Field(..., description="Se é idoso (1) ou não (0)")
16 Partner: str = Field(..., description="Se possui parceiro (Yes/No)")
17 Dependents: str = Field(..., description="Se possui dependentes (Yes/No)")
18 tenure: int = Field(..., description="Meses de permanência na empresa")
19 PhoneService: str = Field(..., description="Possui serviço de telefone? (Yes/No)")
20 MultipleLines: str = Field(..., description="Possui múltiplas linhas?")
21 InternetService: str = Field(..., description="Tipo de serviço de internet")
22 OnlineSecurity: str = Field(..., description="Possui segurança online?")
23 OnlineBackup: str = Field(..., description="Possui backup online?")
24 DeviceProtection: str = Field(..., description="Possui proteção de dispositivo?")
25 TechSupport: str = Field(..., description="Possui suporte técnico?")
26 StreamingTV: str = Field(..., description="Possui streaming de TV?")
27 StreamingMovies: str = Field(..., description="Possui streaming de filmes?")
28 Contract: str = Field(..., description="Tipo de contrato")
29 PaperlessBilling: str = Field(..., description="Possui fatura digital? (Yes/No)")
30 PaymentMethod: str = Field(..., description="Método de pagamento")
31 MonthlyCharges: float = Field(..., description="Cobrança mensal")
32 TotalCharges: Optional[str] = Field(
33 None,
34 description="Cobrança total acumulada (pode ser enviada como string ou nula)",
35 )