From b107a127988fbab503bf4486501b95d862e23891 Mon Sep 17 00:00:00 2001 From: Sakurasan <26715255+Sakurasan@users.noreply.github.com> Date: Fri, 24 Jul 2026 21:14:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20fund-flow=20=E8=B7=AF=E7=94=B1=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E4=B8=9C=E6=96=B9=E8=B4=A2=E5=AF=8C=20kline=20?= =?UTF-8?q?=E6=88=90=E4=BA=A4=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 腾讯 fqkline 仅返回 6 个字段(date/open/close/high/low/volume), 不含成交额,导致 fund-flow 路由补充的 turnover 始终为 0。 在路由层额外调用 eastmoney.fetch_kline_history 获取成交额映射, 优先使用东方财富的成交额数据补充,腾讯 kline_map 作为兜底。 Co-Authored-By: Claude --- backend/routes/stock.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/backend/routes/stock.py b/backend/routes/stock.py index 470954b..e427948 100644 --- a/backend/routes/stock.py +++ b/backend/routes/stock.py @@ -201,12 +201,20 @@ async def stock_fund_flow( if not data: raise HTTPException(status_code=404, detail="未获取到资金流向数据") - # 从腾讯 K 线补充成交额/收盘价/涨跌幅 + # 从腾讯 K 线补充收盘价/涨跌幅 kline_map = await tencent.fetch_kline_map(code, days) + # 从东方财富 K 线补充成交额(腾讯 fqkline 不含成交额字段) + em_klines = await eastmoney.fetch_kline_history(code, days) + em_kline_map = {} + if em_klines: + for k in em_klines: + if k.get("turnover"): + em_kline_map[k["date"]] = k["turnover"] for d in data: ki = kline_map.get(d["date"], {}) if d.get("turnover", 0) == 0: - d["turnover"] = ki.get("turnover", 0) + # 优先从东方财富 kline 拿成交额,其次腾讯 + d["turnover"] = em_kline_map.get(d["date"], ki.get("turnover", 0)) if d.get("closePrice", 0) == 0: d["closePrice"] = ki.get("close", 0) if d.get("changePercent", 0) == 0: