From 1e60ab3bfa82e4d89a9b1c62f3d46384fd33c3c9 Mon Sep 17 00:00:00 2001 From: jackyu66git Date: Thu, 6 Aug 2026 18:47:18 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E8=A1=A5=E5=BC=BA=20ECR-004=20CODE=5FR?= =?UTF-8?q?EVIEW=20=E5=A4=8D=E5=AE=A1=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- docs/CODE_REVIEW/ECR-004.md | 52 ++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/docs/CODE_REVIEW/ECR-004.md b/docs/CODE_REVIEW/ECR-004.md index 1b4a98e..3acbc15 100644 --- a/docs/CODE_REVIEW/ECR-004.md +++ b/docs/CODE_REVIEW/ECR-004.md @@ -2,42 +2,52 @@ **Role:** REVIEWER **Date:** 2026-08-06 -**Scope:** 威科夫硬化(评分 TR / 阶段 / VP 减负 / API 门闩) +**Scope:** `d3188ca`(相对 ECR-003)威科夫硬化 **Decision:** Approve -## Evidence +## Evidence loaded -- `chanlun/analysis/wyckoff/range.py`、`events.py` -- `web/api/analyze.py`、`chart_tv.js` -- `tests/test_wyckoff.py`、`web/tests/test_analyze_contract.py` -- IMPL / TEST / ENG SPEC +- Diff `d3188ca`:`range.py` / `events.py` / `analyze.py` / `chart_tv.js` / tests / ESS +- 复跑:`tests/test_wyckoff.py` + golden + analyze contract → **14 passed** +- 合成夹具抽查:`abs_start_idx=20`,low/high≈40.1/59.9(相对 003 的 bar0 已修好) ## Acceptance ↔ Evidence | Acceptance | Verdict | Evidence | |------------|---------|----------| -| 合成 TR 边界与起点 | PASS | `abs_start≥12`;low/high∈箱体带 | -| VP series 减负 | PASS | Top-8 + 填充 3 + levels;bins≤24 | -| 阶段最小跨度/不重合 | PASS | 链式切分;单测 unique keys | -| elements_only 门闩 | PASS | 契约测试 | -| golden 不变 | PASS | golden 套件 | -| 无币种参数 / 无策略改动 | PASS | diff 范围 | - -## 复跑 - -```text -→ 14 passed -``` +| TR 不吞明显前置趋势;边界近箱体 | PASS | 评分选段;单测 low/high 带 + `abs_start≥12` + start 时间容差 | +| VP series 减负 | PASS | Top-8 + 填充 3 + POC/VAH/VAL;API bins≤24 | +| 阶段最小跨度 / 不重合 | PASS | 链式 cursor;unique (start,end) 断言 | +| elements_only 门闩 | PASS | `include_wyckoff and not elements_only` + 契约测试 | +| golden 不变 / 无策略改动 / 无币种表 | PASS | golden 绿;diff 无 config/strategies | ## Findings -### Non-blocking +### Medium(不挡 Approve) -1. 尾部短时可能只输出 A–C(无 D/E)——符合「空间不足截断」规则。 -2. 评分权重仍为启发式,实盘 BTC 以外未矩阵验证(本 ECR 明确不做币种表)。 +1. **同分 tie-break 偏向更长窗口** + 循环从长到短,`score <= best_score` 时保留已有(更长)。多数情况分数拉开;若实盘出现「长窗与短窗同分」,仍可能略偏长。可选:同分取更短,或加 `1/length` 微项。 + +2. **阶段常截断为 A–C** + Spring/SOS 落在尾部时 D/E 因 `min_span` 被吃掉——与 ENG「空间不足截断」一致,但 UI 勾选「阶段」时用户可能期望总见 D/E。属产品预期,非缺陷;可在 UI/文档标明「尾部不足则省略」。 + +### Low + +3. **`abs_start_idx >= 12` 弱于「箱体起点」** —— 主测已用时间容差;该断言可再收紧到 `>= 16` 一类。 +4. **VP Top-N 无自动化 series 计数** —— 靠代码审查 + ENG 约定。 +5. 事件 marker 仍一律 `arrowUp`(003 遗留)。 +6. 失败路径仍回传 `wyckoff.error` 字符串。 ### No blockers +未发现契约删键、缠论语义改动、策略改动、或回归红灯。 + ## Decision **Approve** + +ECR-004 可维持 Done (Reviewed)。Medium 项进 backlog,不必立刻新 ECR,除非实盘 TR 仍偏长。 + +## Next owner + +Human — 主站 BTC 勾选威科夫目测;无发版要求则保持 `v1.0.0` Unreleased 累计。