|
|
226a27361f
|
feat(pydantic): 集成 Pydantic 模型到 Flask API 层
1. models.py:
- 添加 dataframe_to_ohlcv_response() 转换函数
- 支持 DataFrame → OHLCVResponse 自动转换
- 自动处理 nav、premium、attrs 等业务数据
2. flask_server.py:
- 使用 Pydantic 模型构建响应(替代手动 Dict)
- 错误响应使用 ErrorResponse 模型
- 代码减少 20+ 行,类型安全提升
3. flask_api_source.py:
- 使用 validate_ohlcv_response() 验证 API 响应
- 类型安全访问 nav、premium、info 等字段
- ETF 数据解析更可靠
测试通过:
✅ DataFrame → Pydantic 转换正常
✅ ETF 净值和溢价率正确处理
✅ 线上 API 响应验证成功
✅ FlaskAPIDataSource 集成正常
|
2026-05-24 01:13:33 +08:00 |
|
|
|
56f0cd60e7
|
fix(flask_api): 保留code列确保本地与线上数据结构一致
FlaskAPIDataSource.fetch() 原硬编码只选择 OHLCV 列,丢失 code 列
修改为动态判断:若 API 返回包含 code 列则保留
确保本地 UniversalDataFetcher 与线上 FlaskAPIDataSource 返回数据结构一致
|
2026-05-23 18:41:20 +08:00 |
|
|
|
7f2af6b470
|
refactor(flask_api): fetch添加adj参数,fetch_with_adj简化
FlaskAPIDataSource.fetch() 新增 adj 参数,fetch_with_adj() 简化
- FlaskAPIDataSource.fetch(adj='raw'): 请求参数包含 adj
- fetch_with_adj(): 简化为 return self.fetch(adj=adj)(减少 ~120行)
- flask_server.py: 缓存逻辑已支持 adj 参数,无需修改
|
2026-05-23 18:32:20 +08:00 |
|
|
|
80c7fe0ba8
|
refactor(log): 优化回测日志输出格式
- strategy.py: 在数据获取前打印回测配置区间说明
- flask_api_source.py: 使用API返回的实际数据范围(date_range)
- 原问题: 日志显示请求参数的start_date,而非实际数据范围
- 修改后: 各标的显示实际数据时间周期(如创业板2010年开始)
|
2026-05-15 23:34:52 +08:00 |
|
|
|
d62763b0bd
|
feat(flask): OHLCV 端点自动附加 ETF 净值和溢价率
flask_server.py:
- 当 asset_type 为 china_etf 时,自动调用 fetch_etf_with_nav
- 响应中添加 nav、premium_series、latest_premium、premium_stats
flask_api_source.py:
- 解析 ETF 数据中的净值和溢价率信息
- 将 nav_df、premium_series、premium_stats 存入 DataFrame.attrs
|
2026-05-14 00:57:37 +08:00 |
|
|
|
d4047d4cf4
|
fix(flask_api_source): 修复 fetch_etf_nav zstd 解压与溢价率解析
- 处理 zstd 响应的 JSON 解析问题
- 正确解析 Flask server 返回的净值数据结构
- 添加 premium_series、latest_premium、premium_stats 到 DataFrame attrs
|
2026-05-14 00:51:23 +08:00 |
|
|
|
4fe21a7cd4
|
fix(datasource): 修复 zstd 响应 JSON 解析问题
- flask_api_source.py: 添加 requests.exceptions.JSONDecodeError 捕获
- flask_server.py: 启用 flask-compress gzip 压缩
- requirements.txt: 添加 flask-compress>=1.14
- strategy.py: 修复 flask_api 配置读取方式
问题原因:Traefik Ingress 使用 zstd 压缩响应,
requests.response.json() 解析失败,但 json.loads(response.text) 成功
|
2026-05-14 00:27:30 +08:00 |
|
|
|
0a9795febb
|
feat(strategy): rotation策略支持Flask API数据获取
- 新增 flask_api_source.py: Flask API远程数据源模块
- 修改 strategy.py: get_data() 支持通过Flask API获取数据
使用方式:
strategy.get_data(use_flask_api=True) # 通过部署服务获取
strategy.get_data(use_flask_api=False) # 本地HybridDataSource
配置项:
flask_api_url: 可在config.yaml中指定API地址
|
2026-05-13 23:49:26 +08:00 |
|