Generated by Answer me with HTML 0.5.5 · 2026-10-20 21:43 · ★ Star on GitHub

K线缓存链路加固 · 完成

2026-10-20 LXXG step3 加固与附带修复

Lead: 三条加固全部落地并验证。附带查出并修复 157 只指数的复权污染。

A

结论

已加固,已修复,已验证

单点超时不再让整批判失败。指数不再查除权。 另修复 157 只指数历史价格被个股除权因子污染的问题。 全库 9713 只 stale = 0。

  • 加固:重试 + 指数跳过 + 退出码分级 + 失败重跑判据
  • 附带修复:157 只指数,复检 1906 只全干净
  • 今日选股:未受影响,报告不重发
B

代码改动

文件 改动 作用
fq_utils.py get_xdxr_strict 退避重试 3 次 网络抖动自愈
fq_utils.py _reset_client 丢弃坏连接 不连坐后续标的
fq_utils.py is_index_code 带市场前缀判定 区分 sh000002 与 sz000002
fq_utils.py get_xdxr 旧契约保留返回 None 20 个 to_qfq 调用方零改动
build_qfq_from_day.py 指数不查除权 少一类网络失效点
build_qfq_from_day.py 失败分硬桶 / 软桶 指数失败只 WARN
build_qfq_from_day.py summary 增 failed 名单 下轮知道要重跑
tdx_daily_cron.sh 跳过条件加 FAILED_QFQ=0 失败标的必被补建
C

附带发现的污染

  1. 起因除权接口只收 6 位码sh000001 撞上 sz000001 平安银行的除权记录
  2. 影响1906 只指数里 157 只历史价格按个股因子缩放
  3. 最严重sh000001 上证指数首日价 = 真实值的 0.41%
  4. 修复重建 158 只指数改为不查除权,直接用 raw
  5. 复检1906 只全干净与 raw .day 同价,比率 1.00000
D

验证

  • 单元与集成 34 项全过:指数判定 16 例、重试、三连失败抛错、旧契约、真实网络 27 事件
  • 个股回归:5 只 close 哈希与改前完全一致
  • 真实流水线:bash tdx_daily_cron.sh rc=0,正确跳过
  • 全库一致性:9713 只 stale = 0

影响面判定:

  1. 今日选股:信号库 universe 只含个股 5389 只,不含指数,报告不重发
  2. wash_scan.py 的 20 日涨跌:窗口内无除权事件,当前值不受影响
  3. 研究脚本读指数长历史做基准:旧结论需重跑

回滚底本 before/、改后 after/、差异 after_*.diff 均在 /root/backups/qfq_harden_20261020/。