from pydantic import BaseModel from typing import Optional from datetime import date, datetime # Auth class UserCreate(BaseModel): nome: str email: str senha: str telefone: Optional[str] = None class UserLogin(BaseModel): email: str senha: str class UserOut(BaseModel): id: int nome: str email: str telefone: Optional[str] = None class Config: from_attributes = True class Token(BaseModel): access_token: str token_type: str = "bearer" # Familia class FamiliaCreate(BaseModel): nome: str class FamiliaOut(BaseModel): id: int nome: str usuario_id: int created_at: Optional[datetime] = None class Config: from_attributes = True class MembroCreate(BaseModel): nome: str parentesco: str cpf: Optional[str] = None telefone: Optional[str] = None email: Optional[str] = None class MembroOut(BaseModel): id: int familia_id: int nome: str parentesco: str cpf: Optional[str] = None telefone: Optional[str] = None email: Optional[str] = None class Config: from_attributes = True # Falecido class FalecidoCreate(BaseModel): nome: str cpf: Optional[str] = None data_nascimento: Optional[date] = None data_obito: date causa_obito: Optional[str] = None tipo_vinculo: str empregador: Optional[str] = None tinha_carteira_assinada: int = 0 tinha_fgts: int = 0 era_aposentado: int = 0 tinha_seguro_vida: int = 0 tinha_imoveis: int = 0 tinha_veiculos: int = 0 salario_estimado: Optional[float] = None class FalecidoOut(BaseModel): id: int familia_id: int nome: str cpf: Optional[str] = None data_nascimento: Optional[date] = None data_obito: date causa_obito: Optional[str] = None tipo_vinculo: str empregador: Optional[str] = None tinha_carteira_assinada: int = 0 tinha_fgts: int = 0 era_aposentado: int = 0 tinha_seguro_vida: int = 0 tinha_imoveis: int = 0 tinha_veiculos: int = 0 salario_estimado: Optional[float] = None class Config: from_attributes = True # Checklist class ChecklistItemOut(BaseModel): id: int familia_id: int falecido_id: int titulo: str descricao: Optional[str] = None fase: str categoria: str status: str prazo_dias: Optional[int] = None ordem: int = 0 dependencia_id: Optional[int] = None class Config: from_attributes = True class ChecklistUpdateStatus(BaseModel): status: str # Beneficio class BeneficioOut(BaseModel): id: int familia_id: int falecido_id: int tipo: str nome: str descricao: Optional[str] = None status: str valor_estimado: Optional[float] = None valor_sacado: Optional[float] = None class Config: from_attributes = True # Documento class DocumentoOut(BaseModel): id: int familia_id: int falecido_id: Optional[int] = None tipo: str nome: str arquivo_path: Optional[str] = None status: str created_at: Optional[datetime] = None class Config: from_attributes = True class DocumentoGerarRequest(BaseModel): tipo: str falecido_id: int # Dashboard class DashboardOut(BaseModel): familias_ativas: int itens_pendentes: int beneficios_encontrados: int documentos_gerados: int familias: list = []