# -*- coding: utf-8 -*- """响应工具:统一 JSON 包体契约。 沿用历史 APIResponse 的包体结构(逐字段一致): FastAPI 侧改为直接返回 JSONResponse,但**包体结构完全一致**: success: {"status": sc, "success": true, "message": msg, ["data": ...]} error: {"status": sc, "success": false, "message": msg, ["error_code": ...]} 这样前端无需任何改动即可无缝对接。 """ from typing import Any from fastapi.responses import JSONResponse def success(data: Any = None, message: str = 'success', status_code: int = 200) -> JSONResponse: """成功响应。""" body = { 'status': status_code, 'success': True, 'message': message, } if data is not None: body['data'] = data return JSONResponse(content=body, status_code=status_code) def error(message: str, status_code: int = 400, error_code: str | None = None) -> JSONResponse: """错误响应。""" body = { 'status': status_code, 'success': False, 'message': message, } if error_code: body['error_code'] = error_code return JSONResponse(content=body, status_code=status_code)