Files
Chan/docs/ECR/ECR-008-chart-tv-split.md
T
jackyu66gitandCursor dbb6202325 feat(ECR-008): 拆分主站 chart_tv.js 为多模块薄门面
行为冻结物理拆分;保留 initTradingView/dispose 对外 API;无打包器。node --check 全绿。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 15:09:48 +08:00

2.1 KiB

ECR-008

Title: 拆分主站巨型 chart_tv.js(行为冻结)
Status: Done (Reviewed)
Date: 2026-08-07
Change Level: L3(结构重构;行为冻结)

Change

web/static/js/app/chart_tv.js(≈4700 行)按职责拆为多个无打包 script;薄门面保留 initTradingView / disposeTradingViewChartsui.js 调用。

Motivation

ECR-001/002 CODE_REVIEW 非阻断债务;威科夫与 Live 叠层继续堆入单体,审阅与回归成本上升。

Scope

Allowed

  • 新增:chart_tv_lifecycle.js / chart_tv_shell.js / chart_tv_indicators.js / chart_tv_chan.js / chart_tv_overlays.js / chart_tv_finalize.js
  • chart_tv.js 改为编排门面;index.html 调整 script 顺序与 cache bust
  • node --check;主站手动冒烟

Forbidden

  • Vite / React / TS 构建流水线
  • 修改笔 / 线段 / 中枢 / 买卖点算法语义或绘制语义(仅搬移)
  • 破坏 /api/analyze JSON 字段
  • 修改 config/ / strategies/
  • 为主站重新引入 WebSocket 实时

Risk

Risk Mitigation
拆分漏变量 / 作用域错误 ctx 显式传参;冒烟 dispose + 三周期元素 + 威科夫
script 顺序错误 index.html 固定 lifecycle→…→门面→sync
缓存旧单体 bump ?v=

Acceptance Criteria

  • initTradingView / disposeTradingViewCharts 仍可被 ui.js 调用
  • 自动刷新 dispose 路径保留(含 Cycle Summary 节点保全)
  • 主/次/次次 笔段中枢、买卖点、威科夫、ChanMACD 开关行为与拆前一致(搬移;浏览器目测待 Human)
  • node --check 全部相关 JS PASS
  • IMPLEMENTATION_REPORT / TEST_REPORT / CHANGELOG / TRACEABILITY / CODE_REVIEW

Rollback

git revert 本 ECR 提交;可恢复单文件 chart_tv.js

Risk Review

N/A(不改交易决策语义)

Linked

  • IDEA: docs/IDEA/IDEA-006-chart-tv-split.md
  • ENGINEERING_SPEC: docs/ENGINEERING_SPEC/ECR-008-chart-tv-split.md
  • HANDOFF: docs/HANDOFF/ECR-008-architect-to-engineer.md
  • TRACEABILITY: Yes