feat: 完善采购任务安全恢复 (#73)

This commit is contained in:
chengma
2026-08-10 00:27:52 +08:00
parent d6339a810f
commit c86c7482d9
15 changed files with 786 additions and 12 deletions
+6 -2
View File
@@ -451,14 +451,18 @@ CREATE TABLE app_settings (
| 重启时发现 | 怎么处理 |
|---|---|
| `status = 'running'`,且 `task_runs.irreversible_action_at` **为空** | 说明还没下单,改成 `retry_wait`,正常重试 |
| `status = 'running'`,且 `irreversible_action_at` **不为空** | 说明可能已经下单了。**保持 `running`**,把 `current_step` 改成 `reconcile_order` 去核对订单。核对不到就转 `manual_review`。**任何情况下都不许重新下单** |
| 采集 `status = 'running'` | 改成 `retry_wait`,原执行记录结束为失败 |
| 采购 `status = 'running'`,且 `task_runs.irreversible_action_at` **为空** | 原执行记录先结束为失败,任务改回 `claimed / purchase_recovery_ready`;再次演练必须新建执行记录 |
| 采购 `status = 'running'`,且 `irreversible_action_at` **不为空** | 原执行记录和任务都改成 `manual_review / reconcile_purchase`;只调用只读核对,**任何情况下都不许重新下单** |
| `status = 'claimed'` | 说明领到了还没开始动手,保持不变,等协调器重新调度执行。**不需要再向 Admin 领一次** |
| `status = 'result_pending'` | 不动状态,交给 Outbox 继续重试提交 |
| `outbox_events.status = 'sending'` | 改回 `pending`,让它能被重新发送 |
一句话记住:**`irreversible_action_at` 有值 = 只准查,不准买。**
可重试的设备错误在采购演练中也先进入 `manual_review`,不会因为技术上
“可重试”就隐式重跑采购。这与采集任务的 `retry_wait` 规则不同。
## 8. `pdd_data` JSON
### 8.1 通用商品数据