vr-shopxo-plugin/docs/council-eval-frontenddevelo...

157 lines
5.9 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 评估报告 — FrontendDeveloper
> 评估时间2026-05-26
> 评估人FrontendDeveloper
> 议题:下一步主攻方向
---
## 一、现状评估
### vr-shopxo-uniapp 前端状态
**goods-vr-ticket 组件**:任务描述称"council draft 刚完成",但 `~/WorkSpace/vr-shopxo-uniapp/components/` 下不存在 `goods-vr-ticket/` 目录。fork 完成但票务组件**尚未建立**。
**ShopXO H5 票务详情页**ticket_detail.html819行
- 核心结构存在:规格选择、座位选择、提交购票
- `loadSoldSeats()` 函数TODO 注释,**未实现**Plan.md P5 级遗留问题)
- 观演人表单存在submission 逻辑存在
- 可作为过渡方案独立推进
**UniApp 整体状态**
- 基础框架已搭建manifest.json, pages/, common/
- 支付、购物车、用户等基础组件已有
- 票务相关页面和组件:**空白**
---
## 二、发现的 3 个 P0 API Gap 对前端的影响
### Gap 1seatSpecMap 后端未返回P0 - 阻塞选座功能)
**影响**:选座 UI 的数据源缺失。
- 前端无法知道「场次 → 演播室 → 分区 → 座位」层级
- 无法渲染座位地图的规格树
- SeatMapService 已有 `buildSeatSpecMap()`,但未注入商品详情 API
**前端影响评级**:🔴 **致命阻塞** — 无 seatSpecMap选座组件完全无法开发
**可替代方案**ticket_detail.htmlH5通过 PHP 直接渲染,不走 API可绕过此 Gap
### Gap 2CartSave extension_data 多座位链路未确认P0 - 阻塞下单流程)
**影响**:多座位下单时观演人信息存储路径未知。
- 前端不知道每个座位的 attendee 信息应该放在 `goods_data` 的哪个字段
- 支付成功后的票生成逻辑依赖此链路
**前端影响评级**:🟠 **重度阻塞** — 单座位流程勉强可猜解,多座位完全无法开发
**可替代方案**:目前先按单座位模式开发,多座位延后
### Gap 3QR payload 缺少 code 字段P1 - 可变通处理)
**影响**:前端按文档解析 QR 会缺字段。
- 可变通:先用 `id``g` 验过期时间,`code` 字段前端忽略
- 后端 QR 验签不依赖前端处理,前端只需展示 QR 码
**前端影响评级**:🟡 **中度影响** — 不阻塞开发,可快速适配
---
## 三、前端开发路径建议
### 路径 AH5 优先(无阻塞,可立即启动)
ticket_detail.htmlH5绕过 API Gap 价值最高:
1. PHP 直出 HTML选座逻辑内联不依赖 seatSpecMap API
2. 后端已实现 `SeatSkuService::GetGoodsViewData()`,数据已注入模板
3. 可立即推进:`loadSoldSeats()` 实现、核销码展示、观演人表单美化
4. 作为生产兜底uniapp 延期时 H5 可先上线
**执行步骤**
1. 实现 `loadSoldSeats()` — 调用 seatmap API 获取已售座位,填充 soldSeats 数组
2. 优化观演人表单 UX
3. 核销码展示QR + 短码)
### 路径 BUniApp 选座组件开发(需等 Gap 1 解决)
Gap 1 解决后UniApp 可完全独立推进:
1. goods-vr-ticket 组件框架
2. 商品详情页 → 票务扩展信息渲染
3. 选座页(依赖 seatSpecMap
4. 购票确认页(单座位先验)
5. 票夹页(依赖 TicketWallet API
6. 核销页
**执行步骤Gap 1 解决后)**
1. goods-vr-ticket 组件基础框架
2. 商品详情页集成 seatSpecMap
3. 选座页 + 座位地图渲染
4. 购票确认 + 支付
---
## 四、ticket_detail.html 价值评估
**过渡方案价值:高**
| 维度 | 评分 | 说明 |
|------|------|------|
| 功能完整性 | 7/10 | 核心流程已有loadSoldSeats 缺失 |
| 开发成本 | 低 | PHP 直出,无需前后端分离适配 |
| 用户体验 | 5/10 | 观演人表单粗糙,无选座动画 |
| 独立部署 | 可 | 嵌入 ShopXO H5 模板体系 |
**结论**ticket_detail.html 是 **H5 端票务的唯一载体**,必须维护好。与 UniApp 是互补关系而非竞争关系。
---
## 五、优先级建议(前端维度)
### P0必须先做
1. **Gap 1 确认**:后端在商品详情 API 注入 seatSpecMap解锁 uniapp 选座开发
2. **Gap 2 确认**CartSave extension_data 写入 order_detail 的路径文档化
### P1H5 优先,可立即执行)
1. 实现 `loadSoldSeats()` — 调用 `/seatmap` API 获取已售座位
2. ticket_detail.html 观演人表单 UX 优化
3. 核销码展示组件QR 图 + 短码)
### P2Gap 1 解决后启动)
1. UniApp goods-vr-ticket 组件框架搭建
2. UniApp 商品详情页集成 seatSpecMap
---
## 六、投票
### 议题:下一步主攻方向
**投票C — 双线并行**
**理由**
- H5 ticket_detail.html 完全独立于 API Gap可立即推进实现 loadSoldSeats + 表单优化)
- UniApp 的 Gap 1seatSpecMap和 Gap 2extension_data需要后端配合但可并行确认
- 选项 A纯后端优先会让前端空等选项 BH5 优先)忽视 Uniapp 的长期价值
- 选项 DPhase 4 优先属于锦上添花Phase 3 核心票务流程尚未完成
**补充 — 对其他成员提案的评估**
- **BackendArchitect 选 A**合理Gap 1 和 Gap 2 确实是阻塞点。但纯后端优先会让前端团队空转。
- **PerformanceBenchmarker**seatmap API 性能影响选座体验,建议在 Phase 2 开发时做基准测试。
- **SecurityEngineer**:支付链路安全是 P0但与前端并行不冲突。
---
## FrontendDeveloper 投票
**议题:下一步主攻方向**
**投票C — 双线并行**
**理由**H5 ticket_detail.html 可无阻塞立即启动loadSoldSeats 实现、表单优化UniApp 开发需等 Gap 1/2 确认,但后端可并行完成这两项。双线并行最大化资源利用率,避免前端空等。
**补充**
- 选 A后端优先会损失 1-2 周前端开发时间
- 选 BH5 优先):忽视 UniApp 长期价值,是过渡而非目标
- 选 DPhase 4 优先Tree API 是锦上添花,核心票务流程未完成