Client:兼容底部提交提示的非滚动规格面板 #175

Closed
opened 2026-08-24 11:27:36 +08:00 by ila · 2 comments
Owner

基本信息

  • 类型:缺陷修复
  • 父级大工单:#1
  • 所属 MVP / 版本:#2 / Client 可运行任务闭环
  • 阶段:PDD 规格采集兼容
  • 状态:待验收

要解决什么

最新采集任务 cj7 打开商品 823647390597 后报 SKU_PANEL_NOT_FOUND:点击规格入口后,等待规格面板加载超时。本地最后控件树证明规格面板已经打开:存在关闭、选择摘要、颜色分类、尺码、数量加减和底部提交提示;但该面板不暴露 scrollable=true,底部也不是旧兼容逻辑要求的可点击“确定”。

根因是 #154 只覆盖了“确认款式 + 确定”的非滚动面板。当前“关闭 + 选择摘要 + 规格标题 + 数量 + 提交订单提示”结构没有被识别,因此实际已打开的面板被循环等待并误报超时。

做什么 / 不做什么

  • 做:扩展非滚动规格面板强证据识别,兼容底部“提交订单”提示结构。
  • 做:选择摘要不得被误当成独立规格标题。
  • 做:复用现有 parse_spec_panel、逐色采价和尺码采集流程。
  • 做:已经确认进入规格页面但结构无法解析时返回规格数据不完整,不误报入口/加载超时。
  • 做:用本次失败 XML 生成只保留规格结构的脱敏固件和回归测试。
  • 不做:不修改采购、地址、下单、付款或 Admin 接口。
  • 不做:不放宽验证码、登录或风控处理。
  • 不做:不提交原始 XML、商品文字、账号或个人数据。

已确认的实现方案

  1. 在 _find_non_scrollable_spec_panel 中保留原“确定”分支,并增加提交提示分支。
  2. 新分支必须同时满足:可靠 PDD 节点、关闭/确认款式、选择摘要、独立规格标题、唯一数量输入框与唯一加减按钮、底部唯一可见启用的提交提示容器。
  3. 从强证据节点寻找最小公共父容器作为规格区域,继续交给现有解析器。
  4. 排除以“请选择/已选”开头的摘要节点,避免将“请选择:颜色分类 尺码”识别成维度标题。
  5. 等待超时时区分“仍是商品页”和“已进入订单确认/规格结构但解析失败”,后者使用稳定的数据不完整错误。
  6. 增加新结构成功解析、普通商品页不误判、孤立提交文字不误判以及 #154 旧固件继续兼容的测试。

预计修改:

  • client/src/pdd_collect_service.py
  • client/test/test_pdd_collect_service.py
  • client/test/fixtures/pdd_spec_panel_submit_hint.xml
  • docs/client/02-architecture.md
  • docs/task/<工单号>-兼容提交提示规格面板.md

验收标准

  • 商品 823647390597 对应面板固件能够识别并解析颜色、尺码。
  • “请选择:颜色分类 尺码”不成为独立规格维度。
  • 原“确认款式 + 确定”非滚动面板继续通过。
  • 普通商品页或孤立“提交订单”文字不会被误判为规格面板。
  • 已进入规格页但解析失败时不再误报 SKU_PANEL_NOT_FOUND。
  • 原始失败 XML 和敏感内容不进入 Git、日志、工单或文档。
  • 精确测试、Client 全量测试、语法检查和 git diff --check 通过。

验证方式

从 client/ 执行规格采集精确测试和完整 test_*.py。测试只使用脱敏 XML 与 Fake Device,不连接真机,不修改地址,不下单或付款。

风险和回退

  • 放宽面板判定可能误把商品页当作规格页,因此新分支必须使用规格、数量、关闭和底部提交目标的组合强证据。
  • 错误分类调整不得改变 Admin 接口,只改变 Client 本地稳定错误码映射来源。
  • 回退本工单代码和测试提交即可,无数据库迁移。

实施记录

  • 实现提交:0f24165
  • 归档提交:62da4fd
  • 本地归档:docs/task/175-兼容提交提示型非滚动规格面板.md
  • 规格采集精确测试 64 项、Client 全量 435 项通过;语法检查和差异检查通过。
  • 本地最新失败 XML 只读验证通过:识别两个规格维度,选择摘要未混入维度;原始 XML 未进入 Git、日志、工单或文档。
  • 未连接真机重新采集,未执行采购、地址修改、下单或付款;状态为待验收。
## 基本信息 - 类型:缺陷修复 - 父级大工单:#1 - 所属 MVP / 版本:#2 / Client 可运行任务闭环 - 阶段:PDD 规格采集兼容 - 状态:待验收 ## 要解决什么 最新采集任务 `cj7` 打开商品 `823647390597` 后报 `SKU_PANEL_NOT_FOUND:点击规格入口后,等待规格面板加载超时`。本地最后控件树证明规格面板已经打开:存在关闭、选择摘要、颜色分类、尺码、数量加减和底部提交提示;但该面板不暴露 `scrollable=true`,底部也不是旧兼容逻辑要求的可点击“确定”。 根因是 #154 只覆盖了“确认款式 + 确定”的非滚动面板。当前“关闭 + 选择摘要 + 规格标题 + 数量 + 提交订单提示”结构没有被识别,因此实际已打开的面板被循环等待并误报超时。 ## 做什么 / 不做什么 - 做:扩展非滚动规格面板强证据识别,兼容底部“提交订单”提示结构。 - 做:选择摘要不得被误当成独立规格标题。 - 做:复用现有 `parse_spec_panel`、逐色采价和尺码采集流程。 - 做:已经确认进入规格页面但结构无法解析时返回规格数据不完整,不误报入口/加载超时。 - 做:用本次失败 XML 生成只保留规格结构的脱敏固件和回归测试。 - 不做:不修改采购、地址、下单、付款或 Admin 接口。 - 不做:不放宽验证码、登录或风控处理。 - 不做:不提交原始 XML、商品文字、账号或个人数据。 ## 已确认的实现方案 1. 在 `_find_non_scrollable_spec_panel` 中保留原“确定”分支,并增加提交提示分支。 2. 新分支必须同时满足:可靠 PDD 节点、关闭/确认款式、选择摘要、独立规格标题、唯一数量输入框与唯一加减按钮、底部唯一可见启用的提交提示容器。 3. 从强证据节点寻找最小公共父容器作为规格区域,继续交给现有解析器。 4. 排除以“请选择/已选”开头的摘要节点,避免将“请选择:颜色分类 尺码”识别成维度标题。 5. 等待超时时区分“仍是商品页”和“已进入订单确认/规格结构但解析失败”,后者使用稳定的数据不完整错误。 6. 增加新结构成功解析、普通商品页不误判、孤立提交文字不误判以及 #154 旧固件继续兼容的测试。 预计修改: - `client/src/pdd_collect_service.py` - `client/test/test_pdd_collect_service.py` - `client/test/fixtures/pdd_spec_panel_submit_hint.xml` - `docs/client/02-architecture.md` - `docs/task/<工单号>-兼容提交提示规格面板.md` ## 验收标准 - [x] 商品 `823647390597` 对应面板固件能够识别并解析颜色、尺码。 - [x] “请选择:颜色分类 尺码”不成为独立规格维度。 - [x] 原“确认款式 + 确定”非滚动面板继续通过。 - [x] 普通商品页或孤立“提交订单”文字不会被误判为规格面板。 - [x] 已进入规格页但解析失败时不再误报 `SKU_PANEL_NOT_FOUND`。 - [x] 原始失败 XML 和敏感内容不进入 Git、日志、工单或文档。 - [x] 精确测试、Client 全量测试、语法检查和 `git diff --check` 通过。 ## 验证方式 从 `client/` 执行规格采集精确测试和完整 `test_*.py`。测试只使用脱敏 XML 与 Fake Device,不连接真机,不修改地址,不下单或付款。 ## 风险和回退 - 放宽面板判定可能误把商品页当作规格页,因此新分支必须使用规格、数量、关闭和底部提交目标的组合强证据。 - 错误分类调整不得改变 Admin 接口,只改变 Client 本地稳定错误码映射来源。 - 回退本工单代码和测试提交即可,无数据库迁移。 ## 实施记录 - 实现提交:`0f24165` - 归档提交:`62da4fd` - 本地归档:`docs/task/175-兼容提交提示型非滚动规格面板.md` - 规格采集精确测试 64 项、Client 全量 435 项通过;语法检查和差异检查通过。 - 本地最新失败 XML 只读验证通过:识别两个规格维度,选择摘要未混入维度;原始 XML 未进入 Git、日志、工单或文档。 - 未连接真机重新采集,未执行采购、地址修改、下单或付款;状态为待验收。
Author
Owner

实施进度

  • 已增加脱敏最小固件,复现无 scrollable=true、底部为“选择…后,提交订单”的规格面板。
  • 已扩展组合强证据识别,并排除“请选择/已选”摘要作为规格标题。
  • 已调整等待失败分类:确认页已出现但结构无法解析时返回 PDD_DATA_SPEC_INCOMPLETE。
  • 精确测试 64 项通过。
  • 对本次本地失败 XML 做只读验证:面板可识别,得到两个规格维度(主规格 2 项、第二规格 5 项),摘要未被识别为维度。原始 XML 未进入 Git、日志、工单或文档。

下一步执行 Client 全量回归。

## 实施进度 - 已增加脱敏最小固件,复现无 `scrollable=true`、底部为“选择…后,提交订单”的规格面板。 - 已扩展组合强证据识别,并排除“请选择/已选”摘要作为规格标题。 - 已调整等待失败分类:确认页已出现但结构无法解析时返回 `PDD_DATA_SPEC_INCOMPLETE`。 - 精确测试 64 项通过。 - 对本次本地失败 XML 做只读验证:面板可识别,得到两个规格维度(主规格 2 项、第二规格 5 项),摘要未被识别为维度。原始 XML 未进入 Git、日志、工单或文档。 下一步执行 Client 全量回归。
Author
Owner

用户于 2026-08-13 明确验收通过。本地归档状态已更新,批量验收记录提交:ad44f83。现关闭工单。

用户于 2026-08-13 明确验收通过。本地归档状态已更新,批量验收记录提交:`ad44f83`。现关闭工单。
ila closed this issue 2026-08-24 11:46:56 +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/cmautobuy#175