fix: 任务执行前检查 Android 设备连接 (#84)

This commit is contained in:
chengma
2026-08-10 09:35:46 +08:00
parent dee9f34035
commit e7fb06d7aa
11 changed files with 360 additions and 25 deletions
+9 -7
View File
@@ -322,13 +322,15 @@ Client 与 Admin 的任务交互只有三种调用:领一个任务、提交结
### 任务领取与执行
1. 调用 Admin `claim` 领一个任务;返回 204 表示暂时没活,按轮询周期退避后再试。
2. Client 持久化任务,状态置 `claimed`。
3. 根据 `task_type` 分派给采集或采购执行器。
4. 工作线程执行,持续更新 `current_step`(只写本地,不上报 Admin)。
5. 完成后在同一事务里写入结果与 Outbox,状态置 `result_pending`。
6. Outbox 提交成功、Admin 返回 `accepted: true` 后标记 `succeeded`。
7. 回到第 1 步领下一个任务。**同一时间只做一个任务。**
1. 优先补交一条本地 Outbox。提交结果不依赖 Android 设备。
2. 没有待提交结果时,在工作线程通过 ADB 检查已保存设备号是否仍为 `device` 状态。检查失败立即停止,不执行本地任务,也不领取新任务。
3. 执行最早的本地待处理任务;没有本地任务时才调用 Admin `claim`。返回 204 表示暂时没活,按轮询周期退避后再试。
4. Client 持久化新领取的任务,状态置 `claimed`。
5. 根据 `task_type` 分派给采集或采购执行器。
6. 工作线程执行,持续更新 `current_step`(只写本地,不上报 Admin)。
7. 完成后在同一事务里写入结果与 Outbox,状态置 `result_pending`。
8. Outbox 提交成功、Admin 返回 `accepted: true` 后标记 `succeeded`。
9. 回到第 1 步处理下一轮。**同一时间只做一个任务。**
`TaskDispatcher` 是能力声明的唯一入口。没有可用采购演练 Adapter、没有已保存
Android 设备或本地持久化未准备好时,只声明 `collect`;条件满足时才声明