diff --git a/plan.md b/plan.md index c398d23..e352679 100644 --- a/plan.md +++ b/plan.md @@ -1,5 +1,6 @@ # Council Plan — vr-shopxo-plugin Round 1 +<<<<<<< HEAD > Round 1 — 2026-04-14 <<<<<<< HEAD > 任务:对 4 个关键技术问题进行三方评审(Architect / PM / Backend) @@ -109,11 +110,47 @@ | Hook 名称确认 | 支付回调 Hook 名称(`plugins_service_buy_order_insert_success`)需实测验证 | ⚠️ P0 | | vr_events/vr_sessions DDL | ARCHITECTURE.md 中仅列名,无字段定义 | ⚠️ P1 | | item_type='ticket' 写入机制 | 插件在哪个时机写 goods.item_type?后台手动还是插件自动? | ⚠️ P1 | +======= +> Round 1 (new cycle) — 2026-04-14 +> Branch: council/Architect → main +> 状态:**Round 1 并行评审阶段** — 4 个关键技术问题最终决策 + +--- + +## 本轮目标 + +对 vr-shopxo-plugin 的 4 个关键技术问题做最终架构决策,输出结论或 trade-off 分析,标注 blocking / non-blocking。 + +--- + +## 待决策问题(4个) + +### Q1: 座位模板与分类的绑定粒度 +一个分类 = 一个座位区,还是一个分类 = 完整场馆(内部分区)? + +**背景**:当前 ARCHITECTURE.md 中 `vr_seat_templates.category_id` 是 UNIQUE KEY(一分类对一模板)。如需一分类支持多个座位区(内部分区),需改为一对多。 + +### Q2: spec_base_id_map 生成时机 +所有 spec 共用座位配置,还是每个 spec 独立座位配置? + +**背景**:venue_data.seat_map 是所有场次共用还是每个场次独立?spec_base_id_map 的 seat_id → spec_base_id 映射在哪个时机生成。 + +### Q3: 观演人信息存储位置 +观演人信息存 extension_data / vr_tickets / 还是独立暂存表? + +**背景**:vr_tickets 表已有 real_name/phone/id_card 字段,但填写时机(购票前 vs 支付后)未明确。 + +### Q4: spec 绑定方案(ShopXO 模板复制模式) +spec_value 是 per-goods COPY,不能用 ID 绑定,只能按名字匹配。 + +**背景**:v2.2 已确认 `$vr-` 前缀隔离方案,但 spec_value.name 的匹配时机和稳定性需确认。 +>>>>>>> council/Architect --- ## Task Checklist +<<<<<<< HEAD ### PM Tasks - [x] **T-PM-Q1**: PM 视角评审 Q1 座位模板绑定粒度 - [x] **T-PM-Q2**: PM 视角评审 Q2 spec_base_id_map 生成时机 @@ -156,6 +193,46 @@ - [ ] **R1-T5**: 补充 vr_events / vr_sessions DDL 到 ARCHITECTURE.md - [ ] **R1-T6**: 输出 Backend 评审报告到 `reviews/Backend-QA-review.md` >>>>>>> council/Backend +======= +### 架构评审任务(Round 1) + +- [ ] **A1**: Architect 评审 Q1 — 座位模板与分类绑定粒度 + - 分析:`$vr-` 前缀 + 分类绑定 vs 商品级模板的架构一致性 + - 评估:UNIQUE KEY 限制是否合理,是否需要一对多 + - 输出:结论 + blocking/non-blocking + - `[Pending: council/Architect]` + +- [ ] **A2**: Architect 评审 Q2 — spec_base_id_map 生成时机 + - 分析:共用 seat_map vs 独立 seat_map 的扩展性 + - 评估:前端选座交互复杂度 vs 后端存储复杂度 + - 输出:结论 + blocking/non-blocking + - `[Pending: council/Architect]` + +- [ ] **A3**: Architect 评审 Q3 — 观演人信息存储 + - 分析:vr_tickets 支付后写入 vs extension_data 购票前暂存 + - 评估:数据一致性 vs 用户体验 + - 输出:结论 + blocking/non-blocking + - `[Pending: council/Architect]` + +- [ ] **A4**: Architect 评审 Q4 — spec_value 命名匹配 + - 分析:`$vr-` 前缀 + name 匹配的稳定性 + - 评估:是否存在边界情况(如商家改名、复制商品) + - 输出:结论 + blocking/non-blocking + - `[Pending: council/Architect]` + +- [ ] **P1**: PM 评审 Q1-Q4 — 实施复杂度与风险点 + - 输出:每个 Q 的开发工时估算(低/中/高)和风险等级 + - `[Pending: council/PM]` + +- [ ] **B1**: Backend 评审 Q1-Q4 — ShopXO Hook 可行性 + - 输出:spec 模板绑定实现细节、Hook 名称确认 + - `[Pending: council/Backend]` + +- [ ] **C1**: 综合所有评审输出 → 4 Q 最终结论文档 + - 汇总 Architect/PM/Backend 结论 + - 标注 blocking / non-blocking + - `[Pending: council/Architect]` +>>>>>>> council/Architect --- @@ -164,6 +241,7 @@ <<<<<<< HEAD | Phase | 内容 | 负责人 | |---|---|---| +<<<<<<< HEAD | **Draft** | 各方完成 4 Q 评审 | all | | **Review** | 交叉评审,输出 `reviews/` 文件 | all | | **Finalize** | 合并到 main,投票 | all | @@ -194,3 +272,34 @@ [CONSENSUS: NO] — Round 1 Draft 阶段,Backend 需完成 R1-T1 ~ T6 后再投票 >>>>>>> council/Backend +======= +| **Round 1 (本轮)** | 并行评审 A1-A4 / P1 / B1 | all | +| **Round 2** | 综合结论 C1,投票 | Architect | +| **Finalize** | 合并到 main | all | + +--- + +## Claim Status + +| Task | Owner | Status | +|---|---|---| +| A1: Q1 架构评审 | council/Architect | `[Pending]` | +| A2: Q2 架构评审 | council/Architect | `[Pending]` | +| A3: Q3 架构评审 | council/Architect | `[Pending]` | +| A4: Q4 架构评审 | council/Architect | `[Pending]` | +| P1: PM 评审 Q1-Q4 | council/PM | `[Pending]` | +| B1: Backend 评审 Q1-Q4 | council/Backend | `[Pending]` | +| C1: 综合结论 | council/Architect | `[Pending]` | + +--- + +## Voting + +| Agent | Vote | 说明 | +|---|---|---| +| Architect | TBD | 待 Round 1 完成 | +| PM | TBD | 待 Round 1 完成 | +| Backend | TBD | 待 Round 1 完成 | + +**[CONSENSUS: NO]** — Round 1 执行评审中,4 Q 结论待输出 +>>>>>>> council/Architect