feat(tasks): implement atomic claims and leases

This commit is contained in:
QiuSW
2026-07-26 16:16:36 +08:00
parent 49db5b8305
commit ce875af889
50 changed files with 7589 additions and 207 deletions
+16 -7
View File
@@ -15,7 +15,7 @@
## 二、用户角色
- **采购管理员**:创建、查看、取消尚未执行的任务并查看执行结果。
- **采购管理员**:创建、查看、取消未执行任务,或请求执行中任务安全停止,并查看结果。
- **采购执行员**:在 App 上检查设备状态、手动领取、执行和人工确认任务。
- **设备身份**:代表一台获得授权的 Android 设备领取任务和上报状态。
- **系统管理员/审核员**:目标架构角色,MVP 不提供完整管理界面。
@@ -38,7 +38,7 @@
| 功能 | 说明 | 阶段 |
| --- | --- | --- |
| 完整 RBAC | 采购管理员、执行员、审核员和系统管理员的细粒度权限。 | V2 |
| 多设备调度 | 设备心跳、任务队列、租约回收和容量调度。 | V2 |
| 多设备容量调度 | 在当前原子领取/租约基础上增加优先级、容量、运营监控和跨实例调度。 | V2 |
| 后台通知 | WebSocket/厂商推送只通知有任务,App 仍通过 claim 领取。 | V2 |
| 订单提交审批 | 在金额、店铺和品类规则内,经人工审批后允许提交订单。 | V2,需单独安全评审 |
| 多平台比价 | 淘宝、1688、京东等平台。 | V3 |
@@ -50,10 +50,11 @@
2. 数量必须是正整数;最高商品总预算如填写,必须大于零。总预算表示当前任务全部
数量的商品金额上限,不包含尚无法可靠确认的运费、优惠或支付金额。
3. SKU、数量和最高商品总预算以管理员输入为准,模型不得更改。
4. 一台设备同一时间最多有一条 `CLAIMED` 或 `RUNNING` 任务。
4. 一台设备同一时间最多有一条未过期 `CLAIMED` 或任意
`RUNNING/WAITING_CONFIRMATION` 任务。
5. 一条任务同一时间只能被一台设备持有;重复点击不能产生重复领取。
6. App 未就绪时不能开始:无障碍未授权、拼多多未安装、设备离线或已有运行任务都
必须说明原因。
6. App 未就绪时不能领取:无障碍未连接、拼多多未安装、设备 heartbeat 过期或已有
活跃任务都必须说明原因。
7. 遇到验证码、登录失效、风控提示、页面未知、预算不满足或模型低置信度时停止,
不猜测点击。
8. MVP 的“成功”表示完成验证闭环并得到人工确认的候选结果,
@@ -67,7 +68,14 @@
普通日志;禁用用户或设备后,已有凭证必须立即失效。
13. 管理登录和 App token 登录必须在高成本密码校验前按服务端观察到的来源地址限流;
超限返回通用错误和重试时间,不得泄露账号、角色或设备是否存在。
14. 管理员创建和取消任务时,任务事件必须记录真实 ADMIN actor;历史事件允许为空。
14. 管理员创建/取消和 App 状态迁移必须记录真实 user actor;设备操作还必须记录
device actor。heartbeat 不写高频事件;历史事件允许 actor 为空。
15. claim token 由 App 在请求前生成并安全保存,必须与幂等 key 独立;数据库只保存
SHA-256,API 和日志不得回显原值或 hash。
16. `CLAIMED` 租约过期后可以被原子回收;`RUNNING/WAITING_CONFIRMATION` 租约
过期后不得自动回到队列,避免失联设备与新设备重复执行。
17. 管理取消 `PENDING/CLAIMED` 可立即终态;执行中只设置取消请求,必须等 App 在
安全检查点确认停止后才能进入 `CANCELED`。
## 六、第一层本地样本约定
@@ -110,7 +118,8 @@ T-004 已固定首版规则:推荐私有目录为被 Git 忽略的 `private-fi
- F-002/US-002/IX-003:状态变化后管理页面能看到最新阶段、时间、设备、候选摘要
或结构化错误;无权限用户不可访问。
- F-003/US-003/IX-005:App 点击“获取任务”后原子领取一条任务;重复点击或多请求
不得领取第二条或把同一任务分配两次。
不得领取第二条或把同一任务分配两次。T-205 已完成后端 heartbeat、原子 claim、
client-generated token 安全重放、参考图授权和租约;Android 接入属于 T-206。
- F-004/US-004/IX-006:解析结果包含搜索词、识别属性、预算、数量、置信度和警告;
原始输入保留,硬约束与输入一致。T-103 已实现版本化 schema、0.75 置信阈值、
冲突转人工以及 SKU/数量的本地确定性回填;当前样本未提供预算,因此预算保持空。