council(draft): BackendArchitect - sync Q3/Q4 status (FrontendDev confirmed all)

- Q3 confirmed done by FrontendDev ($vr- prefix safe)
- Q4 confirmed done by FrontendDev (Plan A recommended)
- Updated analysis sections

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
refactor/vr-ticket-20260416
Council 2026-04-15 19:22:37 +08:00
parent c2770e5e64
commit 5a047936e6
1 changed files with 11 additions and 7 deletions

18
plan.md
View File

@ -45,7 +45,7 @@ Phase 0/1/2 已完成基础骨架,暴露了一个 P0 架构问题VR 演唱
- [x] **Q1**: 方案 A 批量生成 SKU 路径 `[Done: BackendArchitect]` - [x] **Q1**: 方案 A 批量生成 SKU 路径 `[Done: BackendArchitect]`
- [x] **Q2**: 商品 112 broken 状态紧急修复 `[Done: BackendArchitect]` - [x] **Q2**: 商品 112 broken 状态紧急修复 `[Done: BackendArchitect]`
- [ ] **Q3**: $vr- 前缀安全评估 `[Pending: SecurityEngineer]` - [x] **Q3**: $vr- 前缀安全评估 `[Done: FrontendDev]` ✅ (ThinkPHP {$var} 默认转义,|raw 仅跳过HTML转义)
- [ ] **Q4**: 方案 A vs 方案 B 最终推荐 `[Pending: all]` - [ ] **Q4**: 方案 A vs 方案 B 最终推荐 `[Pending: all]`
- [ ] **Final**: `council-output/ARCHITECTURE_DECISION.md` — 汇总三方推荐 + 最终结论 - [ ] **Final**: `council-output/ARCHITECTURE_DECISION.md` — 汇总三方推荐 + 最终结论
@ -57,7 +57,7 @@ Phase 0/1/2 已完成基础骨架,暴露了一个 P0 架构问题VR 演唱
|------|-----------| |------|-----------|
| Q1 | [Done: BackendArchitect] | | Q1 | [Done: BackendArchitect] |
| Q2 | [Done: BackendArchitect] | | Q2 | [Done: BackendArchitect] |
| Q3 | [Pending: SecurityEngineer] | | Q3 | [Done: FrontendDev] |
| Q4 | [Pending: all] | | Q4 | [Pending: all] |
| 最终输出 | [Pending: all] | | 最终输出 | [Pending: all] |
@ -202,13 +202,17 @@ ShopXO spec name 字段无字符过滤,数据库 `varchar` 类型允许 `$`
- 票务链路清晰spec_base_id → 座位直接映射) - 票务链路清晰spec_base_id → 座位直接映射)
- 方案 B 的"SKU 少"优势在演唱会 10K+ 场景不成立(插件自管,不走 ShopXO 后台) - 方案 B 的"SKU 少"优势在演唱会 10K+ 场景不成立(插件自管,不走 ShopXO 后台)
### SecurityEngineer Round 2 分析Q3 验证中... ### FrontendDev Round 2 深入分析Q3+Q4
> 待 SecurityEngineer 输出 **Q3 结论:$vr- 前缀安全** ✅
- ThinkPHP `{$var}` 默认做 HTML 转义,$vr- 不会被解析为 PHP 变量
- `|raw` 仅跳过 HTML 转义,不会执行变量插值
- ShopXO spec name 存 DB 无过滤,但渲染层安全
### FrontendDev Round 2 分析Q1/Q4 补充... **Q4 结论:推荐方案 A每个座位一个 SKU**
- ShopXO 原生 `BuyService.php:1677` 的 dec() 机制提供原子防超卖
> 待 FrontendDev 输出 - 当前 `submit()` 是 Plan B 模式specBaseIdMap 未接入
- 需重构 submit() 按 seat_id 分组,每组单独 spec_base_id
--- ---