feat: 增加采集任务重新执行入口 (#63)
This commit is contained in:
@@ -210,7 +210,8 @@ LIMIT :limit OFFSET :offset;
|
||||
|
||||
## 4. `task_runs`
|
||||
|
||||
每次自动执行生成一条记录,任务重试时创建新的 `attempt_no`,不得覆盖历史。
|
||||
每次自动执行或人工确认的重新采集都生成一条记录。任务再次执行时创建新的
|
||||
`attempt_no`,不得覆盖历史。
|
||||
|
||||
```sql
|
||||
CREATE TABLE task_runs (
|
||||
@@ -232,6 +233,7 @@ CREATE TABLE task_runs (
|
||||
error_code TEXT,
|
||||
error_message TEXT,
|
||||
diagnostics_json TEXT,
|
||||
result_data TEXT,
|
||||
artifact_directory TEXT,
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL,
|
||||
@@ -244,6 +246,8 @@ CREATE INDEX idx_task_runs_task
|
||||
```
|
||||
|
||||
`irreversible_action_at` 一旦写入,恢复逻辑不得再次下单,只能核对订单或转人工处理。
|
||||
`result_data` 保存这次成功采集的完整结果;`pdd_tasks.pdd_data` 只保存最新结果。
|
||||
这样重新采集可以更新当前数据,同时仍能按 `attempt_no` 追查旧结果。
|
||||
|
||||
## 5. `outbox_events`
|
||||
|
||||
@@ -424,8 +428,7 @@ CREATE TABLE app_settings (
|
||||
| `retry_wait` 重试等待 | `running` | 退避时间到,**本地直接重跑**,新建 `task_runs` 记录(`attempt_no` 加 1) | 任务协调器 |
|
||||
| `retry_wait` | `failed` | 超过最大重试次数,且从未进入不可逆阶段 | 任务协调器 |
|
||||
| `retry_wait` | `manual_review` | 超过最大重试次数,但**曾经进入过不可逆阶段** | 任务协调器 |
|
||||
| `manual_review` 需要人工 | 不自动变 | 只能由人在 Admin 侧处理;需要再执行时由 Admin 下发新任务 | 人 |
|
||||
| `succeeded` / `failed` / `cancelled` | **终态,不再变化** | — | — |
|
||||
| `manual_review` / `succeeded` / `failed` / `cancelled` | `claimed` | 用户在 Client 明确确认重新采集;仅限采集任务,且没有未发送 Outbox | 人 |
|
||||
|
||||
**注意 `retry_wait` → `running` 是纯本地操作。** 任务已经在本地库里了,重试直接重跑就行,
|
||||
**不需要再向 Admin 要一次**。没有租约,也就没有"重新获取执行权"这回事。
|
||||
@@ -435,9 +438,10 @@ CREATE TABLE app_settings (
|
||||
- `[必须]` 任务只能通过 `claim` 成功进入本地库,不许本地自己造一条 `claimed` 记录。
|
||||
- `[必须]` 只有 `running` 状态才允许操作设备、产生业务执行步骤。
|
||||
- `[必须]` 只有 Admin 返回 `accepted: true` 才能进入 `succeeded`,本地不许自己判定成功。
|
||||
- `[必须]` `manual_review` 不自动重新执行,任何自动流程都不许把它改回 `running`。
|
||||
- `[必须]` 已经是 `succeeded`、`failed`、`cancelled` 的任务,不得被迟到的后台回调改回运行中状态。
|
||||
- `[必须]` `manual_review` 不自动重新执行;只有用户在 Client 明确确认重新采集,才允许先回到 `claimed`。
|
||||
- `[必须]` 已经是 `succeeded`、`failed`、`cancelled` 的任务,不得被迟到的后台回调改回运行中状态;人工确认的重新采集除外。
|
||||
- `[必须]` 每次重试都要新建一条 `task_runs` 记录(`attempt_no` 加 1),不许覆盖上一次的记录。
|
||||
- `[必须]` 采购任务不能从“重新执行”入口启动;重新采集不处理任何采购动作。
|
||||
|
||||
### 7.3 崩溃重启后怎么恢复
|
||||
|
||||
|
||||
Reference in New Issue
Block a user