From de8c61879eb831f071999020c2ebe13bfd87fda0 Mon Sep 17 00:00:00 2001 From: chengma Date: Mon, 10 Aug 2026 09:36:45 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?#84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/task/84-任务执行前检查Android设备连接.md | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 docs/task/84-任务执行前检查Android设备连接.md diff --git a/docs/task/84-任务执行前检查Android设备连接.md b/docs/task/84-任务执行前检查Android设备连接.md new file mode 100644 index 0000000..3666db1 --- /dev/null +++ b/docs/task/84-任务执行前检查Android设备连接.md @@ -0,0 +1,58 @@ +# 84 采集采购前检查 Android 设备连接状态 + +- 类型:缺陷 +- 父级大工单:#1 +- 所属 MVP / 版本:#2 Client 可运行任务闭环(MVP) +- 状态:已完成 +- 日期:2026-08-10 +- Gitea 工单: + +## 背景与目标 + +原流程只确认本地保存了 Android 设备号,没有在任务开始前确认对应 USB 或 Wi-Fi 设备仍处于 ADB 可用状态。设备断开时,Client 可能先领取任务或重置重新采集任务,直到 uiautomator2 连接时才发现失败。 + +本任务要求在采集、采购演练和重新采集开始前检查设备连接。检查失败时中断操作,不领取新任务,也不改变重新采集任务的原有数据。 + +## 最终方案 + +- Android 设备服务增加精确设备号检查,只接受 `adb devices -l` 返回的 `device` 状态,并区分未连接、`offline` 和 `unauthorized`。 +- 自动获取仍优先补交 Outbox;没有待提交结果时,先在工作线程检查设备,再执行本地任务或领取 Admin 新任务。 +- 重新采集在用户确认后进入工作线程,先检查设备,再重置任务和创建新执行记录。 +- 设备不可用时停止本轮操作,显示一条持久提示,提供“打开设置”和“关闭提示”;重复提示不会堆叠。 +- 保留运行过程中 uiautomator2 的断线检查。未修改 Admin 接口、数据库结构、`pdd_data` 和采购安全开关。 + +最终实现与建单方案一致。 + +## 改了哪些 + +- `client/src/android_device_service.py`:增加指定设备连接状态检查。 +- `client/src/task_dispatcher.py`:在任务执行和领取前接入检查,同时保留离线 Outbox 补交。 +- `client/src/pdd_ui_event.py`:在后台线程执行检查,并处理中断状态和提示。 +- `client/src/pdd_ui.py`、`client/src/ui_main.py`:增加从设备提示进入设置页的信号和导航。 +- `client/test/`:覆盖 USB、Wi-Fi、离线状态、Outbox、重新采集数据保护、线程和提示交互。 +- `docs/client/02-architecture.md`、`docs/client/05-ui-specification.md`:记录任务顺序和界面规则。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 设备不在 ADB 列表时不领取新任务、不创建执行记录 | 通过 | +| `offline` 或 `unauthorized` 时明确提示并中断 | 通过 | +| USB 或 Wi-Fi 设备处于 `device` 状态时允许继续 | 通过 | +| 设备断开时仍可补交 Outbox | 通过 | +| 重新采集检查失败时保留原任务状态和数据 | 通过 | +| ADB 检查不阻塞 Qt 主线程 | 通过 | +| 提示可打开设置、可关闭且不堆叠 | 通过 | +| 运行期间断线仍由原有设备错误安全停止 | 通过(代码回归) | +| Client 专项测试和全量回归通过 | 通过 | + +## 测试 + +- 执行的命令:`cd client; python -m py_compile src/android_device_service.py src/task_dispatcher.py src/pdd_ui.py src/ui_main.py src/pdd_ui_event.py test/test_android_device_service.py test/test_task_dispatcher.py test/test_purchase_recovery.py test/test_pdd_ui_event.py` +- 执行的命令:`cd client; python -m unittest discover -s test -v` +- 结果:语法检查通过;Client 223 项自动化测试全部通过。 +- **没验证到的部分**:未使用真机人工验证 USB/Wi-Fi 拔线提示、进入设置以及重新连接后再次执行;未执行真实采购、下单或付款。 + +## 相关提交 + +- `e7fb06d` 任务执行前检查 Android 设备连接