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

1from typing import Optional 

2 

3from pydantic import BaseModel, Field 

4 

5 

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 """ 

13 

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 )