CARONTE v1.0 - Plataforma de Gestão Social

This commit is contained in:
2026-02-08 23:10:32 -03:00
commit c98c806865
60 changed files with 9450 additions and 0 deletions

98
backend/seed_data.py Normal file
View File

@@ -0,0 +1,98 @@
"""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())