Spaces:
Running
Running
| import os, sys | |
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) | |
| from fastapi import APIRouter, Depends, HTTPException | |
| from loguru import logger | |
| from api.dependencies import get_db | |
| from ai.debate_engine import DebateEngine | |
| router = APIRouter() | |
| engine = DebateEngine() | |
| def run_debate(entity_id: str, driver=Depends(get_db)): | |
| logger.info(f"[Debate] Requested: {entity_id}") | |
| with driver.session() as s: | |
| row = s.run( | |
| "MATCH (n {id:$id}) RETURN n.name AS name, " | |
| "n.risk_score AS score", | |
| id=entity_id | |
| ).single() | |
| if not row: | |
| raise HTTPException( | |
| status_code=404, detail=f"Entity {entity_id} not found" | |
| ) | |
| name = row.get("name") or entity_id | |
| findings = [] | |
| try: | |
| # BUG-03 FIX: RiskScorer() takes no constructor args; use risk route instead | |
| from api.routes.risk import get_risk | |
| risk_result = get_risk(entity_id, driver) | |
| findings = [ | |
| {"name": f.name, "score": f.score, "description": f.description} | |
| for f in risk_result.factors | |
| ] | |
| except Exception as e: | |
| logger.warning(f"[Debate] Could not load findings: {e}") | |
| return engine.run(entity_id, name, findings, driver=driver) | |