[P0] 5维Spec重构:演播室层缺失(场次→场馆→演播室→分区→座位号) #20

Closed
opened 2026-04-21 17:37:00 +00:00 by sileya-ai · 1 comment

问题

当前设计层级是 5 维(场次→场馆→演播室→分区→座位号),但实现只有 4 维,演播室(第3层)完全消失

影响

  • seat_map JSON 是 flat 结构(无 rooms 层)
  • GoodsSpecType 没有 $vr-演播室 记录
  • SPEC_DIMS 只有 4 维
  • buildSeatSpecMap() 无法输出演播室维度
  • GoodsSpecValue 表当前为 0 条(BatchGenerate 未写维度连接)

根因

  • seat_map 缺少 rooms[] 嵌套层
  • GoodsSpecValue 没有被写入(历史遗留问题)
  • $vr-时段 vs $vr-场次 命名不一致

修复目标

将 4 维扩展为 5 维:

$vr-场次 → $vr-场馆 → $vr-演播室 → $vr-分区 → $vr-座位号

详见:docs/PLAN_5DIM_REFACTOR.md


验收标准

  • seat_map JSON 有 rooms[] 结构
  • GoodsSpecType 有 5 条记录(含 $vr-演播室
  • SPEC_DIMS 是 5 维数组
  • buildSeatSpecMap() 输出包含 $vr-演播室 维度
  • 前端有演播室选择器
  • filterSeats() 按 currentRoom 过滤
  • submit() 提交的 spec 数组有 5 个维度
  • BuyService::BuyGoods 能正确处理 5 维 goods_data
## 问题 当前设计层级是 5 维(场次→场馆→演播室→分区→座位号),但实现只有 4 维,**演播室(第3层)完全消失**。 ### 影响 - seat_map JSON 是 flat 结构(无 rooms 层) - GoodsSpecType 没有 `$vr-演播室` 记录 - SPEC_DIMS 只有 4 维 - buildSeatSpecMap() 无法输出演播室维度 - **GoodsSpecValue 表当前为 0 条**(BatchGenerate 未写维度连接) ### 根因 - seat_map 缺少 `rooms[]` 嵌套层 - GoodsSpecValue 没有被写入(历史遗留问题) - `$vr-时段` vs `$vr-场次` 命名不一致 --- ## 修复目标 将 4 维扩展为 5 维: ``` $vr-场次 → $vr-场馆 → $vr-演播室 → $vr-分区 → $vr-座位号 ``` 详见:`docs/PLAN_5DIM_REFACTOR.md` --- ## 验收标准 - [ ] seat_map JSON 有 `rooms[]` 结构 - [ ] GoodsSpecType 有 5 条记录(含 `$vr-演播室`) - [ ] SPEC_DIMS 是 5 维数组 - [ ] buildSeatSpecMap() 输出包含 `$vr-演播室` 维度 - [ ] 前端有演播室选择器 - [ ] filterSeats() 按 currentRoom 过滤 - [ ] submit() 提交的 spec 数组有 5 个维度 - [ ] BuyService::BuyGoods 能正确处理 5 维 goods_data
sileya-ai self-assigned this 2026-04-21 17:37:00 +00:00
Poster
Owner

关键发现

数据库现状

  • GoodsSpecType:4条(goods_id=112),含 $vr-场馆/分区/时段/座位号
  • GoodsSpecValue:0条 ← BatchGenerate 没有写维度连接表!
  • seat_map:flat 结构,无 rooms 层

seat_map JSON 当前结构(需改造)

{
  "venue": {...},
  "sections": [...],   // flat
  "map": [...],         // flat
  "seats": {...}       // flat
}

目标结构

{
  "venue": {...},
  "rooms": [{
    "id": "room_001",
    "name": "主厅",
    "sections": [...],
    "map": [...],
    "seats": {...}
  }]
}

前后端已有 fallback

  • Admin.php:646 已读 $seatMap["rooms"]
  • ticket_detail.html:262 已读 seatMapData.rooms[0].map
  • 只需升级 JSON schema,代码自动兼容

受影响文件

  • SeatSkuService.php — SPEC_DIMS + buildSeatSpecMap + BatchGenerate
  • BaseService.php — 维度默认值
  • Admin.php — seat_map 保存(已有 rooms 支持)
  • ticket_detail.html — 演播室选择器 + filterSeats

DB Migration(当前数据量:1模板,0条 GoodsSpecValue)

  1. 更新 seat_map JSON 加 rooms 层
  2. DELETE + INSERT GoodsSpecType(5条)
  3. 清空 GoodsSpecValue,按5维重建

文档

完整方案:docs/PLAN_5DIM_REFACTOR.md

## 关键发现 ### 数据库现状 - GoodsSpecType:4条(goods_id=112),含 $vr-场馆/分区/时段/座位号 - **GoodsSpecValue:0条** ← BatchGenerate 没有写维度连接表! - seat_map:flat 结构,无 rooms 层 ### seat_map JSON 当前结构(需改造) ```json { "venue": {...}, "sections": [...], // flat "map": [...], // flat "seats": {...} // flat } ``` ### 目标结构 ```json { "venue": {...}, "rooms": [{ "id": "room_001", "name": "主厅", "sections": [...], "map": [...], "seats": {...} }] } ``` ### 前后端已有 fallback - Admin.php:646 已读 `$seatMap["rooms"]` - ticket_detail.html:262 已读 `seatMapData.rooms[0].map` - 只需升级 JSON schema,代码自动兼容 ### 受影响文件 - `SeatSkuService.php` — SPEC_DIMS + buildSeatSpecMap + BatchGenerate - `BaseService.php` — 维度默认值 - `Admin.php` — seat_map 保存(已有 rooms 支持) - `ticket_detail.html` — 演播室选择器 + filterSeats ### DB Migration(当前数据量:1模板,0条 GoodsSpecValue) 1. 更新 seat_map JSON 加 rooms 层 2. DELETE + INSERT GoodsSpecType(5条) 3. 清空 GoodsSpecValue,按5维重建 ### 文档 完整方案:`docs/PLAN_5DIM_REFACTOR.md`
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: sileya-ai/vr-shopxo-plugin#20
There is no content yet.