"""通用响应模型 遵循瑞小美 API 响应格式规范 """ from typing import Generic, TypeVar, Optional, List from pydantic import BaseModel T = TypeVar("T") class ResponseModel(BaseModel, Generic[T]): """统一响应格式""" code: int = 0 message: str = "success" data: Optional[T] = None class PaginatedData(BaseModel, Generic[T]): """分页数据""" items: List[T] total: int page: int page_size: int total_pages: int class PaginatedResponse(BaseModel, Generic[T]): """分页响应""" code: int = 0 message: str = "success" data: Optional[PaginatedData[T]] = None class ErrorResponse(BaseModel): """错误响应""" code: int message: str data: None = None # 错误码定义 class ErrorCode: SUCCESS = 0 PARAM_ERROR = 10001 NOT_FOUND = 10002 ALREADY_EXISTS = 10003 NOT_ALLOWED = 10004 AUTH_FAILED = 20001 PERMISSION_DENIED = 20002 TOKEN_EXPIRED = 20003 INTERNAL_ERROR = 30001 SERVICE_UNAVAILABLE = 30002 AI_SERVICE_ERROR = 40001 AI_SERVICE_TIMEOUT = 40002