feat: 移除 Client 真实采购手工授权 (#114)

This commit is contained in:
chengma
2026-08-10 18:37:35 +08:00
parent 8188153b08
commit 10bb892e6c
29 changed files with 124 additions and 702 deletions
+6 -5
View File
@@ -211,8 +211,8 @@ POST /api/v1/client/tasks/claim
Client 的 `HttpAdminGateway.claim_next` 已实现本接口,并原样序列化应用层已经
安全确认的 `ClaimCapabilities`。没有采购 Adapter 或设备未准备好时只声明
`supported_types: ["collect"]`;条件满足时声明 `collect,purchase`。只有设置页
授权同时匹配当前 Client ID、已保存 Android 设备且 live Adapter 就绪时才声明
`supported_types: ["collect"]`;条件满足时声明 `collect,purchase`。Client 不发送手工
真实采购启用请求;当前 Client 身份有效、已保存 Android 设备且 live Adapter 就绪时自动声明
`purchase_mode: "live"`,其他情况均为 `dry_run`。一次调用最多领取一个任务,结果或失败通过
本页 §6 或 §7 提交,完整请求会先进入本地 Outbox。
@@ -232,7 +232,7 @@ Client 的 `HttpAdminGateway.claim_next` 已实现本接口,并原样序列化
规则:
- `[必须]` 领取必须在 Admin 内部原子完成,一次调用最多返回一个任务。
- `[必须]` Admin 不得向只声明 `dry_run` 的 Client 分配要求真实下单的任务。
- `[必须]` Admin 可以把真实采购任务预先指派给当前账号可见的任意 Client;领取时仍不得把 live 任务返回给只声明 `dry_run` 的 Client。
- `[必须]` `execution_mode` 只允许 `dry_run`、`live`。Admin Web 新建采购任务固定为 `live`;历史任务和接口缺省兼容值仍是 `dry_run`,Client 不得自行把模式从演练提升为真实。
- `[必须]` 声明 `dry_run` 的 Client 只能领取 `dry_run`;声明 `live` 的 Client 可以领取两种模式。能力只缩小可领取范围,不修改任务模式。
- `[必须]` 响应**不包含**租约。Client 拿到任务就开始做,做完再来领下一个。
@@ -247,8 +247,9 @@ Client 的 `HttpAdminGateway.claim_next` 已实现本接口,并原样序列化
| **无主** | 空 | `pending` | **谁先抢到算谁的**,领取时才记下领取者 |
领取还必须同时满足执行能力:`dry_run` Client 永远看不到 `live` 任务;
`live` Client 可以领取 `dry_run` 和 `live`。Admin 当前只允许真实采购任务显式指定
一个已经登记并声明 `purchase_mode: "live"` 的 Client,因此真实任务不会进入无主任务池。
`live` Client 可以领取 `dry_run` 和 `live`。Admin Web 创建真实采购任务时显式指定
当前账号可见的 Client,不要求创建时已经声明 live;未就绪或离线 Client 的任务保持
`assigned`,直到该 Client 自动声明 live 后领取,因此真实任务不会进入无主任务池。
`[必须]` **指定给本机的优先于无主的。** 显式分配是人为决定,应当先兑现;
无主任务谁抢都一样,可以等。