feat(t206): connect Android procurement tasks

This commit is contained in:
QiuSW
2026-07-27 11:11:16 +08:00
parent 9e698c1b6c
commit 45b66eeea7
35 changed files with 2634 additions and 81 deletions
+13 -5
View File
@@ -314,20 +314,28 @@ CLAIMED/RUNNING/WAITING_CONFIRMATION
规则:
- `SUCCEEDED` 是验证结果成功,不代表已下单;`order_submitted=false`。
- `CLAIMED` 默认租约为 10 分钟;T-206 将 `RUNNING/WAITING_CONFIRMATION` 默认
授权从当前 90 秒扩展为 30 分钟,允许范围 5 至 120 分钟。App 每 30 秒
best-effort heartbeat,成功后按服务端时间滑动续期。
- `CLAIMED` 默认租约为 10 分钟;`RUNNING/WAITING_CONFIRMATION` 默认授权为
30 分钟,允许范围 5 至 120 分钟。App 每 30 秒 best-effort heartbeat,成功后
按服务端时间滑动续期。
- 只有当前设备和有效 claim token 能启动、续租、上报或结束任务。
- 终态不可回退;重试创建新的 execution attempt,不篡改历史证据。
- App 在 claim 前生成并安全保存 256 bit Raw URL token;后端只存 SHA-256,
token 与 `Idempotency-Key` 相互独立。
- 过期 `CLAIMED` 可以原子回收;过期 `RUNNING/WAITING_CONFIRMATION` 保持原状态,
不自动回队列。App 到达服务端授权截止时间必须安全停止,但原设备可以在重连后
补报已产生的终态结果并留下过期补报审计标志。
不自动回队列。App 到达服务端授权截止时间持久化 `SAFE_STOPPED` 并停止前台
执行;原设备重连 heartbeat 只同步状态且不延长已过期授权。T-207 才允许原设备
补报授权内已产生的终态结果并留下过期补报审计标志。
- 管理取消 `PENDING/CLAIMED` 立即终态;执行中只设置停止请求,App 在下一个安全
检查点停止并调用 `cancel-ack` 后才进入 `CANCELED`。离线期间不能保证即时取消,
App 恢复连接后必须先同步取消状态再继续页面动作。
T-206 Android 使用独立 `ProcurementSecureStore` 保存 backend URL、BUYER access
token、设备 secret、claim token、各操作幂等 key、任务快照和 execution。存储创建
失败时整个后台采购入口 fail closed,不回退普通 `SharedPreferences`。登录密码只
存在于当前 Compose 输入和一次请求中;后台任务不能读取或修改 Roubao provider。
`HttpTaskSource` 只把已领取任务和经过 MIME/JPEG/大小/SHA-256 校验的内部参考图
映射为现有 `ProbeTask`,不参与领取策略。
### 4.2 Android 工作流状态
```text