from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.core.database import get_db from app.core.security import ApiPrincipal, require_api_key from app.modules.risk.service import RiskService router = APIRouter(dependencies=[Depends(require_api_key)]) @router.get("/summary") def risk_summary(db: Session = Depends(get_db)) -> dict: return RiskService(db).summary() @router.get("/overdue-tasks") def overdue_tasks(db: Session = Depends(get_db)) -> dict: return {"items": RiskService(db).overdue_tasks()} @router.get("/delayed-projects") def delayed_projects(db: Session = Depends(get_db)) -> dict: return {"items": RiskService(db).delayed_projects()} @router.get("/over-budget-projects") def over_budget_projects(db: Session = Depends(get_db)) -> dict: return {"items": RiskService(db).over_budget_projects()} @router.get("/funds") def fund_risks(db: Session = Depends(get_db)) -> dict: return {"items": RiskService(db).fund_risks()} @router.get("/suppliers") def supplier_risks(db: Session = Depends(get_db)) -> dict: return {"items": RiskService(db).supplier_risks()} @router.get("/events") def risk_events( limit: int = 100, status: str | None = None, db: Session = Depends(get_db), ) -> dict: return {"items": RiskService(db).list_events(limit=limit, status_filter=status)} @router.post("/events/generate") def generate_risk_events( db: Session = Depends(get_db), principal: ApiPrincipal = Depends(require_api_key), ) -> dict: return RiskService(db).generate_events(actor=principal.actor)