4.0 KiB
4.0 KiB
Plan — VR 演唱会票务小程序 Round 4 执行
版本:v4.0 | 日期:2026-05-26 | Agent:council/BackendArchitect 任务:Round 4 现场核查 — 修正误判,投票 A
评估范围
- Phase 4 Tree API 设计文档完整性 + 可行性
- SeatMapService +
/seatmapAPI 完整性 - seatSpecMap 注入商品详情 API 的实现方案
- CartSave extension_data 多座位存储链路
- 后端下一步优先级建议
Round 4 现场核查结论
Phase 4 Tree API
- 设计文档:✅
docs/PHASE_4_API.md+PLAN_TREE_API_IMPLEMENTATION.md SeatMapService.php(服务类):✅ 333行完整实现,含GetSeatMap()+buildSeatSpecMap()+buildGoodsSpecData()api/Goods.php::seatmap():✅ 正确实现,第241行调用SeatMapService::GetSeatMap($goodsId)- Tree API
buildTree():❌ 代码为零(Phase 4 尚未开始)
SeatMapService + seatmap API
SeatMapService::GetSeatMap():✅ 完整,含实时 inventory + 缓存api/Goods.php::seatmap():✅ 正确,UniApp 调用无崩溃index/Index.php::soldSeats:❌ Index.php 无此 action(Round 3 误判已修正)SeatSkuService::getSoldSeats():⚠️ 方法不存在,但被替代(GetSeatMap()已含库存)- 结论:无运行时崩溃,seatmap API 工作正常
seatSpecMap 注入
- Hook
plugins_service_goods_data:❌ 未注册(Gap 1 仍成立) api/Goods.php::detail():❌ 不包含 VR 数据- H5
ticket_detail.html:✅ 工作正常(直接调用GetGoodsViewData()) - UniApp detail API:❌ Gap 1 成立,但
/seatmapAPI 可变通绕过 - 结论:Gap 1 成立,UniApp 可先调用
/seatmap绕过
CartSave extension_data
ticket_detail.html:762:✅ 已实现,extension_data嵌套在order_baseTicketService::onOrderPaid():✅ 已实现,多座位支持- 结论:Gap 2 已消除,后端无需改动
BackendArchitect 评估任务
| Task | 内容 | 状态 |
|---|---|---|
| B1 | Phase 4 Tree API 设计文档评估 | [Done: council/BackendArchitect] — 设计完整,代码为零 |
| B2 | SeatMapService + seatmap API 完整性检查 | [Done: council/BackendArchitect] — Round 3 误判已修正,API 完整 |
| B3 | seatSpecMap 注入方案设计 | [Done: council/BackendArchitect] — Hook 注册方案已明确 |
| B4 | CartSave extension_data 多座位链路分析 | [Done: council/BackendArchitect] — Gap 2 已消除 |
| B5 | 输出 Round 4 评估报告 + 投票 | [Done: council/BackendArchitect] |
P0 修正(Round 4)
| 原问题 | Round 3 状态 | Round 4 修正 |
|---|---|---|
P0-1 getSoldSeats() 方法缺失 |
致命 | ❌ 已消除 — GetSeatMap() 已含库存,无崩溃 |
P0-2 Hook plugins_service_goods_data 未注册 |
致命 | ⚠️ 降级 P1 — UniApp 可用 /seatmap 变通绕过 |
P0-3 Index.php:soldSeats 触发 Fatal Error |
致命 | ❌ 已消除 — Index.php 无 soldSeats action |
最终优先级
| 优先级 | 任务 | 预计工时 | 收益 |
|---|---|---|---|
| P1-A | Hook 注册 + InjectGoodsDetailData() |
30min | 解锁 UniApp 完整票务链路 |
| P1-B | api/Goods.php::detail() 注入 VR 数据 |
20min | 与 Hook 注册二选一 |
| P2 | Phase 4 Tree API buildTree() |
待定 | Tree VR 体验 |
| P3 | Phase 4 完整 Tree 体验 | 待定 | VR 差异化功能 |
投票结果
投票:A — 后端优先
理由:
- Hook 注册约 30 行代码,解决 Gap 1,解锁 UniApp 完整票务链路
- Round 4 确认:seatmap API 已完整,无运行时崩溃
- Gap 2 已消除,后端链路完整
- UniApp 可用方案 B(先 /seatmap 后 /detail)立即变通绕过 Gap 1
- Phase 4 是体验增强,不应作为主攻方向
输出
- 评估报告(Round 4 更新版):
docs/council-eval-backendarchitect.md - 投票:`docs/council-eval-backendarchitect.md#五投票