Files
Mutual_Fund/api/routers/risk.py
2026-09-13 22:21:49 +08:00

53 lines
1.6 KiB
Python

"""风控处置路由:预警列表 + 放行/拦截/冻结(仅风控专员)。"""
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)