refactor: ECR-002 拆分 runtime 包并加深 analyze 契约(已审)

将 web/services/runtime.py 拆为 runtime/ 子模块并保持门面兼容;补齐 ESS 文档、门面/契约/TF_DF 测试与 CODE_REVIEW Approve。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
jackyu66git
2026-08-06 18:15:23 +08:00
co-authored by Cursor
parent 9f1e7361b6
commit df27b4dde8
33 changed files with 2029 additions and 1206 deletions
+38
View File
@@ -0,0 +1,38 @@
# IMPLEMENTATION_REPORT — ECR-002
**Date:** 2026-08-06
**Status:** Implemented(待 CODE_REVIEW
**Change Level:** L3(行为冻结)
## What changed
`web/services/runtime.py`~1178 行)拆为包 `web/services/runtime/`
| Module | Responsibility |
|--------|----------------|
| `state.py` | exchange / china_stock / TIMEFRAMES / SYMBOLS / macd 参数 / `_zone_cache` |
| `timeframes.py` | 周期换算、默认值、大小比较、zone TTL |
| `market_data.py` | K 线拉取(datasvc / ccxt / A 股)、元信息刷新 |
| `indicators.py` | `add_indicators` / `calculate_macd` |
| `analyze.py` | `analyze_chan` / `classify_trend_stage` |
| `serialize.py` | ChanMACD 序列化、JSON 清洗、未完成线段 |
| `__init__.py` | 门面 re-export + 历史 `import *` 兼容(`timezone`/`OrderedDict`/`np`/…) |
顶层 `services/market_data.py` 等薄 shim 仍从 `services.runtime` 再导出。
**未做(ECR 可选):** `chart_tv.js` 拆分。
## Compatibility
- `from services.runtime import *` / `import services.runtime as R` 保持可用
- `/api/analyze` 字段未删减
- golden 未改算法
## Tests
`docs/TEST_REPORT/ECR-002.md`13 passed)。
## Follow-ups
- CODE_REVIEW Approve
- 可选:`symbols.macd_config` POST 写回 `state.macd_*`(历史 quirks,本 ECR 未改)