fdbbb488dc
①归因页契位修复(infra 派单): 020e610 产物 factorContribution=月度长表
{factor,month,contribution_ret}(1008 条含 market/size/industry/specific
三桶行)直通撞前端 P0 短表契约 {factorId,contributionPct}——首行
contributionPct undefined → AttributionResearch.vue toFixed 整页崩
(双机实锤)。修=_aggregate_monthly_contribution 聚合适配:
- 口径=近 12 月 Σ contribution_ret×100(滚动年窗;全期 market +65%
溢出前端横条 3.2×;量级 0.1~6% 恰配)
- 三桶(market/size/industry/specific)与 12 源同板上板(研判核心结构)
- 不足 12 月(挑战者件 8 月)退化全窗 Σ;脏行跳过;降序返回
- 真件端到端验证: 1008 行→16 行与实探量级一致(market+5.85/kup+2.22)
- 前端补 typeof 兜底 filter(缺字段行滤掉防再整页崩)
②合成层版本树接真(追加派单): /pipeline/composite 真端点+mock 条目退役
- 两节点: quant12_v2a(L1 档案 resolved 权重=在位者 szneul_reb63 钉住,
releasedAt=档案 created)/quant12_v1(等权基线=#69 挑战者)
- 影子对照挂挑战者节点: 读 szneul_eq_reb63 周报 weeks_counted/
te_annual; 09-28 首跑前无周报→如实 0/4 周+TE null+进行中(不造数);
满 4 周 TE≤影子阈值达标/超阈
- 因子侧坏档 fail-soft items=[](宁空勿 500,同归因页纪律)
- 前端: 标题接 family 真名(告别 fund8 硬编码)/cand+gate 条件改
shadowCompare(告别 v3 硬编码)/TE null 显示「未算」/类型
trackingError number|null
- spec §4.7 端点节+控制台功能表两行同步(档随码走)
- 测试: tests/api +13(attribution 7+composite 6,含 jwt secret 每测试
现签防全量套件串扰); tests/api 202 全绿+tests/factor 438 全绿
+前端 vitest 17 过+vue-tsc 过
Co-Authored-By: Claude Code <noreply@anthropic.com>
Vue 3 + TypeScript + Vite
This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 <script setup> SFCs, check out the script setup docs to learn more.
Learn more about the recommended Project Setup and IDE Support in the Vue Docs TypeScript Guide.