# vr-shopxo-plugin 编辑器方案调研 — plan.md > 版本:v1.0(Round 1 初稿)| 日期:2026-04-15 | Agent:council/FrontendDev > 背景:ShopXO 票务插件后台编辑器设计方案调研(Q1 JSON 编辑器复杂度评估 + ShopXO DIY 组件参考) --- ## 任务背景 vr-shopxo-plugin 是 ShopXO 票务插件,需要调研后台编辑器设计方案。 **已知 seat_map JSON 结构**: ```json { "map": ["AAAAAA", "BBBBBB", "CCCCCC"], "seats": { "A": { "price": 899, "color": "#e74c3c", "label": "VIP区" }, ... }, "row_labels": ["A", "B", "C"], "sections": [{ "name": "VIP区", "color": "..." }, ...] } ``` venue 字段完全不存在(硬编码 "国家体育馆")。 **引入"场馆"后的嵌套层级**: ``` venue(name/address/image) └── seat_map(map/seats/row_labels/sections/zones) ``` --- ## 核心问题 | # | 问题 | 负责 | |---|------|------| | **Q1** | JSON 编辑器复杂度评估:ShopXO 是否有现成组件?4 层嵌套 Vue3 编辑器实现成本?JSON vs 拆表方案成本对比? | FrontendDev | | **Q2** | 商品发布页替换方案(替换页面)可行性:`plugins_view_admin_goods_save` 能否完全替换表单? | BackendArchitect | --- ## 任务清单 - [ ] **Q1.1**: 调研 ShopXO 后台是否有现成 JSON 编辑器组件(ShopXO DIY 组件) `[Claimed: FrontendDev]` - [ ] **Q1.2**: 评估 4 层嵌套 Vue3 + JSON Schema form 编辑器复杂度(代码量/工时) `[Claimed: FrontendDev]` - [ ] **Q1.3**: JSON 编辑器 vs 拆表方案开发和维护成本对比 `[Claimed: FrontendDev]` - [ ] **Q2**: 商品发布页替换方案可行性(BackendArchitect 并行调研) `[Claimed: BackendArchitect]` - [ ] **Final**: 输出 `council-output/EDITOR_RESEARCH.md` 并给出明确推荐 `[Claimed: FrontendDev]` --- ## 阶段划分 | 阶段 | 内容 | 负责 | |------|------|------| | **Round 1(规划)** | 各自创建 plan.md | 所有成员 | | **Round 2(执行)** | 深入调研 + 代码级确认 | FrontendDev + BackendArchitect | | **Round 3(综合)** | 输出 EDITOR_RESEARCH.md + 最终推荐 | FrontendDev | --- ## 依赖关系 - Q2(BackendArchitect)先完成,后端替换可行性影响前端方案选择 - Q1.1 调研 ShopXO DIY 组件是 Q1.2 的前置 --- ## 调研路径 ### Q1 调研路径(FrontendDev) 1. 检查 `shopxo/` 目录中是否存在 DIY JSON 编辑器组件 - `static/diy/js/entry/index-*.js` — Vue3 SPA 组件 - `custom` 组件类型参考 2. 如果无现成组件,评估 Vue3 + JSON Schema form 实现方案 3. 对比 JSON 单表 vs 拆多表方案的开发和维护成本 ### Q2 调研路径(BackendArchitect) 1. 检查 `app/admin/controller/Goods.php` 中 SaveInfo() 和 Save() 方法 2. 确认 `plugins_view_admin_goods_save` 钩子调用位置和可替换性 3. 验证替换后数据能否正常保存 --- ## Claim 状态 | 任务 | 状态 | |------|------| | Q1.1 | [Claimed: FrontendDev] | | Q1.2 | [Claimed: FrontendDev] | | Q1.3 | [Claimed: FrontendDev] | | Q2 | [Claimed: BackendArchitect] | | Final Output | [Pending: FrontendDev] |