From 52f11eecdc1ad2d396d347d608d6e45bdd6e95ce Mon Sep 17 00:00:00 2001 From: chengma Date: Fri, 7 Aug 2026 15:55:18 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?#29?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...置页显示-pdd-安装状态并调整设备提示布局.md | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 docs/task/29-设置页显示-pdd-安装状态并调整设备提示布局.md diff --git a/docs/task/29-设置页显示-pdd-安装状态并调整设备提示布局.md b/docs/task/29-设置页显示-pdd-安装状态并调整设备提示布局.md new file mode 100644 index 0000000..d70c04b --- /dev/null +++ b/docs/task/29-设置页显示-pdd-安装状态并调整设备提示布局.md @@ -0,0 +1,69 @@ +# 29 设置页显示 PDD 安装状态并调整设备提示布局 + +- 类型:需求 +- 父级大工单:#1 +- 所属 MVP / 版本:#2 / MVP +- 状态:待验收 +- 日期:2026-08-07 +- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/29 + +## 背景与目标 + +设置页的两个设备状态原来单独占一行,“无线地址”输入和“连接”按钮也没有完整业务实现。保存 Android 设备前没有确认该设备能否执行 PDD 任务。 + +目标是压缩状态信息占用的空间,并在搜索、切换设备和保存时检查所选设备是否安装拼多多。 + +## 最终方案 + +- “当前设备”和“Android 设备”的状态提示移到各自标题同行右侧,仍使用 `CaptionLabel`。 +- 删除“无线地址”输入框和“连接”按钮,原位置显示只读的“PDD 应用”状态。 +- 通过 `adb -s <设备号> shell pm path com.xunmeng.pinduoduo` 判断 PDD 是否安装,不遍历完整应用列表。 +- 搜索完成、勾选设备变化和保存前异步检测;保存前重新检查,避免使用旧结果。 +- 未安装或检测失败时不保存,并保留原有设备配置。 +- 检测继续使用 `QObject + moveToThread`,设备切换后的过期结果不更新界面。 +- 窗口快速关闭时安全清理已经结束或销毁的 Worker。 + +本任务按照 `windows-ui-ux` 的 Qt 状态反馈与长任务规则,采用标题同行的次要状态文本和非模态异步检测;检测期间只限制保存操作,搜索等无关操作仍可使用。 + +## 改了哪些 + +- `client/src/settings_ui.py`:调整标题和状态布局,移除无线地址控件,增加 PDD 状态标签。 +- `client/src/android_device_service.py`:增加指定设备的包安装检测。 +- `client/src/settings_ui_event.py`:增加异步检测、结果防过期、保存拦截和关闭清理。 +- `client/test/test_android_device_service.py`:覆盖已安装、未安装和 ADB 错误。 +- `client/test/test_settings_ui_event.py`:覆盖搜索、切换、保存拦截、检测失败和迟到结果。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 两个状态提示显示在对应标题同行 | 自动检查通过,待界面确认 | +| 保持 `CaptionLabel` 默认字号 | 通过 | +| 删除无线地址输入和连接按钮 | 通过 | +| 显示 PDD 未检测、检测中、已安装、未安装或失败状态 | 通过 | +| 仅查询 PDD 包名,不遍历全部应用 | 通过 | +| 搜索、勾选变化和保存触发检测 | 通过 | +| 未安装或检测失败时不保存 | 通过 | +| 迟到结果不会覆盖当前设备状态 | 通过 | +| 检测不阻塞界面,快速关闭安全 | 通过 | +| 原设备搜索、转 Wi-Fi、保存、删除和恢复测试继续通过 | 通过 | + +## 测试 + +在 `client` 目录执行: + +```powershell +C:/Python310/python.exe -m pytest test -q --tb=short --disable-warnings +C:/Python310/python.exe -m py_compile src/settings_ui.py src/settings_ui_event.py src/android_device_service.py test/test_android_device_service.py test/test_settings_ui_event.py +``` + +并在项目根目录执行 `git diff --check`,使用 `QT_QPA_PLATFORM=offscreen` 创建、显示和关闭主窗口。 + +- 结果:Client 全量 102 项测试通过;语法检查、差异检查和离屏主窗口启动/退出通过。 +- 测试环境仍会输出已有的 PyQt5 字体目录缺失和弃用警告,不影响测试结果。 +- **没验证到的部分**:真机安装 PDD、真机未安装 PDD 两种状态;不同缩放比例、主题和 Narrator 下的最终视觉效果。 + +## 相关提交 + +- `6d863a1` `feat: 检测 Android 设备 PDD 安装状态 (#29)` +