vr-shopxo-plugin/plan.md

4.3 KiB
Raw Blame History

Plan — VR 演唱会票务小程序 Round 3 执行

版本v3.0 | 日期2026-05-26 | Agentcouncil/BackendArchitect 任务Round 3 评估更新 — 现场代码核查,修正 P0 优先级,投票 A


评估范围

  • Phase 4 Tree API 设计文档完整性 + 可行性
  • SeatMapService + /seatmap API 完整性
  • seatSpecMap 注入商品详情 API 的实现方案Round 3 修正)
  • CartSave extension_data 多座位存储链路Round 3 修正)
  • 后端下一步优先级建议

现状快照Round 3 现场核查)

Phase 4 Tree API

  • 设计文档: docs/PHASE_4_API.md + PLAN_TREE_API_IMPLEMENTATION.md(父仓库 commit 40a9b0ad1
  • SeatSkuService.php(实际名): 存在,含 GetGoodsViewData() + buildSeatSpecMap()
  • SeatMapService.php(设计名): 不存在(命名混淆)
  • api/ 目录Worktree 未纳入 Git 追踪(父仓库有 Goods.php
  • 状态:设计完整,代码仅部分复用逻辑,命名混淆 + api 目录未追踪

SeatMapService + seatmap APIRound 3 修正)

  • index/Index.php::soldSeats 存在,路由正常
  • SeatSkuService::getSoldSeats() 方法完全缺失(致命)
  • 关键修正Index.php:43 调用不存在的方法,所有直接调用 soldSeats API 的客户端都会触发 PHP Fatal Error
  • H5 绕过正确(不走 API但 UniApp/第三方 调用会崩溃
  • api/Goods.php::seatmap()(父仓库):⚠️ 引用不存在的 SeatMapService::GetSeatMap()
  • 命名混淆:设计文档说 SeatMapService,实际类名是 SeatSkuService

seatSpecMap 注入商品详情Round 3 一致)

  • Goods.php 硬编码调用 — H5 已工作(直接调用 GetGoodsViewData()
  • Hook plugins_service_goods_data 未在 Hook.php 中注册
  • UniApp 调用 api/goods/detail API — Gap 1 仍成立
  • 结论Gap 1 致命且成立

CartSave extension_dataRound 3 修正)

  • H5 链路 ticket_detail.html:762 已实现(extension_data 嵌套在 order_base
  • TicketService::onOrderPaid() 逐行生成票(多座位已支持)
  • 结论:Gap 2 已消除UniApp 只需复刻 H5 的 JSON 格式,后端无需额外改动

BackendArchitect 评估任务

Task 内容 状态
B1 Phase 4 Tree API 设计文档评估 [Done: council/BackendArchitect]
B2 SeatMapService + seatmap API 完整性检查 [Done: council/BackendArchitect] — P0 崩溃发现
B3 seatSpecMap 注入方案设计 [Done: council/BackendArchitect] — Hook 注册即可
B4 CartSave extension_data 多座位链路分析 [Done: council/BackendArchitect] — Gap 2 已消除
B5 输出 Round 3 评估报告 + 投票 [Done: council/BackendArchitect]

待执行任务Round 3 更新 — P0 → P1 → P2 排序)

P0 — 立即修复2h 内完成)

Task 内容 依赖 状态
P0-1 实现 SeatSkuService::getSoldSeats() [To Claim: council/BackendArchitect]
P0-2 注册 plugins_service_goods_data Hook + InjectGoodsDetailData() [To Claim: council/BackendArchitect]

P1 — 短期完善

Task 内容 依赖 状态
P1-1 api/ 目录纳入 Git 追踪 + 修复 SeatMapService 命名混淆 P0-2 [To Claim]
P1-2 统一 SeatMapService / SeatSkuService 命名 P1-1 [To Claim]
P1-3 完善 Phase 4 Tree API 文档API 契约) [To Claim]

P2 — 可延后

Task 内容 依赖 状态
P2-1 Phase 4 Tree API 实现(buildTree() P1-1 [To Claim]
P2-2 实时座位锁定机制SKIP LOCKED P0-1 [To Claim]

投票结果

投票A — 后端优先

理由:

  1. getSoldSeats() 实现30 行)修复运行时崩溃,解锁 UniApp soldSeats API
  2. Hook 注册10 行)解锁 UniApp 商品详情 APIGap 1
  3. Gap 2CartSave已消除后端无额外改动需求
  4. Phase 4 不应前置,应在 P0/P1 稳定后作为独立任务启动

输出

  • 评估报告(更新版):docs/council-eval-backendarchitect.md
  • 投票:docs/council-eval-backendarchitect.md#五投票