增加 PDD 通用商品链接首页跳转诊断脚本 #118

Closed
opened 2026-08-10 19:04:09 +08:00 by ila · 5 comments
Owner

基本信息

  • 类型:诊断工具
  • 父级大工单:#1
  • 所属 MVP/版本:Client 采购自动化辅助诊断
  • 阶段:真机页面导航验证

要解决什么

需要人工验证 Android 系统浏览器打开 https://mobile.yangkeduo.com/goods.html 后,最终是否进入 PDD 首页。当前项目缺少一个可重复、能输出判断证据的独立脚本。

当前本地存在已进入不可逆阶段、等待核单的采购任务。根据安全红线,此时不得将该设备导航到测试页面。因此脚本必须在操作手机前检查本地数据库并拒绝运行。

做什么 / 不做什么

做什么

  • 增加一个可从命令行运行的人工诊断脚本。
  • 接收 Android 设备地址和可选等待秒数。
  • 操作前检查 Client 数据库是否有尚未完成核单的不可逆采购任务。
  • 安全时使用 Android 浏览器 VIEW Intent 打开固定测试网址。
  • 等待后读取当前包名和无障碍控件树。
  • 使用现有 PDD 页面分类器判断 PDD 首页、PDD 其他页面、浏览器或未知页面。
  • 输出便于初级程序员理解的中文结果和必要诊断信息。
  • 增加不连接真机的单元测试。

不做什么

  • 不点击购买、规格、下单或支付按钮。
  • 不绕过微信登录、PDD 登录、验证码或风控。
  • 不在存在不可逆待核单任务时操作手机。
  • 不自动修改任务、订单或数据库状态。
  • 不把本脚本接入正式采购流程。

已确认的实现方案

  1. 新增 client/tools/test_pdd_home_deeplink.py。
  2. 默认读取 client/data/client.db,查询最新运行记录中存在 irreversible_action_at 且未完成核单的任务;存在时打印任务号并退出。
  3. 使用 ADB 的 am start -a android.intent.action.VIEW -d <URL> 启动浏览器/系统链接处理。
  4. 通过 uiautomator2 读取 app_current() 和 dump_hierarchy(),复用现有 classify_pdd_page。
  5. 诊断脚本只输出结论,不保存敏感控件树、不修改数据库。
  6. 测试覆盖安全拦截及页面结论格式,不连接真实手机。

预计修改文件:

  • client/tools/test_pdd_home_deeplink.py
  • client/test/test_pdd_home_deeplink.py
  • 完成后归档 docs/task/<工单号>-PDD通用商品链接首页跳转诊断脚本.md

验收标准

  • 存在不可逆待核单任务时,脚本在任何 ADB/手机操作前退出。
  • 安全时可以指定设备地址运行浏览器 VIEW Intent。
  • 输出当前包名及“PDD 首页/PDD 其他页面/浏览器/未知”中文结论。
  • 不点击购买、下单或支付相关控件。
  • 离线自动化测试通过。
  • 当前待核单任务未被脚本修改。

验证方式

从 client 目录执行:

C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_home_deeplink.py"
C:/Python310/python.exe tools/test_pdd_home_deeplink.py --device 192.168.0.173:5555

第二条真机命令当前预期因不可逆待核单任务而安全退出;完成核单后才允许实际打开网址。

风险和回退

  • 风险:Android 的默认链接处理器可能直接进入 PDD、停留浏览器或弹出应用选择器,所以脚本只报告实测结果。
  • 风险:不能因为固定等待结束就认定页面稳定;最终同时参考当前包名和控件树。
  • 回退:删除独立脚本和对应测试,不影响正式 Client。
## 基本信息 - 类型:诊断工具 - 父级大工单:#1 - 所属 MVP/版本:Client 采购自动化辅助诊断 - 阶段:真机页面导航验证 ## 要解决什么 需要人工验证 Android 系统浏览器打开 `https://mobile.yangkeduo.com/goods.html` 后,最终是否进入 PDD 首页。当前项目缺少一个可重复、能输出判断证据的独立脚本。 当前本地存在已进入不可逆阶段、等待核单的采购任务。根据安全红线,此时不得将该设备导航到测试页面。因此脚本必须在操作手机前检查本地数据库并拒绝运行。 ## 做什么 / 不做什么 ### 做什么 - 增加一个可从命令行运行的人工诊断脚本。 - 接收 Android 设备地址和可选等待秒数。 - 操作前检查 Client 数据库是否有尚未完成核单的不可逆采购任务。 - 安全时使用 Android 浏览器 VIEW Intent 打开固定测试网址。 - 等待后读取当前包名和无障碍控件树。 - 使用现有 PDD 页面分类器判断 PDD 首页、PDD 其他页面、浏览器或未知页面。 - 输出便于初级程序员理解的中文结果和必要诊断信息。 - 增加不连接真机的单元测试。 ### 不做什么 - 不点击购买、规格、下单或支付按钮。 - 不绕过微信登录、PDD 登录、验证码或风控。 - 不在存在不可逆待核单任务时操作手机。 - 不自动修改任务、订单或数据库状态。 - 不把本脚本接入正式采购流程。 ## 已确认的实现方案 1. 新增 `client/tools/test_pdd_home_deeplink.py`。 2. 默认读取 `client/data/client.db`,查询最新运行记录中存在 `irreversible_action_at` 且未完成核单的任务;存在时打印任务号并退出。 3. 使用 ADB 的 `am start -a android.intent.action.VIEW -d <URL>` 启动浏览器/系统链接处理。 4. 通过 uiautomator2 读取 `app_current()` 和 `dump_hierarchy()`,复用现有 `classify_pdd_page`。 5. 诊断脚本只输出结论,不保存敏感控件树、不修改数据库。 6. 测试覆盖安全拦截及页面结论格式,不连接真实手机。 预计修改文件: - `client/tools/test_pdd_home_deeplink.py` - `client/test/test_pdd_home_deeplink.py` - 完成后归档 `docs/task/<工单号>-PDD通用商品链接首页跳转诊断脚本.md` ## 验收标准 - [ ] 存在不可逆待核单任务时,脚本在任何 ADB/手机操作前退出。 - [ ] 安全时可以指定设备地址运行浏览器 VIEW Intent。 - [ ] 输出当前包名及“PDD 首页/PDD 其他页面/浏览器/未知”中文结论。 - [ ] 不点击购买、下单或支付相关控件。 - [ ] 离线自动化测试通过。 - [ ] 当前待核单任务未被脚本修改。 ## 验证方式 从 `client` 目录执行: ```powershell C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_home_deeplink.py" C:/Python310/python.exe tools/test_pdd_home_deeplink.py --device 192.168.0.173:5555 ``` 第二条真机命令当前预期因不可逆待核单任务而安全退出;完成核单后才允许实际打开网址。 ## 风险和回退 - 风险:Android 的默认链接处理器可能直接进入 PDD、停留浏览器或弹出应用选择器,所以脚本只报告实测结果。 - 风险:不能因为固定等待结束就认定页面稳定;最终同时参考当前包名和控件树。 - 回退:删除独立脚本和对应测试,不影响正式 Client。
Author
Owner

状态:进行中。先实现数据库只读安全拦截和离线分类测试;当前存在不可逆待核单任务,因此不实际打开手机网页。

状态:进行中。先实现数据库只读安全拦截和离线分类测试;当前存在不可逆待核单任务,因此不实际打开手机网页。
Author
Owner

实施记录:仓库已有 client/tools/measure_goods_open.py 作为同类真机诊断工具,因此脚本路径调整为 client/tools/test_pdd_home_deeplink.py,避免新增重复的 scripts 目录;功能范围与验收标准不变。

实施记录:仓库已有 `client/tools/measure_goods_open.py` 作为同类真机诊断工具,因此脚本路径调整为 `client/tools/test_pdd_home_deeplink.py`,避免新增重复的 `scripts` 目录;功能范围与验收标准不变。
Author
Owner

实现完成,状态:待验收。

实现提交:ff01f95

结果:

  • 新增 client/tools/test_pdd_home_deeplink.py。
  • 操作手机前只读检查 Client 数据库,不可逆采购未核单时立即退出。
  • 安全时只通过 Android VIEW Intent 打开固定网址,随后读取包名和控件树;不点击任何控件。
  • 输出 PDD 首页、PDD 其他页面、浏览器或无法判断。
  • 专项 4 项、Client 全量 341 项测试通过。
  • 使用当前真实数据库运行时,检测到 PUR-9109e06ee106ef63,在 ADB 页面操作前安全退出;数据库记录未改变。

由于当前任务仍待核单,没有实际打开手机网页。

实现完成,状态:待验收。 实现提交:`ff01f95` 结果: - 新增 `client/tools/test_pdd_home_deeplink.py`。 - 操作手机前只读检查 Client 数据库,不可逆采购未核单时立即退出。 - 安全时只通过 Android VIEW Intent 打开固定网址,随后读取包名和控件树;不点击任何控件。 - 输出 PDD 首页、PDD 其他页面、浏览器或无法判断。 - 专项 4 项、Client 全量 341 项测试通过。 - 使用当前真实数据库运行时,检测到 `PUR-9109e06ee106ef63`,在 ADB 页面操作前安全退出;数据库记录未改变。 由于当前任务仍待核单,没有实际打开手机网页。
Author
Owner

本地归档已提交:

  • 文档:docs/task/118-PDD通用商品链接首页跳转诊断脚本.md
  • 归档提交:4c72255

工单保持打开,等待不可逆任务核单完成后的真机页面验收。

本地归档已提交: - 文档:`docs/task/118-PDD通用商品链接首页跳转诊断脚本.md` - 归档提交:`4c72255` 工单保持打开,等待不可逆任务核单完成后的真机页面验收。
Author
Owner

用户已于 2026-08-11 明确验收通过。

  • 本地归档状态已更新为“已完成,用户验收通过”
  • 验收记录提交:eca9289
  • 本工单按项目流程关闭
用户已于 2026-08-11 明确验收通过。 - 本地归档状态已更新为“已完成,用户验收通过” - 验收记录提交:`eca9289` - 本工单按项目流程关闭
ila closed this issue 2026-08-11 10:58:33 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#118