"""审计台账路由(业务在 service/advisor/audit.py)。导出为 CSV 下载。""" from datetime import datetime from fastapi import APIRouter, Depends, Query from fastapi.responses import Response from sqlalchemy.ext.asyncio import AsyncSession from api.deps import require_advisor from config.deps import get_db from model.sys_user import SysUser from service.advisor import audit as audit_service from utils.response import success router = APIRouter() @router.get("/audit/ledger", summary="本人审计台账筛选") async def ledger( action: str | None = Query(None, max_length=64), keyword: str | None = Query(None, max_length=128), start: datetime | None = Query(None), end: datetime | None = Query(None), page: int = Query(1, ge=1), page_size: int = Query(20, ge=1, le=100), user: SysUser = Depends(require_advisor), db: AsyncSession = Depends(get_db), ): return success( await audit_service.list_ledger( db, user, action=action, keyword=keyword, start=start, end=end, page=page, page_size=page_size, ) ) @router.get("/audit/export", summary="导出本人审计台账(CSV)") async def export( action: str | None = Query(None, max_length=64), keyword: str | None = Query(None, max_length=128), start: datetime | None = Query(None), end: datetime | None = Query(None), user: SysUser = Depends(require_advisor), db: AsyncSession = Depends(get_db), ): csv_text = await audit_service.export_ledger( db, user, action=action, keyword=keyword, start=start, end=end ) return Response( content=csv_text, media_type="text/csv; charset=utf-8", headers={"Content-Disposition": 'attachment; filename="advisor_audit.csv"'}, )