diff --git a/T-210.-.md b/T-210.-.md new file mode 100644 index 0000000..93bbecb --- /dev/null +++ b/T-210.-.md @@ -0,0 +1,81 @@ + +> 同步来源:[`docs/tasks/T-210.md`](/chengma/mroubao/src/commit/afc651f75a3abc2676bb13aa8a80f6aa6a25a72e/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、执行状态机或支付边界。 + +## 方案 + +使用真机结果页的无障碍结构增加新版识别:带“搜索”描述且显示查询词的文本搜索栏、 +水平分类栏以及至少三个稳定分类标记。每次探针均强制写入本次搜索词,避免复用拼多多中 +遗留的其他搜索结果;对拼多多安全省略的长搜索词,要求省略号两侧多个片段按顺序匹配, +不把任意短词当作当前搜索。保留旧版规则与“其他查询”区分,增加回归测试。 + +## 验收要点 + +- [x] 旧版结果页测试继续识别为 `SEARCH_RESULTS`。 +- [x] 真机 8.17.0 的“推荐、手机、女装”等结构识别为 `SEARCH_RESULTS`。 +- [x] 探针遇到拼多多的其他搜索词时,会替换为本次搜索词。 +- [x] 省略显示的长搜索词仅在多个片段顺序对应本次搜索词时通过。 +- [x] 其他搜索词、登录、验证码、风控、支付与未知页边界不放宽。 +- [x] 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`,确认结果页和候选采集步骤均显示完成。 + 测试没有进入订单确认、提交订单或支付页面。