Files
sanguo_vnpy_v2/frontend
claude_dev fdbbb488dc
CI/CD / test (push) Failing after 39s
CI/CD / nas-deploy (push) Has been skipped
CI/CD / nas-verify (push) Has been skipped
fix(api): 控制台归因页崩修复+合成层版本树接真——两波同修(用户拍板 factor 域) [vps]
①归因页契位修复(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>
2026-09-27 17:54:20 +08:00
..

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.