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

62 lines
2.1 KiB
Markdown

# 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