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

1""" 

2系统设置数据模型 

3""" 

4 

5from enum import Enum 

6from typing import Optional 

7 

8from pydantic import BaseModel, Field 

9 

10 

11class DataSourceType(str, Enum): 

12 """数据源类型枚举""" 

13 

14 LONGPORT = "longport" 

15 FUTU = "futu" 

16 TIGER = "tiger" 

17 

18 

19class LanguageType(str, Enum): 

20 """语言类型枚举""" 

21 

22 ZH_CN = "zh-CN" 

23 ZH_HK = "zh-HK" 

24 EN = "en" 

25 

26 

27class AssetModeType(str, Enum): 

28 """资产模式类型枚举""" 

29 

30 TRADING = "trading" # 交易模式(使用真实资产) 

31 BACKTEST = "backtest" # 回测模式(使用模拟资产) 

32 

33 

34class DataSourceConfig(BaseModel): 

35 """数据源配置""" 

36 

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="老虎配置") 

42 

43 

44class LongportConfig(BaseModel): 

45 """长桥证券配置""" 

46 

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="是否启用夜盘数据") 

52 

53 

54class UserSettings(BaseModel): 

55 """用户设置""" 

56 

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="更新时间")