""" 统一响应格式 """ from typing import Optional, Any, Dict, Generic, TypeVar from pydantic import BaseModel, Field T = TypeVar("T") class APIResponse(BaseModel, Generic[T]): """统一 API 响应格式""" success: bool = Field(default=True, description="请求是否成功") code: int = Field(default=200, description="HTTP 状态码") message: str = Field(default="操作成功", description="响应消息") data: Optional[T] = Field(default=None, description="响应数据") error: Optional[Dict[str, Any]] = Field(default=None, description="错误信息") class Config: json_schema_extra = { "example": { "success": True, "code": 200, "message": "操作成功", "data": {}, } } def success_response( data: Any = None, message: str = "操作成功", code: int = 200, ) -> APIResponse: """成功响应""" return APIResponse( success=True, code=code, message=message, data=data, ) def error_response( message: str = "操作失败", code: int = 500, error_code: Optional[str] = None, error_detail: Optional[Any] = None, ) -> APIResponse: """错误响应""" error = {} if error_code: error["error_code"] = error_code if error_detail: error["error_detail"] = error_detail return APIResponse( success=False, code=code, message=message, error=error if error else None, )