修复 PDD 规格入口误触商品评论页 #59

Closed
opened 2026-08-21 14:49:45 +08:00 by ila · 3 comments
Owner

基本信息

  • 类型:缺陷
  • 所属 Epic:采集 MVP #1
  • 所属 MVP / 版本:PDD 商品详情采集真机兼容
  • 阶段:待用户验收

原始需求与事实证据

  • 来源:用户对话,2026-08-21。
  • 用户现象:PDD 商品 172119352488 采集未打开规格面板,最终停留在商品评论页,任务报 RULE_NOT_MATCHED:规格面板没有出现强证据。
  • 数据库事实:采集任务 #42,三星 SM-G9700,Agent 0.2.0,PDD 7.95.0,规则 #3 快照;14:32:22 开始、14:32:57 失败。
  • ADB 事实:无障碍服务已启用并绑定,前台为 PDD NewPageActivity;14:32:45 记录一次商品页向上滑动,约 12 秒后失败。未保存控件树或截图。

根因

  1. 商品页规格入口兜底允许“包含颜色/款式/尺码等别名并包含数字”的任意可点击节点,向上滑动进入评价区域后,评价卡片中的规格与数字可能被误判为入口。
  2. 点击使用节点或最近可点击父容器;Android 返回 ACTION_CLICK=true 只代表动作被接受,不代表规格面板打开。
  3. 商品详情与商品评价共用 PDD 包名、NewPageActivity 和 android:id/content,现有页面证据无法立即识别误触,最终只能报通用的面板强证据错误。

目标

  • 规格入口候选排除评价、评论、晒单、问答等区域及其父容器。
  • 收紧全页面“规格词 + 数字”兜底,保留明确选择语义和安全底部购买栏入口。
  • 点击规格入口后检测商品评论页;发生误触时安全返回商品详情并仅重试一次,不形成无限循环。
  • 底部购买栏优先定位真实购买文字按钮/可点击容器,不能仅凭价格节点选择宽泛外层容器。
  • 增加脱敏结构化日志,记录入口来源、标签、控件类型、坐标、点击结果和面板证据缺失类型,不保存完整控件树或截图。
  • 错误区分点击未生效、进入评论页和面板证据不匹配;普通用户提示保持易懂。

非目标

  • 不放宽验证码、登录、风控与页面包名/Activity 安全边界。
  • 不保存或上传控件树、截图。
  • 不修改服务端 API、数据库或 Web。
  • 不采购、不创建订单、不支付。

方案

  1. 为规格入口增加来源类型(明确选择入口、底部购买按钮)与评论语义排除。
  2. 解析器不再把整段评价卡片中的“规格词 + 任意数字”作为入口;仅接受明确的 选择/请选择/已选 规格摘要,且排除评价语义。
  3. 安全底部入口从价格节点所在购买区域中优先选择带购买语义的最小可点击节点;没有唯一安全目标时失败,不猜测。
  4. 点击后轮询期间识别评论页面;首次误触执行一次 back,重新验证商品详情并重新定位入口,第二次仍误触则明确失败。
  5. 用状态机单测覆盖评论卡片误判、底部按钮选择、误触返回重试、重复误触失败、面板真实打开与原有规格遍历回归。

设计与原型门禁

  • Android 非 UI 页面新增,不修改管理端界面;无需 QuantUX/HTML 原型。
  • 行为和安全方案已由用户于 2026-08-21 明确确认。

验收标准

  • 含颜色/尺码/数字的评价卡片不会成为规格入口。
  • 明确“请选择/选择规格”入口和安全底部购买按钮仍能打开规格面板。
  • 首次误入商品评论页会安全返回并只重试一次;重复误触明确失败。
  • 点击被系统接受但页面无变化时给出明确错误,不再只报“规格面板没有出现强证据”。
  • 不保存控件树或截图,不触发订单/支付。
  • Android 单测与 Debug APK 构建通过。
  • 三星真机安装新 APK 后,重置任务 #42 复采商品 172119352488;记录真实结果,失败也不得伪造通过。

验证

  • android/gradlew.bat test assembleDebug
  • 受影响采集器定向测试
  • 三星 SM-G9700 真机任务 #42;ADB 只记录结构化 Logcat、包名/Activity 和任务结构化结果
  • python dev_scripts/harness.py sync --check
  • python dev_scripts/harness.py check --strict
  • git diff --check

文档影响

  • 更新 Wiki Business-Rules-and-Glossary、Android-Agent-API-Contract、OnePlus-Real-Device-Acceptance(记录跨机型兼容边界)和代码地图;同步只读镜像。
  • 创建 Wiki 任务归档;不自动导出 docs/task/。

风险与回退

  • 风险:入口收紧可能使少数旧页面无法匹配;通过明确入口和底部安全按钮双路径以及回归测试控制。
  • 风险:自动返回错误页面可能返回浏览器;返回后必须重新验证 PDD 商品详情强证据,失败即终止。
  • 回退:撤销本工单 Android 采集器变更并恢复既有 APK;不涉及数据库迁移。

实施进展

  • 实现提交:2977edc,已推送 main。
  • Debug APK SHA-256:CEEED350C428B2EB8F408C862B24083842D500B65DAFBA3AE2DCB79D3C71933A,已于 2026-08-21 14:55 覆盖安装三星;Agent 0.2.0,无障碍服务保持启用和绑定。
  • 自动化:定向 28 项采集器测试通过;android/gradlew.bat test assembleDebug 与 scripts/verify.ps1 -Component android 通过。
  • 文档:Wiki Business Rules ca1aefbb4511、Agent API 086e1ec0d240、Architecture 8f036bcfd2db、Real Device Acceptance ff6ac5cacddc 已在线回读并同步镜像。
  • 真机复采:服务端实际正常,先前空响应由终端 HTTP 代理误转发本机请求导致;使用本机直连后,通过正式接口重置任务 #42。三星日志记录底部“快要抢光 免拼购买”入口点击成功,未进入评价页,采到 2 个颜色和 8 个尺码;任务为 completed_partial,仅缺少颜色 9031#长裤 的价格。
## 基本信息 - 类型:缺陷 - 所属 Epic:采集 MVP #1 - 所属 MVP / 版本:PDD 商品详情采集真机兼容 - 阶段:待用户验收 ## 原始需求与事实证据 - 来源:用户对话,2026-08-21。 - 用户现象:PDD 商品 `172119352488` 采集未打开规格面板,最终停留在商品评论页,任务报 `RULE_NOT_MATCHED:规格面板没有出现强证据`。 - 数据库事实:采集任务 #42,三星 SM-G9700,Agent 0.2.0,PDD 7.95.0,规则 #3 快照;14:32:22 开始、14:32:57 失败。 - ADB 事实:无障碍服务已启用并绑定,前台为 PDD `NewPageActivity`;14:32:45 记录一次商品页向上滑动,约 12 秒后失败。未保存控件树或截图。 ## 根因 1. 商品页规格入口兜底允许“包含颜色/款式/尺码等别名并包含数字”的任意可点击节点,向上滑动进入评价区域后,评价卡片中的规格与数字可能被误判为入口。 2. 点击使用节点或最近可点击父容器;Android 返回 `ACTION_CLICK=true` 只代表动作被接受,不代表规格面板打开。 3. 商品详情与商品评价共用 PDD 包名、`NewPageActivity` 和 `android:id/content`,现有页面证据无法立即识别误触,最终只能报通用的面板强证据错误。 ## 目标 - 规格入口候选排除评价、评论、晒单、问答等区域及其父容器。 - 收紧全页面“规格词 + 数字”兜底,保留明确选择语义和安全底部购买栏入口。 - 点击规格入口后检测商品评论页;发生误触时安全返回商品详情并仅重试一次,不形成无限循环。 - 底部购买栏优先定位真实购买文字按钮/可点击容器,不能仅凭价格节点选择宽泛外层容器。 - 增加脱敏结构化日志,记录入口来源、标签、控件类型、坐标、点击结果和面板证据缺失类型,不保存完整控件树或截图。 - 错误区分点击未生效、进入评论页和面板证据不匹配;普通用户提示保持易懂。 ## 非目标 - 不放宽验证码、登录、风控与页面包名/Activity 安全边界。 - 不保存或上传控件树、截图。 - 不修改服务端 API、数据库或 Web。 - 不采购、不创建订单、不支付。 ## 方案 1. 为规格入口增加来源类型(明确选择入口、底部购买按钮)与评论语义排除。 2. 解析器不再把整段评价卡片中的“规格词 + 任意数字”作为入口;仅接受明确的 `选择/请选择/已选` 规格摘要,且排除评价语义。 3. 安全底部入口从价格节点所在购买区域中优先选择带购买语义的最小可点击节点;没有唯一安全目标时失败,不猜测。 4. 点击后轮询期间识别评论页面;首次误触执行一次 `back`,重新验证商品详情并重新定位入口,第二次仍误触则明确失败。 5. 用状态机单测覆盖评论卡片误判、底部按钮选择、误触返回重试、重复误触失败、面板真实打开与原有规格遍历回归。 ## 设计与原型门禁 - Android 非 UI 页面新增,不修改管理端界面;无需 QuantUX/HTML 原型。 - 行为和安全方案已由用户于 2026-08-21 明确确认。 ## 验收标准 - [x] 含颜色/尺码/数字的评价卡片不会成为规格入口。 - [x] 明确“请选择/选择规格”入口和安全底部购买按钮仍能打开规格面板。 - [x] 首次误入商品评论页会安全返回并只重试一次;重复误触明确失败。 - [x] 点击被系统接受但页面无变化时给出明确错误,不再只报“规格面板没有出现强证据”。 - [x] 不保存控件树或截图,不触发订单/支付。 - [x] Android 单测与 Debug APK 构建通过。 - [x] 三星真机安装新 APK 后,重置任务 #42 复采商品 `172119352488`;记录真实结果,失败也不得伪造通过。 ## 验证 - `android/gradlew.bat test assembleDebug` - 受影响采集器定向测试 - 三星 SM-G9700 真机任务 #42;ADB 只记录结构化 Logcat、包名/Activity 和任务结构化结果 - `python dev_scripts/harness.py sync --check` - `python dev_scripts/harness.py check --strict` - `git diff --check` ## 文档影响 - 更新 Wiki `Business-Rules-and-Glossary`、`Android-Agent-API-Contract`、`OnePlus-Real-Device-Acceptance`(记录跨机型兼容边界)和代码地图;同步只读镜像。 - 创建 Wiki 任务归档;不自动导出 `docs/task/`。 ## 风险与回退 - 风险:入口收紧可能使少数旧页面无法匹配;通过明确入口和底部安全按钮双路径以及回归测试控制。 - 风险:自动返回错误页面可能返回浏览器;返回后必须重新验证 PDD 商品详情强证据,失败即终止。 - 回退:撤销本工单 Android 采集器变更并恢复既有 APK;不涉及数据库迁移。 ## 实施进展 - 实现提交:`2977edc`,已推送 `main`。 - Debug APK SHA-256:`CEEED350C428B2EB8F408C862B24083842D500B65DAFBA3AE2DCB79D3C71933A`,已于 2026-08-21 14:55 覆盖安装三星;Agent 0.2.0,无障碍服务保持启用和绑定。 - 自动化:定向 28 项采集器测试通过;`android/gradlew.bat test assembleDebug` 与 `scripts/verify.ps1 -Component android` 通过。 - 文档:Wiki Business Rules `ca1aefbb4511`、Agent API `086e1ec0d240`、Architecture `8f036bcfd2db`、Real Device Acceptance `ff6ac5cacddc` 已在线回读并同步镜像。 - 真机复采:服务端实际正常,先前空响应由终端 HTTP 代理误转发本机请求导致;使用本机直连后,通过正式接口重置任务 #42。三星日志记录底部“快要抢光 免拼购买”入口点击成功,未进入评价页,采到 2 个颜色和 8 个尺码;任务为 `completed_partial`,仅缺少颜色 `9031#长裤` 的价格。
Author
Owner

实现与自动化验证已完成并提交 2977edc。APK 已覆盖安装三星,未触发订单或支付。真机复采尚未开始:8010 端口监听但所有 HTTP 请求返回空响应,任务 #42 重置接口未执行;严格保留原失败记录,没有直接修改数据库。请重启本地服务端后继续。

实现与自动化验证已完成并提交 `2977edc`。APK 已覆盖安装三星,未触发订单或支付。真机复采尚未开始:8010 端口监听但所有 HTTP 请求返回空响应,任务 #42 重置接口未执行;严格保留原失败记录,没有直接修改数据库。请重启本地服务端后继续。
Author
Owner

完成证据

阶段保持“待用户验收”,未关闭工单。

## 完成证据 - 实现提交:`2977edc` - 真机与 Wiki 镜像提交:`37db89c` - 三星任务 #42:`completed_partial`;底部“快要抢光 免拼购买”入口点击成功,未进入评价页,采到 2 个颜色和 8 个尺码。 - 相邻问题:缺失 `price:9031#长裤`,不属于本工单规格入口误触范围。 - Real Device Acceptance Wiki revision:`c7cae738f3ce5758d23cae20fb26fa7bfe5afc3c` - 任务归档:https://git.ilapage.cn/OPC/goauto/wiki/Task-59-%E4%BF%AE%E5%A4%8D-PDD-%E8%A7%84%E6%A0%BC%E5%85%A5%E5%8F%A3%E8%AF%AF%E8%A7%A6%E5%95%86%E5%93%81%E8%AF%84%E8%AE%BA%E9%A1%B5 - 任务归档 revision:`0faae0ab7de30970ea6b3ebca8ab875710f13a74` - `sync --verify`、`check --strict`、`git diff --check` 通过。 阶段保持“待用户验收”,未关闭工单。
Author
Owner

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。
ila closed this issue 2026-08-28 15:07:23 +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#59