Fundamental_Analysis/backend/app/schemas/config.py

62 lines
2.1 KiB
Python

"""
配置相关的Pydantic模式
"""
from pydantic import BaseModel, Field
from typing import Dict, Any, Optional, List
class DatabaseConfig(BaseModel):
"""数据库配置模式"""
url: str = Field(..., description="数据库连接URL")
echo: bool = Field(False, description="是否输出SQL日志")
class GeminiConfig(BaseModel):
"""Gemini API配置模式"""
api_key: str = Field(..., description="Gemini API密钥")
model: str = Field("gemini-pro", description="使用的模型")
temperature: float = Field(0.7, description="生成温度")
max_tokens: int = Field(2048, description="最大token数")
class DataSourceConfig(BaseModel):
"""数据源配置模式"""
name: str = Field(..., description="数据源名称")
api_key: Optional[str] = Field(None, description="API密钥")
base_url: Optional[str] = Field(None, description="基础URL")
timeout: int = Field(30, description="超时时间(秒)")
class ConfigResponse(BaseModel):
"""配置响应模式"""
database: Optional[DatabaseConfig] = None
gemini_api: Optional[GeminiConfig] = None
data_sources: Dict[str, DataSourceConfig] = {}
class ConfigUpdateRequest(BaseModel):
"""配置更新请求模式"""
database: Optional[DatabaseConfig] = None
gemini_api: Optional[GeminiConfig] = None
data_sources: Optional[Dict[str, DataSourceConfig]] = None
class ConfigTestRequest(BaseModel):
"""配置测试请求模式"""
config_type: str = Field(..., description="配置类型")
config_data: Dict[str, Any] = Field(..., description="配置数据")
class ConfigTestResponse(BaseModel):
"""配置测试响应模式"""
success: bool = Field(..., description="测试是否成功")
message: str = Field(..., description="测试结果消息")
details: Optional[Dict[str, Any]] = Field(None, description="详细信息")
class ConfigValidationResponse(BaseModel):
"""配置验证响应模式"""
valid: bool = Field(..., description="配置是否有效")
errors: List[str] = Field([], description="验证错误列表")
warnings: List[str] = Field([], description="验证警告列表")