import json import os from sqlalchemy.ext.asyncio import AsyncSession from app.models.checklist import ChecklistItem from app.models.falecido import Falecido TEMPLATES_PATH = os.path.join(os.path.dirname(__file__), "..", "data", "checklist_templates.json") def load_templates(): with open(TEMPLATES_PATH, "r", encoding="utf-8") as f: return json.load(f) async def gerar_checklist(db: AsyncSession, familia_id: int, falecido: Falecido) -> list[ChecklistItem]: templates = load_templates() items = [] for t in templates: cond = t.get("condicao") if cond: val = getattr(falecido, cond, 0) if not val: continue item = ChecklistItem( familia_id=familia_id, falecido_id=falecido.id, titulo=t["titulo"], descricao=t.get("descricao"), fase=t["fase"], categoria=t["categoria"], status="pendente", prazo_dias=t.get("prazo_dias"), ordem=t.get("ordem", 0), ) db.add(item) items.append(item) await db.commit() return items def get_proximo_passo(items: list[dict]) -> dict | None: pendentes = [i for i in items if i.get("status") == "pendente"] if not pendentes: return None pendentes.sort(key=lambda x: x.get("ordem", 999)) return pendentes[0]