from sqlalchemy.ext.asyncio import AsyncSession from app.models.beneficio import Beneficio from app.models.falecido import Falecido BENEFICIOS_MAP = [ { "condicao": "tinha_fgts", "tipo": "fgts", "nome": "Saque FGTS", "descricao": "Saldo do FGTS disponível para saque pelos dependentes habilitados.", "valor_mult": 3.5, }, { "condicao": "tinha_carteira_assinada", "tipo": "pis", "nome": "Saque PIS/PASEP", "descricao": "Saldo de cotas do PIS/PASEP para saque pelos herdeiros.", "valor_mult": 0.8, }, { "condicao": None, "tipo": "pensao_morte", "nome": "Pensão por Morte (INSS)", "descricao": "Benefício mensal pago pelo INSS aos dependentes do segurado falecido.", "valor_mult": 12, }, { "condicao": "tinha_seguro_vida", "tipo": "seguro_vida", "nome": "Seguro de Vida", "descricao": "Indenização do seguro de vida contratado pelo falecido.", "valor_mult": 24, }, { "condicao": "tinha_carteira_assinada", "tipo": "rescisao", "nome": "Verbas Rescisórias", "descricao": "Saldo de salário, férias proporcionais, 13º proporcional.", "valor_mult": 2, }, ] async def escanear_beneficios(db: AsyncSession, familia_id: int, falecido: Falecido) -> list[Beneficio]: salario = falecido.salario_estimado or 2500.0 beneficios = [] for b in BENEFICIOS_MAP: cond = b.get("condicao") if cond: val = getattr(falecido, cond, 0) if not val: continue ben = Beneficio( familia_id=familia_id, falecido_id=falecido.id, tipo=b["tipo"], nome=b["nome"], descricao=b["descricao"], status="identificado", valor_estimado=round(salario * b["valor_mult"], 2), ) db.add(ben) beneficios.append(ben) await db.commit() return beneficios