---
phase: 11
reviewers: [codex, opencode]
reviewed_at: 2026-05-01T12:30:00+08:00
plans_reviewed: [11-01-PLAN.md, 11-02-PLAN.md, 11-03-PLAN.md, 11-04-PLAN.md, 11-05-PLAN.md]
---

# Cross-AI Plan Review — Phase 11: predictV3算法优化

## Codex Review

### Summary

计划技术上是合理的，但有几个需要注意的地方：依赖关系修复、数据验证、性能保护和边缘情况处理。整体架构遵循现有模式良好，NDCG@5 和 MRR 作为排名评估指标是适当的。

### Strengths

- 计划结构清晰，任务分解合理
- NDCG@5、MRR、命中分布都是业界标准的排名质量评估指标
- 扩展字段明确（ndcg_5、mrr、hit_distribution、precision_5）
- 整体架构遵循现有代码模式

### Concerns

| Severity | Concern |
|----------|---------|
| HIGH | **依赖关系错误**: Plan 05 (二阶马尔可夫) 不应依赖 Plans 01 和 03 — 它是独立的增强功能 |
| HIGH | **数据验证缺失**: 需要最小样本量检查 — 置信度计算建议 50+ 期，二阶马尔可夫建议 150+ 期 |
| MEDIUM | **性能保护**: 网格搜索需要超时保护和最优权重缓存机制 |
| MEDIUM | **边缘情况**: NDCG 计算需要空预测保护；命中分布需要定义明确的统计桶 |

### Suggestions

- 修复 Plan 05 的依赖关系，使其独立执行
- 添加数据量阈值验证，不足时返回提示或回退策略
- 为网格搜索添加执行超时限制（如 60 秒）
- 在 NDCG/MRR 计算前检查 `$details` 是否为空

### Risk Assessment

**MEDIUM** — 依赖关系和边缘情况需要修复，否则执行可能失败。

---

## OpenCode Review

### Summary

Phase 11 计划在功能扩展方向上合理，在现有 V3 预测算法（9维度 + 动态权重）基础上增加置信度评估、回测指标扩展、权重优化和二阶马尔可夫链增强。计划整体结构清晰，依赖关系明确，但存在若干实现细节缺失和潜在风险需要补充。

### Strengths

- Plan 01 任务分解合理，指标选择专业
- Plan 02 与回测指标扩展解耦，可独立实现
- Plan 03 依赖明确，在现有弹窗架构内实现
- Plan 04 网格搜索是系统化的超参数优化方法
- Plan 05 二阶马尔可夫是合理的算法增强方向

### Concerns

| Severity | Concern |
|----------|---------|
| HIGH | **Plan 01: NDCG 计算公式不明确** — 需要确认基于什么"理想排名"计算，relevance score 定义模糊 |
| HIGH | **Plan 01: hit_distribution 定义模糊** — 具体指什么分布？按命中排名？按命中/未命中按期数分布？ |
| HIGH | **Plan 02: "历史排名命中率"数据来源不明** — 现有 `_runBacktestV3` 不保存历史命中率数据，需要明确是实时计算还是缓存 |
| HIGH | **Plan 02: "多维度一致性"定义不明** — 具体指哪些维度之间的一致性？如何量化？ |
| HIGH | **Plan 04: 5 种权重配置未明确** — 缺少具体配置清单 |
| HIGH | **Plan 04: 优化目标不明确** — 用哪个指标作为优化目标？hit_rate？NDCG？MRR？ |
| HIGH | **Plan 05: 状态空间爆炸** — 二阶马尔可夫状态空间大（尾数 10×10=100），100 期历史数据下很多状态对从未出现，概率估计不准确 |
| HIGH | **Plan 05: 100 期阈值缺乏依据** — 二阶马尔可夫需要更长历史，建议至少 200-300 期 |
| MEDIUM | **Plan 01: precision_5 与 hit_rate 关系** — 两者都是 Top-5 命中，是否重复？建议区分或合并 |
| MEDIUM | **Plan 02: 置信度百分比计算公式** — 三个维度如何加权组合？权重比例未明确 |
| MEDIUM | **Plan 02: 数据量要求** — 历史 < 20 期时置信度不准确，缺少 fallback 策略 |
| MEDIUM | **Plan 03: UI 设计细节缺失** — 未提供具体布局建议，置信度展示样式不明确 |
| MEDIUM | **Plan 03: 命中分布图表实现** — 未说明使用 ECharts 还是 CSS，数据量大时需考虑性能 |
| MEDIUM | **Plan 04: 结果持久化** — 每次调用都重新计算？建议增加缓存 |
| MEDIUM | **Plan 04: 计算量** — 5 配置 × 50 期回测 = 250 次预测，响应时间长，建议异步 |
| MEDIUM | **Plan 05: 一阶/二阶切换逻辑** — 判断条件不明确：总期数阈值还是状态对观察次数阈值？ |
| MEDIUM | **Plan 05: 与现有一阶权重关系** — 二阶是独立维度还是替换一阶？ |
| LOW | **Plan 01: 计算性能** — 每次回测批量计算可能影响性能 |
| LOW | **Plan 02: 返回值结构** — 是否每个号码都提供置信度？ |
| LOW | **Plan 03: 前端数据量** — 命中分布是否需要分页/滚动加载？ |
| LOW | **Plan 03: 国际化** — 新增 UI 文本是否需要多语言？ |
| LOW | **Plan 05: 性能影响** — 二阶计算复杂度高于一阶 |

### Suggestions

**Plan 01:**
- 补充 NDCG 公式：DCG = Σ(1/log2(rank+1))，IDCG = Σ(1/log2(i+1)) for i=1..hits
- 明确 hit_distribution 结构：`{rank_1: n, rank_2: n, ..., rank_5: n, miss: n}`
- 添加回测结果缓存机制

**Plan 02:**
- 将"多维度一致性"改为"预测得分集中度"，基于 Top-5 得分与平均得分差距计算
- 明确加权公式：`confidence = 0.4*historical + 0.3*score + 0.3*consistency`
- 历史命中率作为 `_runBacktestV3` 副产品，调用一次获取

**Plan 03:**
- 补充 UI 设计 mockup 或具体说明
- 使用现有 ECharts 展示命中分布
- 置信度用红/黄/绿三色表示高/中/低

**Plan 04:**
- 补充 5 种预定义配置的具体权重值
- 定义优化目标：综合 hit_rate(60%) + avg_rank(40%)
- 使用后台队列异步处理，返回 task_id

**Plan 05:**
- 重新评估二阶马尔可夫必要性 — 49选1彩票数据稀疏性严重
- 替代方案：加权 N 阶马尔可夫（70% 二阶 + 30% 一阶）
- 明确判断标准：`count($history) >= 200 && $statePairCount >= 5`

### Risk Assessment

**MEDIUM** — 实现复杂度中等，数据稀疏性问题高，多处定义不明确需补充。建议优先实现 Plan 01、02、04，将 Plan 05 作为可选高阶优化或重新评估必要性。

---

## Consensus Summary

### Agreed Strengths

- 计划结构清晰，任务分解合理 ✓
- NDCG@5、MRR 是适当的排名质量评估指标 ✓
- 整体架构遵循现有代码模式 ✓
- 网格搜索是系统化的参数优化方法 ✓

### Agreed Concerns (Highest Priority)

| Priority | Concern | Source |
|----------|---------|--------|
| 1 | **Plan 05 依赖关系错误** — 不应依赖 01、03，是独立功能 | Codex + OpenCode |
| 2 | **数据量验证缺失** — 置信度需 50+，二阶马尔可夫需 150-200+ | Codex + OpenCode |
| 3 | **边缘情况处理** — NDCG/MRR 空预测保护，hit_distribution 定义模糊 | Codex + OpenCode |
| 4 | **Plan 05 状态空间爆炸** — 100 期数据下二阶马尔可夫概率估计不准 | OpenCode |
| 5 | **Plan 02 置信度维度定义不明** — "多维度一致性"如何量化 | OpenCode |
| 6 | **Plan 04 配置未明确** — 5 种权重具体值缺失，优化目标不明 | OpenCode |
| 7 | **性能影响** — 网格搜索需超时/异步，二阶马尔可夫计算量大 | Codex + OpenCode |

### Divergent Views

| Issue | Codex | OpenCode |
|-------|-------|----------|
| Plan 05 数据阈值 | 建议 150+ | 建议 200-300+，并要求状态对观察次数 >= 5 |
| precision_5 与 hit_rate | 未提及 | 认为可能重复，建议区分 |

---

## Action Items for Replanning

1. **Fix Plan 05 depends_on** → 改为 `depends_on: []`
2. **Add data validation** → 所有计算方法添加最小数据量检查和 fallback
3. **Clarify NDCG formula** → 补充完整公式到 Plan 01 Task 1
4. **Clarify hit_distribution** → 明确结构为 `{rank_1..rank_5: counts}`
5. **Clarify confidence dimensions** → 重命名"多维度一致性"为"得分集中度"
6. **Add weight configs** → Plan 04 补充 5 种具体权重配置值
7. **Raise 2nd-order threshold** → Plan 05 改为 200 期 + 状态对观察次数检查
8. **Add performance protection** → 网格搜索添加超时限制，考虑异步