2.3 KiB
2.3 KiB
Phase 2 — 计划与当前状态
版本:v3.0 | 日期:2026-04-20 | 状态:实现准备就绪 关联 Issue:#13 关联文档:
docs/VR_GOODS_CONFIG_SPEC.md(v3.0 JSON 格式,已确认)
⚠️ v3.0 核心变更摘要
- 新增
template_snapshot字段(发布时从vr_seat_templates.seat_map读取并存储) selected_sections保持对象格式{ room_id: ["A","B"] }spec_base_id_map不入库,GetGoodsViewData 从goods_spec_base.extends->seat_key动态构建- 现有前端编辑体验完全不受影响(前端只提交选择项)
完整规格见 docs/VR_GOODS_CONFIG_SPEC.md。
一、vr_goods_config v3.0 结构(已确认)
{
"version": 3.0,
"template_id": 4,
"selected_rooms": ["room_id_xxx"],
"selected_sections": { "room_id_xxx": ["A", "B"] },
"sessions": [{ "start": "15:00", "end": "16:59" }],
"template_snapshot": {
"venue": { ... },
"rooms": [{ "id": "...", "name": "...", "map": [...], "sections": [...], "seats": {...} }]
}
}
详细字段说明见 docs/VR_GOODS_CONFIG_SPEC.md 第一章。
二、实现顺序(Issue #13)
Step 1:AdminGoodsSaveHandle — 保存时填充 template_snapshot
在 save_thing_end 时机,BatchGenerate 之前:
- 用
template_id读取vr_seat_templates.seat_map(最新数据) - 按
selected_rooms过滤(只存用户选中的房间) - 填充
config.template_snapshot
Step 2:BatchGenerate — 写入 extends
insertGetId 中加入 extends.seat_key = roomId_rowLabel_colNum
Step 3:GetGoodsViewData — 重写
- 读
vr_goods_config[0],透传template_snapshot - 从
goods_spec_base.extends动态构建spec_base_id_map selected_sections适配对象格式goods_spec_data按场次聚合
Step 4:ticket_detail.html JS — seatKey 格式
// 改为带 roomId:
var seatKey = seat.roomId + '_' + seat.rowLabel + '_' + seat.colNum;
var specBaseId = self.specBaseIdMap[seatKey] || 0;
三、Phase 2 当前状态
| 任务 | 状态 |
|---|---|
| 模板渲染 | ✅ 正常 |
| 票务 footer | ✅ 已精简 |
| Issue #13 实现(v3.0 落地) | ⚠️ 待动手 |
| 核销 API | ❌ 未开始 |
| 后台 4 控制器联调 | ❌ 未开始 |