From d9493500fbcde2dbf94c4334f80efcc5633bc572 Mon Sep 17 00:00:00 2001 From: Council Date: Wed, 15 Apr 2026 19:14:39 +0800 Subject: [PATCH] council(draft): SecurityEngineer - add Issue #9 architecture decision plan Co-Authored-By: Claude Opus 4.6 --- plan.md | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 77 insertions(+), 1 deletion(-) diff --git a/plan.md b/plan.md index 7a34611..456bb60 100644 --- a/plan.md +++ b/plan.md @@ -330,6 +330,82 @@ Admin 上下文(所有控制器需登录 admin + 插件菜单权限)下访 --- +## Issue #9 — 架构决策:票务 SKU 方案评议 + +> 核心问题:VR 演唱会票务"每个座位一个 SKU"(方案 A)vs "每个 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: NO] — Task S4(审计日志设计)尚未完成;P1 Verifier.php CONCAT bug 已修复但需集成到 main +[CONSENSUS: NO] — Round 1 仅完成规划,Issue #9 研究待 Round 2 执行