|
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
"""
|
|
|
|
|
|
===================================
|
|
|
|
|
|
通用响应模型
|
|
|
|
|
|
===================================
|
|
|
|
|
|
|
|
|
|
|
|
职责:
|
|
|
|
|
|
1. 定义通用的响应模型(HealthResponse, ErrorResponse 等)
|
|
|
|
|
|
2. 提供统一的响应格式
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
from typing import Optional, Any
|
|
|
|
|
|
|
|
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RootResponse(BaseModel):
|
|
|
|
|
|
"""API 根路由响应"""
|
|
|
|
|
|
|
|
|
|
|
|
message: str = Field(..., description="API 运行状态消息", example="Daily Stock Analysis API is running")
|
|
|
|
|
|
version: Optional[str] = Field(None, description="API 版本", example="1.0.0")
|
|
|
|
|
|
|
|
|
|
|
|
class Config:
|
|
|
|
|
|
json_schema_extra = {
|
|
|
|
|
|
"example": {
|
|
|
|
|
|
"message": "Daily Stock Analysis API is running",
|
|
|
|
|
|
"version": "1.0.0"
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class HealthResponse(BaseModel):
|
|
|
|
|
|
"""健康检查响应"""
|
|
|
|
|
|
|
|
|
|
|
|
status: str = Field(..., description="服务状态", example="ok")
|
|
|
|
|
|
timestamp: Optional[str] = Field(None, description="时间戳")
|
|
|
|
|
|
|
|
|
|
|
|
class Config:
|
|
|
|
|
|
json_schema_extra = {
|
|
|
|
|
|
"example": {
|
|
|
|
|
|
"status": "ok",
|
|
|
|
|
|
"timestamp": "2024-01-01T12:00:00"
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ErrorResponse(BaseModel):
|
|
|
|
|
|
"""错误响应"""
|
|
|
|
|
|
|
|
|
|
|
|
error: str = Field(..., description="错误类型", example="validation_error")
|
|
|
|
|
|
message: str = Field(..., description="错误详情", example="请求参数错误")
|
|
|
|
|
|
detail: Optional[Any] = Field(None, description="附加错误信息")
|
|
|
|
|
|
|
|
|
|
|
|
class Config:
|
|
|
|
|
|
json_schema_extra = {
|
|
|
|
|
|
"example": {
|
|
|
|
|
|
"error": "not_found",
|
|
|
|
|
|
"message": "资源不存在",
|
|
|
|
|
|
"detail": None
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SuccessResponse(BaseModel):
|
|
|
|
|
|
"""通用成功响应"""
|
|
|
|
|
|
|
|
|
|
|
|
success: bool = Field(True, description="是否成功")
|
|
|
|
|
|
message: Optional[str] = Field(None, description="成功消息")
|
|
|
|
|
|
data: Optional[Any] = Field(None, description="响应数据")
|
|
|
|
|
|
|
|
|
|
|
|
class Config:
|
|
|
|
|
|
json_schema_extra = {
|
|
|
|
|
|
"example": {
|
|
|
|
|
|
"success": True,
|
|
|
|
|
|
"message": "操作成功",
|
|
|
|
|
|
"data": None
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|