feat: 安全继续失败采购核单 (#262)

This commit is contained in:
chengma
2026-08-18 09:55:32 +08:00
parent a92b8746b2
commit 5ea8aa3d68
8 changed files with 480 additions and 20 deletions
+1 -1
View File
@@ -103,7 +103,7 @@ Client 首次显示主窗口时使用标准 Windows 最大化状态,不使用
- 点击停止后按钮显示“正在停止…”并禁用重复点击;底部明确说明正在等待手机当前操作结束。uiautomator2/ADB 的单次调用返回后,采集在下一个安全检查点停止;不得强制结束工作线程。
- 重新采集的前置校验警告和后台错误 `InfoBar` 都显示在软件窗口顶部水平居中,并有可见的“关闭提示”按钮;提示 5 秒后自动关闭,同一时间只保留一条,新提示替换旧提示。
- 每次重新采集创建新的执行记录和幂等键;当前结果更新,旧结果保存在历史执行记录中。
- 重新采购逐条串行执行。任一任务未形成“执行、核单、上报”成功闭环时立即停止剩余队列。历史上任何一次执行已有 `irreversible_action_at` 的任务永久禁止重新采购,只能只读核单。
- 重新采购逐条串行执行。任一任务未形成“执行、核单、上报”成功闭环时立即停止剩余队列。历史上任何一次执行已有 `irreversible_action_at` 的任务永久禁止重新下单;处于 `reconcile_manual_review` 的最新不可逆运行可以从同一入口继续一次只读核单。确认框必须分别显示“可重新采购”和“只继续核单”数量,只读核单排在真正重新采购之前,核单不确定时停止剩余队列。
- 用户确认批量操作后立即刷新列表,并在状态区显示已加入队列的数量。排队中的任务保持原状态;
只有工作线程已经把当前任务写成 `running` 后,才通知主线程刷新该行并显示“采集中”或
“采购中”。每条完成、失败、跳过或取消后再次刷新,再开始下一条。
+4 -4
View File
@@ -77,10 +77,10 @@ Admin 新建采购任务固定为真实下单(不支付),Client 不再提
3. 商品编号、标题、规格、数量、库存和价格保护校验通过。
4. 最终下单前后均有持久化步骤标记。
5. 进程在不可逆阶段退出后只执行订单核对,不会重新下单。
6. 批量重新采购永久拒绝历史任一次执行带不可逆标记的任务;当前任务核单不确定时不启动下一条。
6. 订单匹配能识别唯一候选;多个候选进入人工处理。
7. 历史演练模式和真实模式在代表性商品与设备上通过自动化验收。
8. 真实设备首单按独立验收工单执行,并明确停止在支付前。
6. 批量重新采购永久拒绝历史任一次执行带不可逆标记的任务再次下单;`reconcile_manual_review` 只允许恢复原运行继续只读核单,不创建新运行、不调用采购 Adapter,核单不确定时不启动下一条。
7. 订单匹配能识别唯一候选;多个候选进入人工处理。
8. 历史演练模式和真实模式在代表性商品与设备上通过自动化验收。
9. 真实设备首单按独立验收工单执行,并明确停止在支付前。
Client 不保存或读取 `purchase.live_*` 手工授权设置。`purchase_mode` 只表达本次注册或领取时的运行就绪能力:身份、设备或真实采购 Adapter 任一缺失都声明 `dry_run`,全部就绪才自动声明 `live`。演练 Adapter 不提供提交方法,live Adapter 只提供一次性提交方法,两者都不提供付款或取消订单方法。开发者不能把自动化测试通过当成真机验收完成。