feat:添加colg对接功能

This commit is contained in:
2026-11-03 21:44:30 +08:00
parent 3937185d0a
commit 4709ea4328
13 changed files with 1742 additions and 79 deletions
+24 -5
View File
@@ -1,14 +1,30 @@
from pydantic import BaseModel, Field
GOLD_REGION_CODES = {
'跨1': 'k1', '跨2': 'k2', '跨3A': 'k3a', '跨3B': 'k3b',
'跨4': 'k4', '跨5': 'k5', '跨6': 'k6', '跨7': 'k7', '跨8': 'k8',
}
class RealTimeGold(BaseModel):
updataTime: str = Field(..., description='更新时间')
updataTime: int = Field(..., ge=0, description='更新时间,Unix秒级时间戳')
"""更新时间"""
region: str = Field(..., description='跨区')
"""跨区"""
goldPrice: float|str = Field(..., description='金价')
code: str = Field(..., description='跨区code:k1、k2、k3a、k3b、k4、k5、k6、k7、k8')
goldPrice: float = Field(..., gt=0, allow_inf_nan=False, description='金币比例,1元对应的万金币数量')
"""金价"""
class ThirdPartGoldCache(RealTimeGold):
"""内部缓存数据,不作为接口返回模型。"""
goldPrice: float = Field(..., gt=0, allow_inf_nan=False, description='首页有效报价换算为万金币/元后的算术平均值')
sampleCount: int = Field(..., ge=1, le=200, description='参与均值计算的报价条数')
stale: bool = Field(..., description='数据是否已超过30分钟刷新周期')
class DayGold(BaseModel):
date: str = Field(..., description='日期')
"""日期"""
@@ -25,11 +41,14 @@ class HistoryGold(BaseModel):
"""echarts数据"""
class OfficialGold(BaseModel):
updataTime: str = Field(..., description='更新时间')
updataTime: str = Field(..., pattern=r'^\d+$', description='更新时间,Unix秒级时间戳字符串')
"""更新时间"""
region: str = Field(..., description='跨区')
"""跨区"""
goldDealRank: list[float|str] = Field(..., description='金币寄售最低成交价排名前5的价格')
code: str = Field(..., description='跨区code:k1、k2、k3a、k3b、k4、k5、k6、k7')
goldDealRank: list[float] = Field(..., max_length=5, description='金币寄售最低成交价,最多5项,每100万金币对应的点券数量')
"""金币寄售最低成交价排名前5的价格"""
goldTopDealRank: list[float|str] = Field(..., description='金币寄售最高成交价排名前5的价格')
goldTopDealRank: list[float] = Field(..., max_length=5, description='金币寄售最高成交价,最多5项,每100万金币对应的点券数量')
"""金币寄售最高成交价排名前5的价格"""
max: float | None = Field(..., description='100点券可兑换的最大万金币数量,无有效报价时为null')
min: float | None = Field(..., description='100点券可兑换的最小万金币数量,无有效报价时为null')