council(draft): BackendArchitect - plan for frontend template research Q1-Q4

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
council/BackendArchitect
Council 2026-04-20 23:10:43 +08:00
parent ccf0fbb309
commit bed933e8df
1 changed files with 68 additions and 37 deletions

105
plan.md
View File

@ -1,57 +1,88 @@
# Plan — 场馆删除后规格重复(幽灵 spec根因调研 # Plan — ShopXO 酷炫前端模板实现方案调研
> 版本v1.0 | 日期2026-04-20 | Agentcouncil/BackendArchitect > 版本v1.0 | 日期2026-04-20 | Agentcouncil/BackendArchitect
> 任务:调研「场馆删除后编辑商品出现规格重复错误」问题 > 任务:调研 Q1-Q4 四个方向,给出可执行结论,输出 council-research-output.md
--- ---
## BackendArchitectTask B1-B6 ## 调研任务分配
- [x] [Done: council/BackendArchitect] **Task B1**: AdminGoodsSaveHandle.php 全链路追踪 — vr_goods_config 读取/解析/snapshot 重建 | 问题 | 负责人 | 依赖 |
- [x] [Done: council/BackendArchitect] **Task B2**: spec_base_id_map 如何被转换成规格项(已验证:存储在模板表,与幽灵 spec 无关) |------|--------|------|
- [x] [Done: council/BackendArchitect] **Task B3**: SeatSkuService GetGoodsViewData 模板不存在时的 fallback单模板处理多模板有缺陷 | Q1: ShopXO 自定义模板最佳实践 | council/FrontendDev | 无 |
- [x] [Done: council/BackendArchitect] **Task B4**: 幽灵 spec 产生环节 + 清理时机(保存时未清理,写回 DB | Q2: 单订单多 SKU 支持 | council/BackendArchitect | 无P2 是 Q4 前提) |
- [x] [Done: council/BackendArchitect] **Task B5**: 商品保存规格去重逻辑GoodsService.php:1859 | Q3: 第三方无代码构建提示词策略 | council/ProductManager | Q1 完成后 |
- [x] [Done: council/BackendArchitect] **Task B6**: 根因分析报告(含行号)→ `reviews/council-ghost-spec-BackendArchitect.md` | Q4: uni-app 兼容性技术栈选型 | council/FrontendDev | Q1 + Q2 完成后 |
--- ---
## 根因结论 ## BackendArchitect 调研任务B1-B3
| 优先级 | 根因 | 文件:行号 | - [ ] [Claimed: council/BackendArchitect] **Task B1**: Q2 核心调研 — ShopXO 标准订单模型是否支持单订单多 SKU
|--------|------|-----------| - 分析 `sxo_order_detail` 表结构goods_id + spec_ids 组合)
| **P1** | 无效 config 块未从数组移除,`continue` 后脏数据写回 DB | AdminGoodsSaveHandle.php:88-89 + 148-150 | - 分析 `OrderService.php` / `Order.php` 中的下单入口参数
| **P2** | GetGoodsViewData 单模板模式,多模板时覆盖有效块 | SeatSkuService.php:368 + 386-388 | - 分析 vr_ticket 插件是否自定义了订单创建逻辑
| **P3** | BatchGenerate 对无效 template_id 返回 code=-2阻断保存 | AdminGoodsSaveHandle.php:164-170 | - 验证多 SKU 下单的触发条件(购物车 vs 直接购买)
| **P4** | 前端过滤后 configs 为空时用户无声失去配置 | AdminGoodsSave.php:196-229 | - [ ] [Claimed: council/BackendArchitect] **Task B2**: Q2 最小改动方案设计
| **P5** | loadSoldSeats 未实现TODO 注释) | ticket_detail.html:375-383 | - 如果不支持:在现有 vr_ticket 插件中如何扩展 OrderService
- 如果支持:直接使用还是需要配置开关
- [ ] [Claimed: council/BackendArchitect] **Task B3**: 整合输出 → `docs/council-research-output.md` 中的 Q2 章节
--- ---
## 关键文件 ## 调研结论模板(每人填写)
| 文件 | 关注点 | ```
|------|--------| ## QX 结论
| `shopxo/app/plugins/vr_ticket/hook/AdminGoodsSaveHandle.php` | P1 根因continue 不删除脏 config |
| `shopxo/app/plugins/vr_ticket/service/SeatSkuService.php` | GetGoodsViewDataP2 根因,多模板处理缺陷 | ### 核心答案
| `shopxo/app/plugins/vr_ticket/hook/AdminGoodsSave.php` | 前端过滤逻辑P4 体验问题 | (一句话结论)
| `shopxo/app/plugins/vr_ticket/admin/Admin.php` | VenueDelete硬删除逻辑第 888 行) |
| `shopxo/app/plugins/vr_ticket/view/goods/ticket_detail.html` | loadSoldSeats 未实现P5 | ### 证据来源
| `shopxo/app/service/GoodsService.php` | 规格列值去重检测(第 1859 行) | - 文件/行号/官方文档
### 最小可行方案
(什么可以先跑起来)
### 理想方案
(完整实现路径)
### 最大风险点
(识别 1-2 个)
### 优先级与依赖
Q2 是 Q4 的前提 → Q1 结论影响 Q3...
```
--- ---
## 修复方案 ## 阶段划分
### P1 Fix立即实施 | 阶段 | 内容 | 责任人 |
1. AdminGoodsSaveHandle.php:88 — `continue` 改为 `unset($configs[$i])` |------|------|--------|
2. AdminGoodsSaveHandle.php:145 后 — 添加 `$configs = array_values($configs);` | Round 1当前 | 各自调研,形成初步结论 | All |
3. AdminGoodsSaveHandle.php:148 — 写回前加 `if (!empty($configs))` | Round 2 | 合并到 `docs/council-research-output.md`,交叉 Review | All |
4. AdminGoodsSaveHandle.php:158-173 — BatchGenerate 前增加模板存在性显式校验 | Round 3 | 收敛共识FirstPrinciples 拍板未决项 | FirstPrinciples |
### P2 Fix高优先级 ---
1. SeatSkuService.php GetGoodsViewData — 遍历所有有效配置块,不只处理 `$vrGoodsConfig[0]`
2. 修改 DB 写回逻辑为写回 `validConfigs` 而非 `[$config]`
### P3 Fix中优先级 ## 已知关键文件BackendArchitect 参考)
1. AdminGoodsSave.php — configs 为空时提示用户重新选择场馆
| 文件 | 用途 |
|------|------|
| `shopxo/app/plugins/vr_ticket/` | vr_ticket 插件全部代码 |
| `shopxo/app/service/GoodsService.php` | 商品规格解析 |
| `shopxo/app/service/OrderService.php` | 订单创建入口(关键) |
| `shopxo/app/model/Order.php` | 订单模型 |
| `shopxo/app/model/Goods.php` | 商品模型 |
| `shopxo/app/plugins/vr_ticket/view/goods/ticket_detail.html` | 当前前端模板 |
| `docs/02_FRONTEND_CUSTOMIZATION.md` | 已有前端调研存档 |
| `docs/12_UNIAPP_FRONTEND_RESEARCH.md` | uni-app 调研存档 |
| `docs/14_TEMPLATE_RENDER_INVESTIGATION.md` | 模板渲染调查 |
---
## 输出目标
文件:`docs/council-research-output.md`
内容Q1-Q4 各自结论 + 优先级矩阵 + 最小可行 vs 理想方案对比 + 风险点