feat(t216): deliver recoverable device order commands

This commit is contained in:
QiuSW
2026-07-28 13:23:18 +08:00
parent 75fdc63db2
commit 2372ab2280
32 changed files with 2415 additions and 65 deletions
+18 -8
View File
@@ -4,7 +4,7 @@ title: 设备下单命令投递、确认与恢复
phase: 2
deps:
- T-215
status: DOING
status: DONE
created: 2026-07-28
context_ref: 827afc7
work_branch: null
@@ -127,13 +127,13 @@ v9:
## 验收要点
- [ ] 只有原 user/device/execution/generation/token 且租约有效时能拉取命令。
- [ ] 首次拉取原子进入 `DELIVERED`;网络重放返回相同 command/hash 且不重复事件。
- [ ] App 严格校验并先加密持久化,存储失败不 ACK,重启可恢复同一命令。
- [ ] ACK 幂等进入 `ACKNOWLEDGED`,错误 hash/command/设备和并发请求被拒绝。
- [ ] 后台候选流程等待 Admin,不再允许手机本地选择并提前完成任务。
- [ ] App 等待/已授权状态可见,但不打开拼多多、不选择 SKU/数量、不提交订单。
- [ ] v9 migration、Go test/race/vet、Android test/Debug/Release 和根验证通过。
- [x] 只有原 user/device/execution/generation/token 且租约有效时能拉取命令。
- [x] 首次拉取原子进入 `DELIVERED`;网络重放返回相同 command/hash 且不重复事件。
- [x] App 严格校验并先加密持久化,存储失败不 ACK,重启可恢复同一命令。
- [x] ACK 幂等进入 `ACKNOWLEDGED`,错误 hash/command/设备和并发请求被拒绝。
- [x] 后台候选流程等待 Admin,不再允许手机本地选择并提前完成任务。
- [x] App 等待/已授权状态可见,但不打开拼多多、不选择 SKU/数量、不提交订单。
- [x] v9 migration、Go test/race/vet、Android test/Debug/Release 和根验证通过。
## 边界
@@ -147,3 +147,13 @@ v9:
- 2026-07-28:T-215 实现提交 `827afc7` 后领取。复用现有 30 秒前台 heartbeat 和
Keystore-backed 状态,选择 pull + durable-before-ACK,避免 Android 后台推送和
HTTP 不确定结果造成命令丢失。
- 2026-07-28:新增 v9、命令 pull/ACK API、同一授权重放和投递/确认审计事件。
HTTP 集成覆盖错误 hash、响应丢失后的相同 key 重试、ACK 后恢复拉取、事件不重复
及带数据禁止降级。
- 2026-07-28:Android `1.4.13 (18)` 增加命令 canonical hash 校验、加密持久化、
固定 ACK key、重启恢复和等待/已授权 UI。后台任务有候选后不再出现手机接受/
拒绝入口,也禁止再次采集;空候选仍保留安全终态。
- 2026-07-28:Go/Kotlin 固定哈希向量一致;Android 测试证明存储失败时 ACK 调用数
为 0。`go test ./...`、`go test -race ./...`、`go vet ./...`、Android `test`、
Debug/Release assemble 和根 `.\init.ps1` 全部通过。APK 已构建,未在本任务中
覆盖安装或执行拼多多页面动作。