# 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` / `disposeTradingViewCharts` 供 `ui.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 - [x] `initTradingView` / `disposeTradingViewCharts` 仍可被 `ui.js` 调用 - [x] 自动刷新 dispose 路径保留(含 Cycle Summary 节点保全) - [x] 主/次/次次 笔段中枢、买卖点、威科夫、ChanMACD 开关行为与拆前一致(搬移;浏览器目测待 Human) - [x] `node --check` 全部相关 JS PASS - [x] 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