78 lines
2.6 KiB
Python
78 lines
2.6 KiB
Python
"""
|
|
Pydantic 数据模型定义
|
|
用于 FastAPI 请求和响应的数据验证
|
|
"""
|
|
from typing import Optional, Dict, Any, List
|
|
from pydantic import BaseModel, Field
|
|
from enum import Enum
|
|
|
|
|
|
class ActionType(str, Enum):
|
|
"""支持的操作类型枚举"""
|
|
LOGIN_IN = "login_in"
|
|
GET_COMPANY_INFORMATION = "get_company_information"
|
|
GET_STORE_INFORMATION = "get_store_information"
|
|
KEEP_ALIVE = "keep_alive"
|
|
CHECK_FILE = "check_file"
|
|
CREATE_BRAND = "create_brand"
|
|
DELETE_HISTORY = "delete_history"
|
|
DELETE_CUSTOMER = "delete_customer"
|
|
DELETE_CARS = "delete_cars"
|
|
SMS_SIGNATURE_STATUS = "sms_signature_status"
|
|
MODIFY_CUSTOMER_INFO = "modify_customer_info"
|
|
F6_PLUGIN = "F6_Plugin"
|
|
|
|
|
|
class WebhookRequest(BaseModel):
|
|
"""Webhook 请求体数据模型"""
|
|
# 通用字段
|
|
api_key: Optional[str] = Field(None, description="简道云应用ID")
|
|
entry_id: Optional[str] = Field(None, description="简道云表单ID")
|
|
data_id: Optional[str] = Field(None, description="简道云数据ID")
|
|
Action: Optional[str] = Field(None, description="操作类型")
|
|
|
|
# 登录相关字段
|
|
username: Optional[str] = Field(None, description="用户名")
|
|
password: Optional[str] = Field(None, description="密码")
|
|
company_name: Optional[str] = Field(None, description="公司名称")
|
|
|
|
# 文件相关字段
|
|
file_path: Optional[str] = Field(None, description="文件保存路径")
|
|
|
|
# 其他字段(允许任意额外字段)
|
|
class Config:
|
|
extra = "allow" # 允许额外字段,因为简道云可能传递其他字段
|
|
|
|
|
|
class WebhookHeader(BaseModel):
|
|
"""Webhook 请求头数据模型"""
|
|
Action: Optional[str] = Field(None, description="操作类型")
|
|
Check: Optional[str] = Field(None, description="检查标志(是/否)")
|
|
|
|
class Config:
|
|
extra = "allow" # 允许额外请求头
|
|
|
|
|
|
class WebhookResponse(BaseModel):
|
|
"""Webhook 响应数据模型"""
|
|
msg: str = Field(..., description="响应消息")
|
|
msg_details: Optional[str] = Field(None, description="详细信息")
|
|
check: Optional[str] = Field(None, description="检查结果")
|
|
status: Optional[str] = Field(None, description="状态")
|
|
|
|
class Config:
|
|
extra = "allow" # 允许额外字段
|
|
|
|
|
|
class HealthResponse(BaseModel):
|
|
"""健康检查响应模型"""
|
|
status: str = Field("ok", description="服务状态")
|
|
version: Optional[str] = Field(None, description="服务版本")
|
|
|
|
|
|
class ErrorResponse(BaseModel):
|
|
"""错误响应模型"""
|
|
detail: str = Field(..., description="错误详情")
|
|
error_code: Optional[str] = Field(None, description="错误代码")
|
|
|