feat: 增加真实采购任务安全模式 (#98)
This commit is contained in:
@@ -193,7 +193,17 @@ POST /api/v1/client/tasks/claim
|
||||
|
||||
```json
|
||||
{
|
||||
"task": {}
|
||||
"task": {
|
||||
"id": "COLLECT-20260810-0001",
|
||||
"type": "collect",
|
||||
"execution_mode": "dry_run",
|
||||
"version": 1,
|
||||
"priority": 10,
|
||||
"payload": {
|
||||
"goods_id": "737116531267",
|
||||
"goods_url": "https://mobile.yangkeduo.com/goods.html?goods_id=737116531267"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@@ -222,6 +232,8 @@ Client 的 `HttpAdminGateway.claim_next` 已实现本接口,并原样序列化
|
||||
|
||||
- `[必须]` 领取必须在 Admin 内部原子完成,一次调用最多返回一个任务。
|
||||
- `[必须]` Admin 不得向只声明 `dry_run` 的 Client 分配要求真实下单的任务。
|
||||
- `[必须]` `execution_mode` 只允许 `dry_run`、`live`。历史任务和缺省值都是 `dry_run`;Client 不得自行把模式从演练提升为真实。
|
||||
- `[必须]` 声明 `dry_run` 的 Client 只能领取 `dry_run`;声明 `live` 的 Client 可以领取两种模式。能力只缩小可领取范围,不修改任务模式。
|
||||
- `[必须]` 响应**不包含**租约。Client 拿到任务就开始做,做完再来领下一个。
|
||||
|
||||
### 5.1 Admin 侧的分配语义
|
||||
@@ -233,6 +245,10 @@ Client 的 `HttpAdminGateway.claim_next` 已实现本接口,并原样序列化
|
||||
| **指定分配** | 某个 Client 编号 | `assigned` | 只有那个 Client |
|
||||
| **无主** | 空 | `pending` | **谁先抢到算谁的**,领取时才记下领取者 |
|
||||
|
||||
领取还必须同时满足执行能力:`dry_run` Client 永远看不到 `live` 任务;
|
||||
`live` Client 可以领取 `dry_run` 和 `live`。Admin 当前只允许真实采购任务显式指定
|
||||
一个已经登记并声明 `purchase_mode: "live"` 的 Client,因此真实任务不会进入无主任务池。
|
||||
|
||||
`[必须]` **指定给本机的优先于无主的。** 显式分配是人为决定,应当先兑现;
|
||||
无主任务谁抢都一样,可以等。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user