"""业务工单路由:列表 / 详情 / 认领 / 提交审核 / 复核(仅风控专员)。""" 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 schemas.work_order import WorkOrderIdReq, WorkOrderReviewReq from service import work_order as work_order_service from utils.response import success router = APIRouter(prefix="/work-order", tags=["工单"]) @router.get("/list", summary="工单列表") async def list_work_orders( 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 work_order_service.list_work_orders( db, status, page=page, page_size=page_size ) ) @router.get("/{work_order_id}", summary="工单详情") async def get_work_order( work_order_id: int, user: SysUser = Depends(require_risk_officer), db: AsyncSession = Depends(get_db), ): wo = await work_order_service.get_work_order(db, work_order_id) return success(wo.model_dump(mode="json")) @router.post("/claim", summary="认领") async def claim( req: WorkOrderIdReq, user: SysUser = Depends(require_risk_officer), db: AsyncSession = Depends(get_db), ): result = await work_order_service.claim(db, user, req.work_order_id) return success(result) @router.post("/submit-review", summary="提交审核") async def submit_review( req: WorkOrderIdReq, user: SysUser = Depends(require_risk_officer), db: AsyncSession = Depends(get_db), ): result = await work_order_service.submit_review(db, user, req.work_order_id) return success(result) @router.post("/review", summary="复核") async def review( req: WorkOrderReviewReq, user: SysUser = Depends(require_risk_officer), db: AsyncSession = Depends(get_db), ): result = await work_order_service.review(db, user, req.work_order_id, req.approve, req.comment) return success(result)