Coverage for core/models/settings.py: 100.00%
30 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-13 18:58 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-13 18:58 +0000
1"""
2系统设置数据模型
3"""
5from enum import Enum
6from typing import Optional
8from pydantic import BaseModel, Field
11class DataSourceType(str, Enum):
12 """数据源类型枚举"""
14 LONGPORT = "longport"
15 FUTU = "futu"
16 TIGER = "tiger"
19class LanguageType(str, Enum):
20 """语言类型枚举"""
22 ZH_CN = "zh-CN"
23 ZH_HK = "zh-HK"
24 EN = "en"
27class AssetModeType(str, Enum):
28 """资产模式类型枚举"""
30 TRADING = "trading" # 交易模式(使用真实资产)
31 BACKTEST = "backtest" # 回测模式(使用模拟资产)
34class DataSourceConfig(BaseModel):
35 """数据源配置"""
37 type: Optional[str] = Field(DataSourceType.LONGPORT, description="数据源类型")
38 longport_config: Optional["LongportConfig"] = Field(None, description="长桥配置")
39 # 未来可以添加其他券商配置
40 # futu_config: Optional["FutuConfig"] = Field(None, description="富途配置")
41 # tiger_config: Optional["TigerConfig"] = Field(None, description="老虎配置")
44class LongportConfig(BaseModel):
45 """长桥证券配置"""
47 app_key: str = Field(..., min_length=1, description="App Key")
48 app_secret: str = Field(..., min_length=1, description="App Secret")
49 access_token: str = Field(..., min_length=1, description="Access Token")
50 language: LanguageType = Field(LanguageType.ZH_CN, description="语言设置")
51 enable_overnight: bool = Field(True, description="是否启用夜盘数据")
54class UserSettings(BaseModel):
55 """用户设置"""
57 user_id: str = Field(..., description="用户ID")
58 data_source_config: Optional[DataSourceConfig] = Field(
59 None, description="数据源配置"
60 )
61 longport_config: Optional[LongportConfig] = Field(None, description="长桥证券配置")
62 asset_mode: AssetModeType = Field(
63 AssetModeType.TRADING,
64 description="资产模式:trading=交易模式,backtest=回测模式",
65 )
66 created_at: Optional[str] = Field(None, description="创建时间")
67 updated_at: Optional[str] = Field(None, description="更新时间")