refactor: 将ETF净值和溢价率逻辑下移到TushareSource层
重构说明: - TushareSource: 新增 fetch_etf_with_nav() 和 _calculate_premium_series() - UniversalDataFetcher: 简化 fetch_etf_with_nav() 为透传调用 - Flask: 更新注释说明数据层已处理 架构优势: - 职责分离:TushareSource 封装完整数据获取逻辑 - 可复用性:任何调用 TushareSource 的地方都有净值 - 维护性:业务逻辑集中在数据源层 - 符合单一职责原则
This commit is contained in:
@@ -713,19 +713,19 @@ def get_ohlcv():
|
||||
result['asset_type'] = final_type.value # 使用最终类型
|
||||
result['adj'] = adj # 返回使用的 adj 参数
|
||||
|
||||
# 如果是中国 ETF,始终附加净值和溢价率数据(与 adj 无关)
|
||||
# 如果是中国 ETF,附加净值和溢价率数据(数据层已处理)
|
||||
if final_type == AssetType.CHINA_ETF:
|
||||
try:
|
||||
f = get_fetcher()
|
||||
with f:
|
||||
# 注意:始终使用原始价格计算溢价率(净值无复权概念)
|
||||
# 调用 TushareSource 的完整方法
|
||||
price_df, nav_df, premium_series = f.fetch_etf_with_nav(code, start, end)
|
||||
|
||||
# 添加净值数据
|
||||
if nav_df is not None and len(nav_df) > 0:
|
||||
result['nav'] = dataframe_to_json(nav_df)
|
||||
|
||||
# 添加溢价率数据(使用抽取的函数)
|
||||
# 添加溢价率数据
|
||||
premium_result = build_premium_result(premium_series)
|
||||
if premium_result:
|
||||
result.update(premium_result)
|
||||
|
||||
Reference in New Issue
Block a user