"""Seed script - popula o banco com dados mock.""" import asyncio from datetime import date from app.core.database import engine, async_session, Base from app.core.security import hash_password from app.models import * from app.services.checklist_engine import gerar_checklist from app.services.beneficio_scanner import escanear_beneficios async def seed(): async with engine.begin() as conn: await conn.run_sync(Base.metadata.drop_all) await conn.run_sync(Base.metadata.create_all) async with async_session() as db: # Usuário demo user = Usuario(nome="Maria da Silva", email="demo@caronte.com.br", senha_hash=hash_password("123456"), telefone="(11) 99999-0001") db.add(user) await db.commit() await db.refresh(user) # Famílias familias_data = [ {"nome": "Família Silva", "membros": [ {"nome": "Maria da Silva", "parentesco": "Esposa", "cpf": "123.456.789-00", "telefone": "(11) 99999-0001"}, {"nome": "João da Silva Jr.", "parentesco": "Filho", "cpf": "123.456.789-01"}, ]}, {"nome": "Família Oliveira", "membros": [ {"nome": "Ana Oliveira", "parentesco": "Filha", "cpf": "234.567.890-00", "telefone": "(21) 98888-0002"}, {"nome": "Carlos Oliveira", "parentesco": "Filho", "cpf": "234.567.890-01"}, ]}, {"nome": "Família Santos", "membros": [ {"nome": "Lucia Santos", "parentesco": "Esposa", "cpf": "345.678.901-00", "telefone": "(31) 97777-0003"}, ]}, ] falecidos_data = [ {"familia_idx": 0, "nome": "José da Silva", "cpf": "111.222.333-44", "data_nascimento": date(1955, 3, 15), "data_obito": date(2026, 1, 10), "causa_obito": "Infarto agudo do miocárdio", "tipo_vinculo": "empregado", "empregador": "Construtora Progresso Ltda", "tinha_carteira_assinada": 1, "tinha_fgts": 1, "era_aposentado": 0, "tinha_seguro_vida": 1, "tinha_imoveis": 1, "tinha_veiculos": 1, "salario_estimado": 4500.0}, {"familia_idx": 0, "nome": "Antônia da Silva", "cpf": "111.222.333-55", "data_nascimento": date(1930, 8, 20), "data_obito": date(2025, 11, 5), "causa_obito": "Causas naturais", "tipo_vinculo": "aposentado", "era_aposentado": 1, "salario_estimado": 2800.0}, {"familia_idx": 1, "nome": "Roberto Oliveira", "cpf": "222.333.444-55", "data_nascimento": date(1960, 12, 1), "data_obito": date(2026, 1, 25), "causa_obito": "Câncer de pulmão", "tipo_vinculo": "aposentado", "era_aposentado": 1, "tinha_seguro_vida": 1, "tinha_imoveis": 1, "salario_estimado": 5200.0}, {"familia_idx": 1, "nome": "Pedro Oliveira", "cpf": "222.333.444-66", "data_nascimento": date(1985, 5, 10), "data_obito": date(2026, 2, 1), "causa_obito": "Acidente de trânsito", "tipo_vinculo": "empregado", "empregador": "Tech Solutions SA", "tinha_carteira_assinada": 1, "tinha_fgts": 1, "tinha_seguro_vida": 0, "tinha_veiculos": 1, "salario_estimado": 8500.0}, {"familia_idx": 2, "nome": "Francisco Santos", "cpf": "333.444.555-66", "data_nascimento": date(1970, 7, 22), "data_obito": date(2026, 1, 15), "causa_obito": "AVC", "tipo_vinculo": "autonomo", "tinha_carteira_assinada": 0, "tinha_fgts": 0, "tinha_imoveis": 1, "salario_estimado": 3500.0}, ] familias = [] for fd in familias_data: f = Familia(nome=fd["nome"], usuario_id=user.id) db.add(f) await db.commit() await db.refresh(f) familias.append(f) for m in fd["membros"]: db.add(MembroFamilia(familia_id=f.id, **m)) await db.commit() for fd in falecidos_data: fam = familias[fd["familia_idx"]] data = {k: v for k, v in fd.items() if k != "familia_idx"} fal = Falecido(familia_id=fam.id, **data) db.add(fal) await db.commit() await db.refresh(fal) await gerar_checklist(db, fam.id, fal) await escanear_beneficios(db, fam.id, fal) # Documentos mock doc_types = [ (familias[0].id, 1, "procuracao", "Procuração - José da Silva"), (familias[0].id, 1, "requerimento_fgts", "Requerimento FGTS - José da Silva"), (familias[1].id, 3, "peticao_pensao", "Petição Pensão por Morte - Roberto Oliveira"), ] for fam_id, fal_id, tipo, nome in doc_types: db.add(Documento(familia_id=fam_id, falecido_id=fal_id, tipo=tipo, nome=nome, status="gerado")) await db.commit() print("✅ Seed concluído! Dados mock inseridos.") print(" - 1 usuário: demo@caronte.com.br / 123456") print(" - 3 famílias, 5 falecidos") print(" - Checklists e benefícios gerados automaticamente") if __name__ == "__main__": asyncio.run(seed())