guzhi/app/schemas/third_party_api.py
邹方成 107e90cbcb feat(third_party_api): 添加Dify工作流支持并优化API管理
重构UniversalAPIManager以支持Dify工作流API
添加DifyWorkflowRequest模型和控制器方法
优化API密钥管理和请求处理逻辑
修改JWT验证方式从HTTPBearer到Header
更新API配置以支持新的Dify端点
2025-10-10 13:04:10 +08:00

59 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import logging
from typing import List, Optional
from pydantic import BaseModel, Field
logger = logging.getLogger(__name__)
class BaseAPIRequest(BaseModel):
"""基础API请求模型"""
pass
class ChinazAPIRequest(BaseAPIRequest):
"""站长之家API请求模型"""
company_name: Optional[str] = Field(None, description="公司名称")
chinaz_ver: str = Field("1.0", description="API版本号")
class OCRRequest(BaseAPIRequest):
"""OCR识别请求模型"""
url: str = Field(..., description="图片URL地址(支持jpgpngjpeg1M以内)")
chinaz_ver: str = Field("1.0", description="API版本号")
class XiaohongshuNoteRequest(BaseAPIRequest):
"""小红书笔记请求模型"""
note_id: str = Field(..., description="笔记ID")
class JizhiliaoSearchRequest(BaseAPIRequest):
"""极致聊搜索请求模型"""
keyword: str = Field(..., description="搜索关键词")
page: int = Field(1, description="页码")
size: int = Field(10, description="每页数量")
class DifyWorkflowRequest(BaseAPIRequest):
"""Dify工作流请求模型"""
zl_img: str = Field(..., description="资料图片字段")
response_mode: str = Field("blocking", description="响应模式blocking或streaming")
user: str = Field(..., description="用户标识")
class APIResponse(BaseModel):
"""API响应模型"""
success: bool
message: str
data: Optional[dict] = None
class APIEndpointInfo(BaseModel):
"""API端点信息"""
path: str
method: str
description: str
required_params: List[str]
optional_params: Optional[List[str]] = None
class APIProviderInfo(BaseModel):
"""API提供商信息"""
name: str
base_url: str
endpoints: dict[str, APIEndpointInfo]
class APIListResponse(BaseModel):
"""API列表响应"""
providers: List[APIProviderInfo]