Client:兼容非滚动规格面板的静态尺码采集 #177

Closed
opened 2026-08-12 10:28:53 +08:00 by ila · 2 comments
Owner

1. 基本信息

  • 类型:Client 缺陷修复
  • 父级大工单:#1
  • 所属 MVP:#2
  • 阶段:PDD 规格采集兼容

2. 要解决什么

采集商品 823647390597 时稳定失败:

PDD_DATA_SPEC_INCOMPLETE:无法定位第二规格滚动区域:尺码

已确认事实:

  • 控件树已经识别“尺码”及 M、L、XL、2XL、3XL。
  • 所有尺码节点都能定位。
  • 规格面板没有任何 scrollable="true" 节点,属于非滚动自绘面板。
  • #168 增加第二规格续页上下文后,无条件要求第二规格存在滚动容器。
  • #175 让提交提示型面板可以进入完整采集流程,从而暴露该历史兼容缺口。
  • 现有脱敏固件 pdd_spec_panel_submit_hint.xml 可以稳定复现。

3. 做什么 / 不做什么

做什么

  • 强证据识别为非滚动规格面板、且第二规格没有滚动区域时,直接收集当前面板中的全部第二规格。
  • 继续过滤价格、数量按钮和提交按钮等非规格文字。
  • 标题包含明确数量时继续校验实际采集数量。
  • 增加完整第二规格采集测试,不再只验证解析器。
  • 保持滚动尺码、横向套餐和纵向套餐续页逻辑不变。

不做什么

  • 不放宽普通未知页面对规格完整性的校验。
  • 不伪造滚动区域,不对非滚动面板执行无意义滑动。
  • 不修改颜色采价、商品详情补采、Admin 接口、数据库和任务状态。
  • 不修改采购流程。

4. 已确认的实现方案

预计修改:

  • client/src/pdd_collect_service.py
    • 在建立第二规格续页上下文之前判断第二规格滚动区域。
    • 只有强证据识别为非滚动规格面板时,使用当前可见第二规格直接返回。
    • 未识别为非滚动面板但又缺少滚动区域时,继续抛出原错误。
    • 复用明确数量完整性校验。
  • client/test/test_pdd_collect_service.py
    • 使用现有脱敏提交提示固件验证非滚动尺码完整返回且不滑动。
    • 保持滚动套餐和数量不足测试通过。

5. 验收标准

  • 提交提示型非滚动面板可以采集 M、L 等全部可见尺码。
  • 非滚动面板采集尺码时不执行滑动。
  • 未经强证据确认的无滚动区域页面仍安全失败。
  • 带明确选项数量但采集不足时仍报告数据不完整。
  • 横向、纵向第二规格续页测试保持通过。
  • Client 全量测试通过。

6. 验证方式

从 client 目录执行:

C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_collect_service.py"
C:/Python310/python.exe -m unittest discover -s test -p "test_*.py"

预期:相关采集测试及 Client 全量测试全部通过。

风险和回退

  • 风险:错误地把实际上可滚动但未暴露属性的长规格列表当作完整结果。
  • 控制:只接受现有强证据非滚动面板;标题含选项数量时继续执行数量校验;普通未知结构保持失败。
  • 回退:移除静态第二规格分支,恢复强制建立续页上下文的行为。
## 1. 基本信息 - 类型:Client 缺陷修复 - 父级大工单:#1 - 所属 MVP:#2 - 阶段:PDD 规格采集兼容 ## 2. 要解决什么 采集商品 823647390597 时稳定失败: `PDD_DATA_SPEC_INCOMPLETE:无法定位第二规格滚动区域:尺码` 已确认事实: - 控件树已经识别“尺码”及 M、L、XL、2XL、3XL。 - 所有尺码节点都能定位。 - 规格面板没有任何 `scrollable="true"` 节点,属于非滚动自绘面板。 - #168 增加第二规格续页上下文后,无条件要求第二规格存在滚动容器。 - #175 让提交提示型面板可以进入完整采集流程,从而暴露该历史兼容缺口。 - 现有脱敏固件 `pdd_spec_panel_submit_hint.xml` 可以稳定复现。 ## 3. 做什么 / 不做什么 ### 做什么 - 强证据识别为非滚动规格面板、且第二规格没有滚动区域时,直接收集当前面板中的全部第二规格。 - 继续过滤价格、数量按钮和提交按钮等非规格文字。 - 标题包含明确数量时继续校验实际采集数量。 - 增加完整第二规格采集测试,不再只验证解析器。 - 保持滚动尺码、横向套餐和纵向套餐续页逻辑不变。 ### 不做什么 - 不放宽普通未知页面对规格完整性的校验。 - 不伪造滚动区域,不对非滚动面板执行无意义滑动。 - 不修改颜色采价、商品详情补采、Admin 接口、数据库和任务状态。 - 不修改采购流程。 ## 4. 已确认的实现方案 预计修改: - `client/src/pdd_collect_service.py` - 在建立第二规格续页上下文之前判断第二规格滚动区域。 - 只有强证据识别为非滚动规格面板时,使用当前可见第二规格直接返回。 - 未识别为非滚动面板但又缺少滚动区域时,继续抛出原错误。 - 复用明确数量完整性校验。 - `client/test/test_pdd_collect_service.py` - 使用现有脱敏提交提示固件验证非滚动尺码完整返回且不滑动。 - 保持滚动套餐和数量不足测试通过。 ## 5. 验收标准 - [x] 提交提示型非滚动面板可以采集 M、L 等全部可见尺码。 - [x] 非滚动面板采集尺码时不执行滑动。 - [x] 未经强证据确认的无滚动区域页面仍安全失败。 - [x] 带明确选项数量但采集不足时仍报告数据不完整。 - [x] 横向、纵向第二规格续页测试保持通过。 - [x] Client 全量测试通过。 ## 6. 验证方式 从 `client` 目录执行: ```powershell C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_collect_service.py" C:/Python310/python.exe -m unittest discover -s test -p "test_*.py" ``` 预期:相关采集测试及 Client 全量测试全部通过。 ## 风险和回退 - 风险:错误地把实际上可滚动但未暴露属性的长规格列表当作完整结果。 - 控制:只接受现有强证据非滚动面板;标题含选项数量时继续执行数量校验;普通未知结构保持失败。 - 回退:移除静态第二规格分支,恢复强制建立续页上下文的行为。
Author
Owner

实施完成,待用户验收

最终实现

  • 只有强证据确认的非滚动规格面板才直接返回当前第二规格。
  • 静态分支不滑动,继续过滤非规格文字并校验标题中的明确数量。
  • 普通未知结构、横向套餐和纵向套餐仍走原有安全校验及续页流程。

验证结果

  • PDD 采集测试:67 个通过。
  • Client 全量测试:442 个通过。
  • 本机失败控件树只读验证:得到 M、L、XL、2XL、3XL,滑动 0 次。
  • 未连接真机重新采集并提交 Admin,等待用户验收。

提交与归档

  • 实现提交:2088bc3
  • 归档提交:69b3200
  • 归档:docs/task/177-兼容非滚动面板静态尺码采集.md

状态:已完成,等待用户验收。

## 实施完成,待用户验收 ### 最终实现 - 只有强证据确认的非滚动规格面板才直接返回当前第二规格。 - 静态分支不滑动,继续过滤非规格文字并校验标题中的明确数量。 - 普通未知结构、横向套餐和纵向套餐仍走原有安全校验及续页流程。 ### 验证结果 - PDD 采集测试:67 个通过。 - Client 全量测试:442 个通过。 - 本机失败控件树只读验证:得到 M、L、XL、2XL、3XL,滑动 0 次。 - 未连接真机重新采集并提交 Admin,等待用户验收。 ### 提交与归档 - 实现提交:`2088bc3` - 归档提交:`69b3200` - 归档:`docs/task/177-兼容非滚动面板静态尺码采集.md` 状态:已完成,等待用户验收。
Author
Owner

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

用户于 2026-08-13 明确验收通过。本地归档状态已更新,批量验收记录提交:`ad44f83`。现关闭工单。
ila closed this issue 2026-08-13 15:58:41 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#177