独立 wyckoff 引擎 + 按需 include_wyckoff;主站 Lightweight 绘制区间/阶段/事件/VP。 Co-authored-by: Cursor <cursoragent@cursor.com>
78 lines
3.2 KiB
Markdown
78 lines
3.2 KiB
Markdown
# CODE_REVIEW — ECR-003
|
||
|
||
**Role:** REVIEWER
|
||
**Date:** 2026-08-06
|
||
**Scope:** 工作区未提交 ECR-003(相对 `origin/dev` @ `df27b4d`)
|
||
**Decision:** Approve(带非阻断 Findings;建议合并前勿提交 `.DS_Store`)
|
||
|
||
## Evidence loaded
|
||
|
||
- `chanlun/analysis/wyckoff/{engine,range,events,volume_profile}.py`
|
||
- `web/api/analyze.py`(`include_wyckoff`)
|
||
- `web/templates/index.html`、`chart_view.js`、`macd_ui.js`、`chart_tv.js` 威科夫块
|
||
- `tests/test_wyckoff.py`、`web/tests/test_analyze_contract.py`
|
||
- ESS:ECR/PRODUCT/ENG/IMPL/TEST/HANDOFF
|
||
|
||
## Acceptance ↔ Evidence
|
||
|
||
| Acceptance | Verdict | Evidence |
|
||
|------------|---------|----------|
|
||
| `include_wyckoff=1` 返回约定键;默认不强制 | PASS | 契约测试;默认无 `wyckoff` 键 |
|
||
| 合成 TR + 事件;VP POC | PASS | `test_wyckoff.py`(12 相关套件全绿) |
|
||
| 主站可开关绘制 | PASS | 主开关按需拉取;子项本地重绘 |
|
||
| golden 不变 | PASS | `test_golden_pipeline` |
|
||
| 未改缠论算法 / strategies / chan_tv | PASS | diff 范围核对 |
|
||
| ESS 闭环 | PASS | IMPL/TEST/TRACE/CHANGELOG/本文件 |
|
||
|
||
## 复跑
|
||
|
||
```text
|
||
PYTHONPATH=.:web python -m pytest \
|
||
tests/test_wyckoff.py tests/test_golden_pipeline.py \
|
||
web/tests/test_analyze_contract.py -q
|
||
→ 12 passed
|
||
```
|
||
|
||
## Findings
|
||
|
||
### Important(不挡 Approve,建议跟进)
|
||
|
||
1. **交易区间易吞并前置趋势**
|
||
`detect_trading_range` 从最长窗口向下搜,合成夹具下 `abs_start_idx=0`,箱体前下跌段被算进 TR。单测只断言「有区间 + 有事件」,未锁定高低/起点。
|
||
*建议:* 用「宽度/触边密度」评分取最优段,或要求近端触边;测试断言 `high≈60/low≈40` 与起点靠近箱体。
|
||
|
||
2. **VP 叠层系列数偏多,可能加压自动刷新内存**
|
||
开启 VP 时约每个 bin 一条 `addLineSeries`(默认 ~50),再加区间填充/阶段。与 IDEA-002 内存修复同路径全量重建时放大。
|
||
*建议:* 只画非零 bin 或合并为少量 series / histogram;或限制 `vp_bins` 上限到 24。
|
||
|
||
### Medium
|
||
|
||
3. **阶段 C–E 在事件扎堆时常退化重叠**
|
||
夹具输出中 D/E 起止几乎相同;状态机按事件锚点硬切,缺少最小阶段长度。展示可用,语义偏弱。
|
||
|
||
4. **`elements_only=true` 仍可能跑威科夫**
|
||
威科夫挂在路由末尾,不依赖 `not elements_only`。主站当前不这么发,但契约上奇怪;建议与主周期分析同门闩。
|
||
|
||
5. **单测断言偏松**
|
||
`Spring in types or SOS`、`abs(poc-50)<2` 对回归保护不足。
|
||
|
||
### Low
|
||
|
||
6. 失败时 `wyckoff.error` 回传异常字符串(与结构区 print 风格一致,信息暴露轻微)。
|
||
7. 事件 marker 一律 `arrowUp`(跌破类也可 `arrowDown`)。
|
||
8. 工作区 `.DS_Store` 脏文件——**勿纳入 commit**。
|
||
|
||
### No blockers
|
||
|
||
未发现:契约删键、缠论语义改动、策略/config 改动、未鉴权危险写操作、主站误引 WS。
|
||
|
||
## Decision
|
||
|
||
**Approve**
|
||
|
||
可合并提交(排除 `.DS_Store`)。Important #1/#2 可开后续 L1/L2,不阻塞本 ECR 着陆。
|
||
|
||
## Next owner
|
||
|
||
`engineer` / Human — commit(勿含 `.DS_Store`);可选跟进 TR 评分与 VP 绘图优化。
|