council(draft): BackendArchitect - plan for frontend template research Q1-Q4
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>council/BackendArchitect
parent
ccf0fbb309
commit
bed933e8df
105
plan.md
105
plan.md
|
|
@ -1,57 +1,88 @@
|
||||||
# Plan — 场馆删除后规格重复(幽灵 spec)根因调研
|
# Plan — ShopXO 酷炫前端模板实现方案调研
|
||||||
|
|
||||||
> 版本:v1.0 | 日期:2026-04-20 | Agent:council/BackendArchitect
|
> 版本:v1.0 | 日期:2026-04-20 | Agent:council/BackendArchitect
|
||||||
> 任务:调研「场馆删除后编辑商品出现规格重复错误」问题
|
> 任务:调研 Q1-Q4 四个方向,给出可执行结论,输出 council-research-output.md
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## BackendArchitect(Task 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` | GetGoodsViewData:P2 根因,多模板处理缺陷 |
|
### 核心答案
|
||||||
| `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 理想方案对比 + 风险点
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue