99 lines
5.0 KiB
Python
99 lines
5.0 KiB
Python
"""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())
|