Files
sanguo_vnpy_v2/tests
claude_dev d165e2a808
CI/CD / test (push) Failing after 8s
CI/CD / nas-deploy (push) Has been skipped
CI/CD / nas-verify (push) Has been skipped
feat(provider): TET窄试点B——P0四方法Fetcher化(_ex新接口,strict fail-fast)
Phase 1(并行验证方案,2026-08-15用户定案):只加新接口不动老接口;Phase 2策略
session copy策略副本改调_ex在NAS回测对照;验证通过后Phase 3老接口内部委托。

- fetchers/base.py: 4个QueryParams strict校验(frequency/fq/count/日期/空列表
  非法即ValidationError;extra=forbid防拼错参数被静默吞)+DataSchemaError+
  validate_df_schema(DataFrame级:核心列缺失/全空fail-fast;空df=合法缺失)
- fetchers/price.py: PriceFetcher(get_price_ex)+PanelFetcher(closes_panel_ex)
  extract SQL原样搬e7f9426生产版(UNION ALL 340×索引优化保留)
- fetchers/constituent.py: 查询失败raise(老接口log+返[]静默)
- fetchers/fundamentals.py: fields短路+ThreadPool原样搬
- provider挂4个_ex方法(显式签名,老API零变化,策略层无感)
- 测试25个:等价性9(_ex vs老接口同参数assert_frame_equal逐值一致,含qfq/
  panel长表/count/fields/缺失标的)+strict 13+Optional契约3(high_limit/paused
  补默认=2026-08-15用户定案显式契约,非兜底)

与OpenBB有意差异:DataFrame级校验非逐行pydantic(5128只×全历史不可接受);
extract读本地不打网络;已知妥协=qfq因子二次读库在transform内(Phase 3归一)。
fetchers 25 passed+老接口回归68 passed。

[vps]
2026-08-14 23:34:31 +08:00
..