council(merge): resolve conflict and merge Issue #9 plan

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
refactor/vr-ticket-20260416
Council 2026-04-15 19:14:58 +08:00
commit 85b1575a5c
1 changed files with 77 additions and 1 deletions

78
plan.md
View File

@ -409,6 +409,82 @@ class AuditService
---
## Issue #9 — 架构决策:票务 SKU 方案评议
> 核心问题VR 演唱会票务"每个座位一个 SKU"(方案 Avs "每个 Zone 一个 SKU"(方案 B
### 评议问题清单
| # | 问题 | 优先级 |
|---|------|--------|
| Q1 | 方案 A 后台批量生成 SKU 路径是否可行ShopXO 是否有批量 API | P0 |
| Q2 | 当前商品 112 的 broken 状态is_exist_many_spec=0 + spec_base 空)是否需要紧急修复?最小修复集? | P0 |
| Q3 | $vr- 前缀方案是否有隐患ShopXO 内部是否对 $ 有特殊处理? | P1 |
| Q4 | 方案 A vs 方案 B 最终推荐(实现成本 / 安全性 / 可维护性) | P0 |
### 任务分配
| Agent | 负责问题 | 行动项 |
|-------|---------|--------|
| SecurityEngineer | Q2/Q3/Q4 | 安全评估 + 最终推荐 |
| BackendArchitect | Q1 | SKU 生成路径分析 |
| FrontendDev | Q4 | 前端实现成本评估 |
### 阶段计划
- [ ] **Round 1**(本轮):各 Agent 独立分析 → 更新 plan.md → 合并到 main
- [ ] **Round 2**:执行研究(代码探索 + 分析)→ 输出分析报告到 plan.md
- [ ] **Round 3**Cross-review → 汇总 → 写入 `council-output/ARCHITECTURE_DECISION.md`
### 安全工程师分析SecurityEngineer
#### Q2紧急修复优先级
**当前状态**:商品 112 的 broken 状态is_exist_many_spec=0 + spec_base 空)
- ShopXO 防超卖机制完全未启用
- spec_base_id_map 指向不存在的 DB 记录
**最小修复集**:必须立即修复,但需确认走方案 A 还是 B
- [ ] **Pending** — 方案确定后,填充 spec_base 表(每个 SKU 一行)
- [ ] **Pending** — 设置 is_exist_many_spec = 1
- [ ] **Pending** — 关联 spec_base_id_map 与实际 seat 数据
**结论**Q2 依赖 Q1/Q4 的输出,暂标记为 blocked。
#### Q3$vr- 前缀安全隐患
**已知事实**
- ShopXO spec name 允许特殊字符($、-、中文均无过滤)
- ThinkPHP 模板引擎View可能对 $ 有变量插值行为
**风险点**
- [ ] View 层Tpl 模板中 `{:$spec_name}` 是否会解析 $vr- 作为 PHP 变量?
- [ ] DB 层spec name 入库是否经过转义?
- [ ] API 层spec name 作为 JSON key 时是否安全?
**结论**需要代码验证Round 2 执行)。
#### Q4方案 A vs B 最终推荐
**初步倾向**:方案 A每个座位一个 SKU
**理由**
1. 安全性ShopXO 原生原子扣库存,无需自建锁,超卖风险最低
2. 正确性:与 ShopXO SPEC 机制对齐is_exist_many_spec=1 时原生防超卖生效
3. 可追溯性:每个 SKU 独立订单项,核销链路清晰
**需 Round 2 验证**
- 方案 A 后台 SKU 批量生成是否可行BackendArchitect 输出)
- $vr- 前缀在 View 层是否安全SecurityEngineer 验证)
### 行动项(优先级排序)
1. **[Claimed: council/SecurityEngineer]** Q3 — 验证 $vr- 前缀在 ThinkPHP View 层是否安全Round 2
2. **[Claimed: council/SecurityEngineer]** Q2 — 方案确定后给出最小修复集Round 3
3. **[Pending]** Q4 — 综合输出最终推荐报告Round 3
---
## 共识投票
[CONSENSUS: YES] — 所有 Phase 2 安全任务 S1-S5 全部完成前端视图全部就位P1 导出按钮 bug 已修复Task S4审计日志设计完成。Phase 2 收尾。
[CONSENSUS: NO] — Phase 2 收尾Issue #9 架构决策研究待 Round 2 执行