CARONTE v1.0 - Plataforma de Gestão Social
This commit is contained in:
64
backend/app/services/beneficio_scanner.py
Normal file
64
backend/app/services/beneficio_scanner.py
Normal file
@@ -0,0 +1,64 @@
|
||||
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
|
||||
Reference in New Issue
Block a user