vr-shopxo-plugin/plan.md

104 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Council Plan — vr-shopxo-plugin Round 1 (Backend)
> Round 1 — 2026-04-14
> Branch: council/Backend → main
> 角色: ⚙️ Backend — Hook 可行性与 spec 模板绑定实现评审
---
## Task Overview
对 vr-shopxo-plugin 架构的 4 个关键技术问题做最终决策Backend 视角):
- **Q1**: 座位模板与分类的绑定粒度
- **Q2**: spec_base_id_map 生成时机
- **Q3**: 观演人信息存储位置
- **Q4**: spec 绑定方案($vr- 前缀命名空间)
---
## Backend 评审要点
### Q1 — 座位模板绑定粒度
- `$vr-场馆` spec_value.name → vr_seat_templates.name 的 name 匹配方案
- Hook 注入点:在商品详情加载时匹配,无需改 ShopXO 核心
### Q2 — spec_base_id_map 时机
- 插件在 `GoodsService` 的商品加载 Hook 中一次性构建 seat_map
- 写入 `goods.extension_data.vr.seat_map`,所有场次共用
### Q3 — 观演人存储
- 支付成功后写入 vr_tickets已有 DDL
- extension_data 仅存 ticket_id 绑定关系
- 不在购票流程中暂存,减少数据一致性风险
### Q4 — spec 绑定实现
- ShopXO spec_value 是 per-goods COPY按 name 匹配是唯一可行方案
- `$vr-` 前缀隔离用户 spec插件按前缀过滤
- 初始化时创建 `$vr-场馆` 等模板;商家应用后插件按 spec_value.name 查 vr_seat_templates
---
## Task Checklist
- [ ] **R1-T1**: 确认 `plugins_service_goods_index_view_end` Hook 的 extension_data 注入时机
- 读取 `docs/01_SHOPXO_TECHNICAL_RESEARCH.md` Hook 列表
- 确认注入点能获取 goods_id 并写入 extension_data
- [ ] **R1-T2**: 确认支付回调 Hook 名称(`plugins_service_buy_order_insert_success`
- 在 ShopXO 源码中定位实际 Hook 名称
- 更新 `docs/03_VERIFICATION_SYSTEM.md` 中的 Hook 名称
- [ ] **R1-T3**: spec_value.name 匹配 vr_seat_templates 的实现路径
- 确认插件在哪个 Hook 里完成匹配
- 确认 seat_map 组装逻辑spec_value → seat_template → seat_data
- [ ] **R1-T4**: 明确 item_type='ticket' 写入机制
- 插件在哪个时机写 goods.item_type
- 后台手动 or 插件自动?
- [ ] **R1-T5**: 补充 vr_events / vr_sessions DDL
- 基于 ARCHITECTURE.md 中列出的表名,补充完整字段定义
---
## Phase Breakdown
| Phase | 内容 | 负责人 |
|---|---|---|
| **Draft** | R1-T1 ~ T5 调研评审 | ⚙️ Backend |
| **Review** | 提交评审报告到 `reviews/Backend-QA-review.md` | ⚙️ Backend |
| **Finalize** | 合并结论到 main投票 | ⚙️ Backend |
---
## 评审结论Backend 视角)
| 问题 | 结论 | Blocking? |
|---|---|---|
| Q1 座位模板绑定粒度 | `$vr-场馆` spec_value.name → seat_template.name 按名字匹配 ✅ | Non-blocking |
| Q2 seat_map 时机 | 商品加载 Hook 中一次性构建,写入 extension_data ✅ | Non-blocking |
| Q3 观演人存储 | vr_tickets支付后+ extension_data 绑定关系 ✅ | Non-blocking |
| Q4 spec 绑定方案 | `$vr-` 前缀命名空间 + 按 name 匹配,是唯一可行方案 ✅ | Non-blocking |
| Hook 名称待确认 | 支付回调 Hook 名称需实测验证 | ⚠️ Blocking |
| vr_events/vr_sessions DDL | 缺失,需补充 | ⚠️ Non-blocking |
| item_type 写入机制 | 需明确(手动/自动) | ⚠️ Non-blocking |
---
## Dependencies
- `docs/01_SHOPXO_TECHNICAL_RESEARCH.md` — Hook 列表(需读取)
- `docs/03_VERIFICATION_SYSTEM.md` — 核销 Hook 名称(需更新)
- `docs/06_SEAT_MAP_INTEGRATION.md` — 选座集成方案(需读取)
- `ARCHITECTURE.md` — 整体架构(需读取)
---
## Voting
| Agent | Vote | 说明 |
|---|---|---|
| ⚙️ Backend | TBD | Round 1 调研中 |
[CONSENSUS: NO] — Round 1 尚未完成,需执行 R1-T1 ~ T5 后再投票