# P0-6 临时守卫 + 沙箱收口后正式重设计 — 记录 > 日期:2026-05-04 / 触发:Neo 在 P0 反馈"我同意,但要记录下来" ## 一、问题简述 `clearAllTasks` 高危操作(`DELETE /api/admin/task-engine/clear-all-tasks`)无运行模式守卫,任何 super_admin 可点。文档明文标"测试用",但代码无 sandbox 判断。 详细业务故事见 [`04a-conflicts-P0-detail.md` § P0-6](../04a-conflicts-P0-detail.md#p0-6-clearalltasks-高危操作无运行模式守卫)。 ## 二、Neo 决策 **两阶段方案**: ### 阶段 1 — 临时止血(立即,Wave 1-3 任意时点) - 工作量:**1h** - 范围:admin-web `TriggerJobs.tsx` 顶部 danger 按钮加"二次确认弹窗 + 输入门店简称" - 后端不动(沙箱模式还未上线,沙箱判断暂时不需要) ### 阶段 2 — 沙箱收口后正式重设计(等 P0-7 完成) - 工作量:**3-5h** - 触发条件:P20 SPEC 实施完成 + Wave 1 沙箱走查通过 - 范围: - 把"清空"语义拆为 **"全局清空"**(live 数据)和 **"沙箱内清空"**(按 `runtime_mode='sandbox' AND sandbox_instance_id=?`) - 后端加 `?scope=live|sandbox|both` query param - 后端在 live 模式下默认拒绝 `scope=live`(必须显式参数 `confirm=DROP_ALL_`) - 前端按当前 runtime_context 联动 disabled / 显示哪个清空选项 ## 三、与其他主题的关系 - **依赖** P0-7 沙箱收口完成(明确 `runtime_mode` + `sandbox_instance_id` 字段语义) - **关联** P20 SPEC §11.3 已指向 `P0-7-runtime-context-todos.md`,本记录可作为 todos 的子项 - **不阻塞** Wave 1 主线工作 ## 四、待办状态 - [ ] 阶段 1 临时止血(Wave 1-3 任意时点) - [ ] 阶段 2 正式重设计(等 P0-7 收口后) ## 五、给 Neo 的提醒 P0-7 收口完成后,需要: 1. 在 P20 SPEC § 7 安全 / 权限模型 中明文写出 `clearAllTasks` 在 live 与 sandbox 下的不同行为 2. 在 admin-web RuntimeContext 页加一个"危险操作历史日志"展示哪些 sandbox 实例曾触发 clearAllTasks 3. 把本文件状态从"记录"改为"已完成",归档到审计 --- > 本文件不替代代码实施,仅作为记录,等待 Wave 1-3 / P0-7 收口后执行。