from typing import Generic, Optional, TypeVar from pydantic import BaseModel, Field T = TypeVar("T") class ApiResponse(BaseModel, Generic[T]): """ 统一响应包装,便于前端通过 code 判断成功/失败。 code: 1 表示成功,非 1 由 HTTP 状态码填充(错误)。 """ code: int = Field(default=1) msg: str = Field(default="ok") data: Optional[T] = None def success_response(data: Optional[T] = None, msg: str = "ok") -> ApiResponse[T]: return ApiResponse[T](code=1, msg=msg, data=data)