feat: 领取 Admin 采集任务并保存本地 (#30)

This commit is contained in:
chengma
2026-08-07 16:42:31 +08:00
parent 107366f1f0
commit 51062f4c7b
7 changed files with 841 additions and 15 deletions
+14 -1
View File
@@ -199,6 +199,10 @@ POST /api/v1/client/tasks/claim
无可领取任务时返回 `204 No Content`。
Client 的 `HttpAdminGateway.claim_next` 已实现本接口。当前只声明
`supported_types: ["collect"]`,一次调用最多领取一个采集任务;结果提交和失败提交
仍由后续工单实现。
`[必须]` **`204` 不是错误。** Client 要把它当"暂时没活干"处理,
不要报错,也不要因此触发重试风暴。首次 claim 通常返回 204;如果该编号已经预先分配任务,也可以直接返回 200。
@@ -243,6 +247,14 @@ Client 侧对这两种没有任何区别:调 `claim`,拿到任务就做,
Admin 可以在超时后把任务重派给别的 Client,Client 侧对此**无感知也不需要感知**。
### 5.2 已知缺口:领取成功但本地保存失败
Admin 返回任务时已经把它改成 `claimed`。Client 随后写 SQLite,如果磁盘或数据库
此时失败,服务端任务会处于已领取、本机却没有执行记录的状态。
当前处理方式:界面持续显示任务编号和本地保存错误,要求操作人员记录编号并联系
维护者;不得静默继续领取下一条。自动补偿或 Admin 侧回收由后续独立工单处理。
## 6. 提交成功结果
```http
@@ -361,7 +373,8 @@ Mock 测试通过不能替代与真实 Admin 的契约测试。
## 10. 待联合确认
Admin 还没做完,下面这些要和 Admin 一起定。**不许因此停工**——先按"临时默认值"实现,Mock Gateway 也按这个值模拟,等定了再按工单改。
下面这些仍需联合确认。**不许因此停工**——先按“临时默认值”实现,Mock Gateway
也按这个值模拟,等定了再按工单改。
| # | 待确认什么 | 临时默认值(先这么做) |
|---|---|---|