T24 修复 PDD 规格面板蛇形遍历与尺码续页 #26

Closed
opened 2026-08-15 16:39:27 +08:00 by ila · 3 comments
Owner

原始需求摘要

商品 236231603269 的任务只采到颜色,没有采到实际存在的尺码。参考 D:\chengma\cmautobuy\client,规格面板回到顶部,颜色按可见行蛇形遍历并逐项确认价格,颜色结束后定向寻找并完整读取第二规格。

目标与非目标

修复 Android PDD 采集器的定向容器滚动、稳定视口、逐行颜色蛇形遍历和尺码续页。不修改数据库/API,不点击尺码,不实现订单或支付,不保存控件树和截图。

前置依赖

T20 #22、T21 #23、T22 #24 已验收;T23 #25 真机验证进行中。本工单是新增商品样例暴露的独立缺陷。

是否可并行

不可与修改 PddProductDetailCollector、GoAutoAccessibilityService 的任务并行。服务端和 Web 无代码依赖。

子项目影响

Android 实现与测试;docs 同步算法和真机证据。server/web 预计无代码变化。

方案

  1. 基于当前规格节点锁定横向颜色容器与纵向面板容器。
  2. 面板归顶使用有界循环和“文字 + bounds”视口签名。
  3. 颜色按视觉行聚类并交替方向遍历;每次点击后重取树,确认选中和价格稳定。
  4. 滑动后等待签名变化,连续稳定才确认到边。
  5. 第二规格建立续页上下文,标题滚出后仍读取;尺码只读。
  6. 缩小功能按钮过滤范围,避免合法含“客服”的规格被误删。
  7. 重置商品 236231603269 的任务真机复采。

验收

  • 商品 236231603269 不再 missing:size,并提交实际可见尺码。
  • 全部颜色逐项确认价格,图片型颜色只点击文字。
  • 尺码不点击;不触发订单或支付。
  • 达到遍历上限时提交明确 partial 原因。
  • Android 单测和 Debug APK 构建通过。
  • 只保存结构化结果。

验证

单测覆盖面板归顶、两行蛇形、延迟视口、容器选择、尺码后出现、标题滚出续页和合法含“客服”规格;运行 gradlew.bat test assembleDebug;一加真机重置任务 23。

风险

PDD 自绘面板滚动属性可能不稳定,必须用规格节点祖先约束容器;行聚类阈值和动画延迟必须有边界测试。

文档影响

更新项目档案、共享 API、真机验收、迁移分析、Android README 和交付工单索引。

## 原始需求摘要 商品 `236231603269` 的任务只采到颜色,没有采到实际存在的尺码。参考 `D:\chengma\cmautobuy\client`,规格面板回到顶部,颜色按可见行蛇形遍历并逐项确认价格,颜色结束后定向寻找并完整读取第二规格。 ## 目标与非目标 修复 Android PDD 采集器的定向容器滚动、稳定视口、逐行颜色蛇形遍历和尺码续页。不修改数据库/API,不点击尺码,不实现订单或支付,不保存控件树和截图。 ## 前置依赖 T20 #22、T21 #23、T22 #24 已验收;T23 #25 真机验证进行中。本工单是新增商品样例暴露的独立缺陷。 ## 是否可并行 不可与修改 PddProductDetailCollector、GoAutoAccessibilityService 的任务并行。服务端和 Web 无代码依赖。 ## 子项目影响 Android 实现与测试;docs 同步算法和真机证据。server/web 预计无代码变化。 ## 方案 1. 基于当前规格节点锁定横向颜色容器与纵向面板容器。 2. 面板归顶使用有界循环和“文字 + bounds”视口签名。 3. 颜色按视觉行聚类并交替方向遍历;每次点击后重取树,确认选中和价格稳定。 4. 滑动后等待签名变化,连续稳定才确认到边。 5. 第二规格建立续页上下文,标题滚出后仍读取;尺码只读。 6. 缩小功能按钮过滤范围,避免合法含“客服”的规格被误删。 7. 重置商品 236231603269 的任务真机复采。 ## 验收 - 商品 236231603269 不再 missing:size,并提交实际可见尺码。 - 全部颜色逐项确认价格,图片型颜色只点击文字。 - 尺码不点击;不触发订单或支付。 - 达到遍历上限时提交明确 partial 原因。 - Android 单测和 Debug APK 构建通过。 - 只保存结构化结果。 ## 验证 单测覆盖面板归顶、两行蛇形、延迟视口、容器选择、尺码后出现、标题滚出续页和合法含“客服”规格;运行 gradlew.bat test assembleDebug;一加真机重置任务 23。 ## 风险 PDD 自绘面板滚动属性可能不稳定,必须用规格节点祖先约束容器;行聚类阈值和动画延迟必须有边界测试。 ## 文档影响 更新项目档案、共享 API、真机验收、迁移分析、Android README 和交付工单索引。
Author
Owner

实施完成,等待验收

实现:

  • 规格面板有界归顶,以规格文字和 bounds 作为视口签名。
  • 基于当前规格节点祖先分别锁定横向颜色容器和纵向面板容器。
  • 颜色按视觉行执行左到右、右到左交替蛇形遍历;每次点击后重取树并稳定采价。
  • 滚动优先使用 AccessibilityNodeInfo 前进/后退动作;坐标手势回退等待系统完成回调。
  • 尺码只读;首次定位后保存容器/选项结构,标题滚出后可续页。
  • #一次选多款# 继续排除;合法的“定制图案文字 联系客服”规格保留。
  • 标题回退要求与销量节点存在空间关联,不再使用页面任意最长文本。

真机验证:

  • 设备:一加 PKG110 / Android 16,设备 2。
  • 商品:goods_id 236231603269,任务 23。
  • 最终状态:completed,missing=[]。
  • 结果:14 个颜色、14 个颜色价格(均 2288 分)、8 个尺码、112 个完整且可用 SKU。
  • 店铺、销量、评价和标题均提交;尺码未点击,未触发订单/支付。
  • 旧错误结果由任务重置事务清除;未保存或上传原始控件树和截图。

验证命令:

  • android/gradlew.bat test assembleDebug:通过。
  • 最终 Debug APK 已覆盖安装并以同一任务重置复采通过。

提交:72d6145 fix: complete PDD spec panel traversal (#26)

文档已同步。按门禁保持工单打开,等待用户明确验收。

## 实施完成,等待验收 实现: - 规格面板有界归顶,以规格文字和 bounds 作为视口签名。 - 基于当前规格节点祖先分别锁定横向颜色容器和纵向面板容器。 - 颜色按视觉行执行左到右、右到左交替蛇形遍历;每次点击后重取树并稳定采价。 - 滚动优先使用 AccessibilityNodeInfo 前进/后退动作;坐标手势回退等待系统完成回调。 - 尺码只读;首次定位后保存容器/选项结构,标题滚出后可续页。 - `#一次选多款#` 继续排除;合法的“定制图案文字 联系客服”规格保留。 - 标题回退要求与销量节点存在空间关联,不再使用页面任意最长文本。 真机验证: - 设备:一加 PKG110 / Android 16,设备 2。 - 商品:goods_id 236231603269,任务 23。 - 最终状态:completed,missing=[]。 - 结果:14 个颜色、14 个颜色价格(均 2288 分)、8 个尺码、112 个完整且可用 SKU。 - 店铺、销量、评价和标题均提交;尺码未点击,未触发订单/支付。 - 旧错误结果由任务重置事务清除;未保存或上传原始控件树和截图。 验证命令: - `android/gradlew.bat test assembleDebug`:通过。 - 最终 Debug APK 已覆盖安装并以同一任务重置复采通过。 提交:`72d6145 fix: complete PDD spec panel traversal (#26)` 文档已同步。按门禁保持工单打开,等待用户明确验收。
Author
Owner

2026-08-17 三星真机误报缺失修复

现象:任务 35 已采集并持久化 3 个颜色价格、1 个尺码,但结果误报 colorRow:1、colorRow:2。

原因:部分 PDD/Android 组合在选中颜色后会把已选项移出可点击无障碍节点,剩余颜色随即重新排版。旧算法按初始行号复读,行消失时错误地认为该行未采集。

修复:

  • 行在成功选择后消失只结束当前扫描,不再产生 colorRow:*。
  • 真正的颜色为空、颜色无价格、选择失败等缺失判断保持不变。
  • 新增三个颜色从两行逐项消失并重排的回归测试,断言结果完整且无颜色行误报。

验证:

  • 定向回归测试:通过。
  • android/gradlew.bat test assembleDebug:通过。
  • Debug APK SHA-256:0ebc001180ba4b659d8c87a477714fd3b9f3a27c816d8ba1601dc15447ee85bd。
  • 三星当前未连接 ADB,尚未覆盖安装和真机复采;工单保持待验收。

提交:1bf676e fix(#26): ignore reflowed completed color rows

## 2026-08-17 三星真机误报缺失修复 现象:任务 35 已采集并持久化 3 个颜色价格、1 个尺码,但结果误报 colorRow:1、colorRow:2。 原因:部分 PDD/Android 组合在选中颜色后会把已选项移出可点击无障碍节点,剩余颜色随即重新排版。旧算法按初始行号复读,行消失时错误地认为该行未采集。 修复: - 行在成功选择后消失只结束当前扫描,不再产生 colorRow:*。 - 真正的颜色为空、颜色无价格、选择失败等缺失判断保持不变。 - 新增三个颜色从两行逐项消失并重排的回归测试,断言结果完整且无颜色行误报。 验证: - 定向回归测试:通过。 - android/gradlew.bat test assembleDebug:通过。 - Debug APK SHA-256:0ebc001180ba4b659d8c87a477714fd3b9f3a27c816d8ba1601dc15447ee85bd。 - 三星当前未连接 ADB,尚未覆盖安装和真机复采;工单保持待验收。 提交:1bf676e fix(#26): ignore reflowed completed color rows
Author
Owner

用户验收通过并归档

  • 用户于 2026-08-17 明确确认 #26 通过验收;reviewCount 兼容问题暂不处理。
  • 一加任务 23:14 个颜色、14 个价格、8 个尺码、112 个完整 SKU。
  • 三星任务 35:颜色行误报修复后保存 3 个颜色、3 个价格和 1 个尺码,仅保留 missing=[reviewCount]。
  • Android 完整测试与 Debug APK 构建通过。
  • 实现提交:72d6145、1bf676e。
  • Wiki 归档:Task-26-PDD-spec-traversal,revision cf66bec。
  • docs 镜像提交:da7c02c。
## 用户验收通过并归档 - 用户于 2026-08-17 明确确认 #26 通过验收;reviewCount 兼容问题暂不处理。 - 一加任务 23:14 个颜色、14 个价格、8 个尺码、112 个完整 SKU。 - 三星任务 35:颜色行误报修复后保存 3 个颜色、3 个价格和 1 个尺码,仅保留 missing=[reviewCount]。 - Android 完整测试与 Debug APK 构建通过。 - 实现提交:72d6145、1bf676e。 - Wiki 归档:Task-26-PDD-spec-traversal,revision cf66bec。 - docs 镜像提交:da7c02c。
ila closed this issue 2026-08-17 16:58:29 +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#26