[Task][T21] 实现 Android PDD 商品详情颜色价格与尺码采集器 #23

Closed
opened 2026-08-15 14:44:18 +08:00 by ila · 3 comments
Owner

基本信息

原始需求摘要

迁移 cmautobuy 的商品详情采集状态机,在 GoAuto 内存无障碍树上采集全部颜色、每色稳定价格和全部尺码。

方案

实现纯 Kotlin 可测试状态机:页面证据、规格入口、面板强证据、受限阶段钩子、颜色归边与蛇形遍历、点击后刷新、选中确认、价格稳定、尺码只读、部分结果和 SKU 上限。无障碍树只在内存存在。

验收

覆盖多行/横向颜色、旧节点失效、选中失败、价格不稳定/缺失、横纵尺码、数量校验、第三维部分结果、SKU 上限、登录/验证码/风控及禁止下单支付;Android 单测和 APK 构建通过。

非目标与风险

不保存 XML/截图,不用 OCR/VLM,不采购、不下单、不支付,不支持华为 ROM。无法确认时不得猜测。

## 基本信息 - 上级 Epic: #1 - 依赖: T20 - 任务编号: T21 - 是否可并行: 否。 - 子项目影响: `android/`、`docs/`。 ## 原始需求摘要 迁移 cmautobuy 的商品详情采集状态机,在 GoAuto 内存无障碍树上采集全部颜色、每色稳定价格和全部尺码。 ## 方案 实现纯 Kotlin 可测试状态机:页面证据、规格入口、面板强证据、受限阶段钩子、颜色归边与蛇形遍历、点击后刷新、选中确认、价格稳定、尺码只读、部分结果和 SKU 上限。无障碍树只在内存存在。 ## 验收 覆盖多行/横向颜色、旧节点失效、选中失败、价格不稳定/缺失、横纵尺码、数量校验、第三维部分结果、SKU 上限、登录/验证码/风控及禁止下单支付;Android 单测和 APK 构建通过。 ## 非目标与风险 不保存 XML/截图,不用 OCR/VLM,不采购、不下单、不支付,不支持华为 ROM。无法确认时不得猜测。
Author
Owner

开始实施。依赖 #22 已于 2026-08-15 验收并关闭。先实现纯 Kotlin 可测试采集状态机和内存快照适配,再接入现有任务执行链;不保存控件树或截图。

开始实施。依赖 #22 已于 2026-08-15 验收并关闭。先实现纯 Kotlin 可测试采集状态机和内存快照适配,再接入现有任务执行链;不保存控件树或截图。
Author
Owner

实现与验证

  • 新增纯 Kotlin PddProductDetailCollector 与瞬时不可变无障碍节点模型;不序列化、不上传、不落盘控件树或截图。
  • 接入商品页精确证据、登录/验证码/风控识别、商品页有限纵向查找规格入口和规格面板强证据。
  • 颜色列表先归边,再按可见行蛇形去重遍历;点击动作在最新树中重新定位唯一控件,不复用旧 AccessibilityNodeInfo。
  • 选中状态可通过 selected/checked 或“已选”摘要确认;价格连续稳定读取;选中失败或价格缺失提交部分结果且不猜测。
  • 尺码只读并纵向去重;第三维和 SKU 超限提交有界的 completed_partial。
  • 采集器明确排除购买、下单、订单、支付和付款控件;测试确认不会点击。
  • Android 23 使用节点滚动兼容路径,Android 24 以上使用定向手势。
  • 完整接入任务执行链后上报 collector.pdd.product-detail.v1 能力。

验证结果

  • gradlew lintDebug testDebugUnitTest assembleDebug:通过。
  • Android 单元测试共 24 项,覆盖多行/横向颜色、旧节点刷新、选中失败、价格不稳定、横纵规格、第三维、SKU 上限、验证码和禁止订单/支付动作。
  • git diff --check:通过。
  • 提交:99ca400

遗留与边界

  • 本单没有执行真机采集;一加/ColorOS 的真实页面结构、手势区域和完整数据结果由 T23 验证。
  • 管理端内置 v2 规则模板属于 T22。

当前状态:实现完成,等待用户验收;工单保持开启。

## 实现与验证 - 新增纯 Kotlin `PddProductDetailCollector` 与瞬时不可变无障碍节点模型;不序列化、不上传、不落盘控件树或截图。 - 接入商品页精确证据、登录/验证码/风控识别、商品页有限纵向查找规格入口和规格面板强证据。 - 颜色列表先归边,再按可见行蛇形去重遍历;点击动作在最新树中重新定位唯一控件,不复用旧 `AccessibilityNodeInfo`。 - 选中状态可通过 `selected`/`checked` 或“已选”摘要确认;价格连续稳定读取;选中失败或价格缺失提交部分结果且不猜测。 - 尺码只读并纵向去重;第三维和 SKU 超限提交有界的 `completed_partial`。 - 采集器明确排除购买、下单、订单、支付和付款控件;测试确认不会点击。 - Android 23 使用节点滚动兼容路径,Android 24 以上使用定向手势。 - 完整接入任务执行链后上报 `collector.pdd.product-detail.v1` 能力。 ## 验证结果 - `gradlew lintDebug testDebugUnitTest assembleDebug`:通过。 - Android 单元测试共 24 项,覆盖多行/横向颜色、旧节点刷新、选中失败、价格不稳定、横纵规格、第三维、SKU 上限、验证码和禁止订单/支付动作。 - `git diff --check`:通过。 - 提交:`99ca400` ## 遗留与边界 - 本单没有执行真机采集;一加/ColorOS 的真实页面结构、手势区域和完整数据结果由 T23 验证。 - 管理端内置 v2 规则模板属于 T22。 当前状态:实现完成,等待用户验收;工单保持开启。
Author
Owner

用户于 2026-08-15 指示继续后续工单,视为 T21 验收通过。实现提交:99ca400。

用户于 2026-08-15 指示继续后续工单,视为 T21 验收通过。实现提交:`99ca400`。
ila closed this issue 2026-08-15 15:22:10 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#23