1
T-210
ila edited this page 2026-08-07 16:36:30 +08:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

同步来源:docs/tasks/T-210.md · commit afc651f75a3a


id: T-210 title: 兼容拼多多 8.17 搜索结果页识别 phase: 2 deps:

  • T-101
  • T-206 status: DONE created: 2026-07-27 context_ref: 6d70eee work_branch: null write_paths:
  • android-buyer/app/src/main/java/com/roubao/autopilot/MainActivity.kt
  • android-buyer/app/src/main/java/com/roubao/autopilot/accessibility/BuyerAccessibilityService.kt
  • android-buyer/app/src/main/java/com/roubao/autopilot/pinduoduo/PinduoduoPageClassifier.kt
  • android-buyer/app/src/test/java/com/roubao/autopilot/pinduoduo/PinduoduoPageClassifierTest.kt
  • android-buyer/app/src/test/java/com/roubao/autopilot/pinduoduo/PinduoduoSearchAutomationTest.kt
  • docs/tasks/T-210.md
  • docs/current-state.md

问题 / 背景

PKG110 真机在“开始候选探针”后已进入拼多多 8.17.0 的商品结果列表,但 App 在 “确认结果页”停止并显示“页面无法确认,已停止”。现有分类器只接受旧版“综合、销量、 价格、筛选”结果栏和特定 HorizontalScrollView 搜索栏,无法识别当前真机页面。

关联需求与交互

  • 功能:F-101、F-206 受控拼多多候选采集。
  • 交互:点击“开始候选探针”后,搜索结果页应自动进入候选证据采集;未知、登录、验证码、 风控和支付边界仍必须停止。
  • 架构/API:仅调整 Android 本地页面分类;不修改任务 API、执行状态机或支付边界。

方案

使用真机结果页的无障碍结构增加新版识别:带“搜索”描述且显示查询词的文本搜索栏、 水平分类栏以及至少三个稳定分类标记。每次探针均强制写入本次搜索词,避免复用拼多多中 遗留的其他搜索结果;对拼多多安全省略的长搜索词,要求省略号两侧多个片段按顺序匹配, 不把任意短词当作当前搜索。保留旧版规则与“其他查询”区分,增加回归测试。

验收要点

  • 旧版结果页测试继续识别为 SEARCH_RESULTS。
  • 真机 8.17.0 的“推荐、手机、女装”等结构识别为 SEARCH_RESULTS。
  • 探针遇到拼多多的其他搜索词时,会替换为本次搜索词。
  • 省略显示的长搜索词仅在多个片段顺序对应本次搜索词时通过。
  • 其他搜索词、登录、验证码、风控、支付与未知页边界不放宽。
  • Android 单元测试、Debug 构建和 PKG110 真机候选探针 smoke 通过。

边界

  • 不点击商品、提交订单或支付。
  • 不扩大候选数量,不更改 VLM 或后端数据模型。

执行记录

  • 2026-07-27:真机复现。拼多多结果页搜索栏为 TextView、content-desc=搜索, 查询词为“直筒裤有口袋女”;分类栏为 HorizontalScrollView,可见“推荐、手机、女装、 百货、海淘、母婴、车品”。现有规则要求旧版“综合、销量、价格、筛选”,导致误判。
  • 2026-07-27:页面分类器加入新版搜索栏和分类栏规则,并新增新版页面、其他查询的单元 测试。显式设置 ANDROID_HOME/ANDROID_SDK_ROOT 后,./gradlew.bat :app:testDebugUnitTest :app:assembleDebug 通过;Debug APK 已安装至 PKG110。
  • 2026-07-27:安装更新会撤销 Android 对肉包无障碍服务的运行授权。真机完整探针 smoke 等待设备持有人在系统设置中重新确认“保持开启”;不会使用 ADB 绕过该系统授权。
  • 2026-07-27:真机复测发现后台任务搜索词最长 160 字,拼多多结果栏安全省略为 “現貨+預購 有…斤】(預購)”。分类器改为完整相等、长连续片段或至少两个按顺序的 省略片段匹配;任意短词和乱序片段仍不通过。另发现新版结果页搜索栏可为显示文本的 TextView,点击规则已兼容其可点击父节点。每次探针强制写入本次搜索词,避免沿用 已打开的其他查询。
  • 2026-07-27:再次运行 $env:ANDROID_HOME='C:\Users\ila20\AppData\Local\Android\Sdk'; $env:ANDROID_SDK_ROOT=$env:ANDROID_HOME; .\gradlew.bat :app:testDebugUnitTest :app:assembleDebug,通过;最新 Debug APK 已安装至 PKG110。
  • 2026-07-27:PKG110(Android 16/API 36)、肉包 1.4.2 (7)、拼多多 8.17.0 (81700) 真机 smoke:后台任务搜索结果页的“确认结果页”完成,日志依序记录候选的 OPENING_CANDIDATE -> WAITING_DETAIL -> CAPTURING_EVIDENCE -> RETURNING_RESULTS, 最终 COMPLETE。探针页显示 候选证据 5 / 5,确认结果页和候选采集步骤均显示完成。 测试没有进入订单确认、提交订单或支付页面。