# TRACEABILITY ## ECR-001 | ECR | Requirement | Spec | Code | Test | |-----|-------------|------|------|------| | ECR-001 | 引擎包化 + shim | ENG-001 / ADR-001 | `chanlun/` + root shims | import smoke + golden | | ECR-001 | TF_DF 门面拆分 | ENG-001 | `chanlun/pipeline/` | golden pipeline | | ECR-001 | Web 分层 | ENG-001 | `web/services` `web/api` | analyze contract | | ECR-001 | 前端模块化 | ENG-001 | `web/static/js/app/` | manual / smoke | | ECR-001 | 策略零改动 | PROFILE | no edits under strategies/ | git diff empty | ## IDEA-002(L1) | Id | Requirement | Spec | Code | Test | |----|-------------|------|------|------| | IDEA-002 | 主站自动刷新内存泄漏 | IDEA-002 | `chart_tv.js` dispose;`ui.js` 增量刷新;去掉重复 sync | `docs/TEST_REPORT/IDEA-002.md` | | IDEA-002 | 首屏不重复 analyze | IDEA-002 | `ui.js` 单次 `updateChart` | Network 人工 | | IDEA-002 | ChanMACD 不重复全量分析 | IDEA-002 | `kline.py` / `timeframe.py` / `runtime.py` 复用 | golden 建议回归 | | IDEA-002 | chan_tv 指标/中枢/布局/WS | IDEA-002 | `chan_tv.html` `datafeed.js` `chan_*.js` `config.py` | 人工 | ## ECR-002 | ECR | Requirement | Spec | Code | Test | |-----|-------------|------|------|------| | ECR-002 | 拆分 `runtime.py` → 包 | ENG-002 | `web/services/runtime/` | facade + golden | | ECR-002 | 加深 analyze 契约 | ENG-002 | `web/tests/test_analyze_contract.py` | mock HTTP + 键快照 | | ECR-002 | TF_DF 全量 init 冒烟 | ENG-002 | — | `tests/test_tf_df_init.py` | | ECR-002 | chart_tv 拆分(可选) | ENG-002 | 未做 | — |