"""风控处置路由:预警列表 + 放行/拦截/冻结(仅风控专员)。""" from fastapi import APIRouter, Depends, Query from sqlalchemy.ext.asyncio import AsyncSession from api.deps import require_risk_officer from config.deps import get_db from model.sys_user import SysUser from service.risk import handle as risk_handle from utils.response import success router = APIRouter(prefix="/risk", tags=["风控"]) @router.get("/alert/list", summary="预警列表") async def list_alerts( status: str | None = None, page: int = Query(1, ge=1), page_size: int = Query(10, ge=1, le=10), user: SysUser = Depends(require_risk_officer), db: AsyncSession = Depends(get_db), ): return success(await risk_handle.list_alerts(db, status, page=page, page_size=page_size)) @router.post("/alert/{alert_id}/release", summary="放行") async def release( alert_id: int, user: SysUser = Depends(require_risk_officer), db: AsyncSession = Depends(get_db), ): result = await risk_handle.release(db, user, alert_id) return success(result) @router.post("/alert/{alert_id}/block", summary="拦截") async def block( alert_id: int, user: SysUser = Depends(require_risk_officer), db: AsyncSession = Depends(get_db), ): result = await risk_handle.block(db, user, alert_id) return success(result) @router.post("/alert/{alert_id}/freeze", summary="冻结") async def freeze( alert_id: int, user: SysUser = Depends(require_risk_officer), db: AsyncSession = Depends(get_db), ): result = await risk_handle.freeze(db, user, alert_id) return success(result)