Files
etf/datasource
aszerW feb7c78e68 refactor: 统一ETF获取接口为单个DataFrame返回
重构说明:
- TushareSource.fetch_etf(): 新增 adj 参数,统一接口
  - 返回单个 DataFrame
  - df.attrs['nav']: 净值 DataFrame
  - df.attrs['premium']: 溢价率 Series
- 移除冗余方法:
  - fetch_etf_with_nav() → 合并到 fetch_etf()
  - fetch_etf_adj() → 重命名为 _fetch_etf_hfq()(内部方法)
- UniversalDataFetcher: 适配新接口
  - fetch_etf_with_nav(): 从 df.attrs 提取元数据(兼容旧接口)
  - fetch_etf_adj(): 调用 fetch_etf(adj='hfq')
- Flask: 更新注释说明

架构优势:
- 单一接口:一个方法搞定所有 ETF 数据获取
- 数据一致:所有数据在一个 DataFrame 对象中
- 缓存友好:只需缓存一个 DataFrame
- 扩展性强:新增数据直接添加到 attrs
2026-05-23 22:36:23 +08:00
..