修复可选颜色切换后价格缺失 #60

Closed
opened 2026-08-21 15:19:18 +08:00 by ila · 2 comments
Owner

基本信息

  • 类型:缺陷
  • 所属 Epic:采集 MVP #1
  • 所属 MVP / 版本:PDD 商品详情采集最小闭环
  • 阶段:待用户验收
  • 前置关系:基于 #59 已合入的规格入口修复,可独立实施;不等待 #59 用户验收关闭
  • 是否可并行:否;同一采集器文件与 #59 重叠
  • 子项目影响:Android Agent;不改服务端、Web、数据库和共享 API

原始需求与事实证据

  • 来源:用户对话,2026-08-21。
  • 用户确认:商品 172119352488 的两个颜色分类 8913#长裤、9031#长裤 均可人工选择。
  • 三星 SM-G9700 真机任务 #42:Agent 识别到两个颜色和 8 个尺码,第一个颜色保存价格 3112 分,第二个颜色缺失 price:9031#长裤,任务为 completed_partial。
  • 现有错误语义表明第二个颜色的精确点击没有返回 NOT_FOUND/FAILED/AMBIGUOUS;否则应记录 selection:9031#长裤。
  • 当前 stablePrice 最多先等待 2 秒选中证据,再等待 2 秒价格,并要求同一价格连续读取两次。现有日志没有逐颜色点击、选中证据和价格采样,不能确定是选中状态未暴露、点击后界面未变化,还是价格文本未及时/未稳定解析。

目标

  • 为每个颜色记录脱敏的结构化采集轨迹:颜色短标签、点击结果、选中证据类型、价格采样值、稳定次数和最终原因;不保存原始控件树或截图。
  • 精确点击颜色后,以目标选中状态、已选摘要或可证明的规格面板变化确认动作生效;避免因为其他颜色残留的 selected/checked 状态永久阻塞目标价格读取。
  • 在动作确实生效后,允许价格在规则限定时间内完成异步更新并连续稳定,再关联到当前颜色。
  • 动作无效果或价格始终无法稳定时继续提交 completed_partial,保留可读缺失项,不猜测价格。
  • 三星真机重置任务 #42,两个可人工选择的颜色均应取得真实价格;若仍失败,结构化日志必须精确指出阶段,不得伪造通过。

非目标

  • 不修改颜色/尺码遍历顺序、PDD 商品数据模型、服务端 API、数据库或 Admin 页面。
  • 不保存或上传原始控件树、截图,不引入 OCR/VLM。
  • 不创建订单、不支付。
  • 不扩大到不可选颜色、优惠券或跨 SKU 独立价格。

实施方案

  1. 在点击颜色前保存最小页面观察基线;点击后逐次读取目标是否选中、已选摘要、面板结构变化和候选价格。
  2. 将价格读取结果扩展为带原因的内部结果,记录 selection_not_confirmed、price_not_found、price_not_stable 等结构化诊断。
  3. 只在精确点击已生效后接受稳定价格;相同价格也是合法结果,但必须有动作生效证据,不能直接沿用点击前旧价格。
  4. 增加单测覆盖:残留其他颜色选中标记、目标摘要确认、价格延迟更新、相同价格、点击无效、价格不稳定和部分完成。
  5. 构建 Debug APK,安装三星,通过正式重置接口复采任务 #42 并记录真实结果。

设计证据

  • Android 内部采集缺陷,无新增 UI、页面或用户交互;不要求 QuantUX/HTML 原型。
  • 错误仍沿用任务详情的缺失项展示,不改变界面含义。

验收标准

  • 其他颜色残留的选中标记不会阻止目标颜色价格读取。
  • 只有精确颜色点击已生效且价格稳定后才保存价格;点击无效不沿用旧价格。
  • 延迟更新和两个颜色同价均有测试覆盖。
  • 失败时结构化日志能区分未确认选中、未找到价格和价格不稳定。
  • 不保存控件树/截图,不触发订单/支付。
  • Android 单测、Debug APK 构建和组件验证通过。
  • 三星真机任务 #42 复采得到两个颜色价格;失败则保留真实证据并停止在未通过状态。

验证

  • android/gradlew.bat test assembleDebug
  • scripts/verify.ps1 -Component android
  • 三星 SM-G9700 重置任务 #42;检查结构化任务结果与 Logcat
  • 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/。

风险与回滚

  • 风险:放宽选中确认可能把旧价格关联到新颜色。控制方式是要求精确点击后的动作生效证据与连续稳定价格,不能仅凭 ACTION_CLICK=true。
  • 风险:结构化日志泄露页面内容。只记录短颜色标签、数值价格、布尔证据和原因,不记录原始树、截图或整页文本。
  • 回滚:仅回滚 Android 采集器和对应测试;不涉及迁移或数据回滚。
## 基本信息 - 类型:缺陷 - 所属 Epic:采集 MVP #1 - 所属 MVP / 版本:PDD 商品详情采集最小闭环 - 阶段:待用户验收 - 前置关系:基于 #59 已合入的规格入口修复,可独立实施;不等待 #59 用户验收关闭 - 是否可并行:否;同一采集器文件与 #59 重叠 - 子项目影响:Android Agent;不改服务端、Web、数据库和共享 API ## 原始需求与事实证据 - 来源:用户对话,2026-08-21。 - 用户确认:商品 `172119352488` 的两个颜色分类 `8913#长裤`、`9031#长裤` 均可人工选择。 - 三星 SM-G9700 真机任务 #42:Agent 识别到两个颜色和 8 个尺码,第一个颜色保存价格 3112 分,第二个颜色缺失 `price:9031#长裤`,任务为 `completed_partial`。 - 现有错误语义表明第二个颜色的精确点击没有返回 `NOT_FOUND/FAILED/AMBIGUOUS`;否则应记录 `selection:9031#长裤`。 - 当前 `stablePrice` 最多先等待 2 秒选中证据,再等待 2 秒价格,并要求同一价格连续读取两次。现有日志没有逐颜色点击、选中证据和价格采样,不能确定是选中状态未暴露、点击后界面未变化,还是价格文本未及时/未稳定解析。 ## 目标 - 为每个颜色记录脱敏的结构化采集轨迹:颜色短标签、点击结果、选中证据类型、价格采样值、稳定次数和最终原因;不保存原始控件树或截图。 - 精确点击颜色后,以目标选中状态、已选摘要或可证明的规格面板变化确认动作生效;避免因为其他颜色残留的 `selected/checked` 状态永久阻塞目标价格读取。 - 在动作确实生效后,允许价格在规则限定时间内完成异步更新并连续稳定,再关联到当前颜色。 - 动作无效果或价格始终无法稳定时继续提交 `completed_partial`,保留可读缺失项,不猜测价格。 - 三星真机重置任务 #42,两个可人工选择的颜色均应取得真实价格;若仍失败,结构化日志必须精确指出阶段,不得伪造通过。 ## 非目标 - 不修改颜色/尺码遍历顺序、PDD 商品数据模型、服务端 API、数据库或 Admin 页面。 - 不保存或上传原始控件树、截图,不引入 OCR/VLM。 - 不创建订单、不支付。 - 不扩大到不可选颜色、优惠券或跨 SKU 独立价格。 ## 实施方案 1. 在点击颜色前保存最小页面观察基线;点击后逐次读取目标是否选中、已选摘要、面板结构变化和候选价格。 2. 将价格读取结果扩展为带原因的内部结果,记录 `selection_not_confirmed`、`price_not_found`、`price_not_stable` 等结构化诊断。 3. 只在精确点击已生效后接受稳定价格;相同价格也是合法结果,但必须有动作生效证据,不能直接沿用点击前旧价格。 4. 增加单测覆盖:残留其他颜色选中标记、目标摘要确认、价格延迟更新、相同价格、点击无效、价格不稳定和部分完成。 5. 构建 Debug APK,安装三星,通过正式重置接口复采任务 #42 并记录真实结果。 ## 设计证据 - Android 内部采集缺陷,无新增 UI、页面或用户交互;不要求 QuantUX/HTML 原型。 - 错误仍沿用任务详情的缺失项展示,不改变界面含义。 ## 验收标准 - [x] 其他颜色残留的选中标记不会阻止目标颜色价格读取。 - [x] 只有精确颜色点击已生效且价格稳定后才保存价格;点击无效不沿用旧价格。 - [x] 延迟更新和两个颜色同价均有测试覆盖。 - [x] 失败时结构化日志能区分未确认选中、未找到价格和价格不稳定。 - [x] 不保存控件树/截图,不触发订单/支付。 - [x] Android 单测、Debug APK 构建和组件验证通过。 - [x] 三星真机任务 #42 复采得到两个颜色价格;失败则保留真实证据并停止在未通过状态。 ## 验证 - `android/gradlew.bat test assembleDebug` - `scripts/verify.ps1 -Component android` - 三星 SM-G9700 重置任务 #42;检查结构化任务结果与 Logcat - `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/`。 ## 风险与回滚 - 风险:放宽选中确认可能把旧价格关联到新颜色。控制方式是要求精确点击后的动作生效证据与连续稳定价格,不能仅凭 `ACTION_CLICK=true`。 - 风险:结构化日志泄露页面内容。只记录短颜色标签、数值价格、布尔证据和原因,不记录原始树、截图或整页文本。 - 回滚:仅回滚 Android 采集器和对应测试;不涉及迁移或数据回滚。
Author
Owner

实施与验证完成

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

## 实施与验证完成 - 提交:`36b11ec`(已推送 `main`) - APK SHA-256:`6B092299E058DE21993E4310FCBAC2F31FD217FA53F2CD327F10301393B42730`,已覆盖安装三星。 - 真机任务 #42:`completed`,缺失清单为空;`8913#长裤` 与 `9031#长裤` 均为 3112 分,尺码 8 个。 - 两个颜色均记录 `target_state`,并连续 2 次稳定读取价格。 - 测试、Debug APK、Android 组件验证、Wiki 镜像和 DevHarness 严格检查均通过。 - Wiki revisions:Business Rules `c3f7561d0b57`、Agent API `4530130b77de`、Real Device Acceptance `183b6a636705`。 - 任务归档:https://git.ilapage.cn/OPC/goauto/wiki/Task-60-%E4%BF%AE%E5%A4%8D%E5%8F%AF%E9%80%89%E9%A2%9C%E8%89%B2%E5%88%87%E6%8D%A2%E5%90%8E%E4%BB%B7%E6%A0%BC%E7%BC%BA%E5%A4%B1 - 任务归档 revision:`0c9fa476d3977bca70f9859ab86621584d5a63a3` 阶段保持待用户验收,工单未关闭。
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#60