import json import time from utils.langgraph_agent import RULES, run_agent async def evaluate_servico(servico: dict, guia: dict, file_content: str) -> dict: codigo_servico_raw = str(servico.get("codigoServico", "")) code = "".join(c for c in codigo_servico_raw if c.isdigit()) if code not in RULES: return { "codigoServico": codigo_servico_raw, "resultado": "SKIPPED", "motivo": f"Codigo '{code}' nao encontrado nas regras", "agentOutput": "", "tempoAgentSegundos": 0, } query_data = { "atendimento": guia.get("atendimento", {}), "guia": guia.get("guia", {}), "servico": servico, "historico": guia.get("historico", {}), } query = json.dumps(query_data, indent=2, ensure_ascii=False) t0 = time.time() agent_output = "" input_tokens = 0 output_tokens = 0 resultado = "Reprovado" try: result = await run_agent(query, code, file_content) agent_output = result["response"] input_tokens = result["input_tokens"] output_tokens = result["output_tokens"] except Exception as e: agent_output = f"ERROR: {str(e)}" try: clean = agent_output.strip() if clean.startswith("```"): clean = clean.split("```", 2)[1] if clean.startswith("json"): clean = clean[4:] parsed = json.loads(clean.strip()) resultado = parsed.get("status", "Reprovado") except Exception: pass return { "codigoServico": codigo_servico_raw, "resultado": resultado, "agentOutput": agent_output, "input_tokens": input_tokens, "output_tokens": output_tokens, "tempoAgentSegundos": round(time.time() - t0, 2), }