diff --git a/docs/task/137-修复带数量规格标题导致面板误报超时.md b/docs/task/137-修复带数量规格标题导致面板误报超时.md new file mode 100644 index 0000000..1152c50 --- /dev/null +++ b/docs/task/137-修复带数量规格标题导致面板误报超时.md @@ -0,0 +1,69 @@ +# 137 修复带数量规格标题导致面板误报超时 + +- 类型:缺陷 +- 父级大工单:#1 +- 所属 MVP / 版本:#2 / MVP +- 状态:待验收 +- 日期:2026-08-11 +- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/137 + +## 背景与目标 + +采集任务点击规格入口后报 `SKU_PANEL_NOT_FOUND`。两份真机失败 XML +实际上已经包含规格面板、`颜色 (6)`、6个颜色和尺码标题,但旧解析器不认识 +带数量的颜色标题,连续等待10秒后误报面板加载超时。 + +本任务让解析器兼容带数量的规格标题,并把“面板已经打开”和“当前视口已经 +解析出规格选项”分开判断,避免错误归类。 + +## 最终方案 + +- 判断规格标题前,仅去掉末尾的半角或全角括号数量;规格维度名称仍保留原文。 +- 规格面板存在性要求同时出现有效可滚动区域和可靠的选择摘要或提交提示。 +- 已识别到规格维度,或者已经确认面板存在时,立即结束面板等待。 +- 面板存在但规格确实不完整时,由后续流程返回 + `PDD_DATA_SPEC_INCOMPLETE`,不再误报面板未找到。 +- 从本次真机失败结构提炼脱敏最小 XML 固件,不提交原始设备诊断 XML。 +- 没有修改规格入口坐标、颜色遍历、逐色价格、尺码滚动、Admin 接口和数据库。 + +实际实现与建单方案一致。 + +## 改了哪些 + +- `client/src/pdd_collect_service.py`:兼容带数量的规格标题,增加独立的规格面板存在性判断。 +- `client/test/fixtures/pdd_spec_panel_count_heading.xml`:增加脱敏的失败结构回归固件。 +- `client/test/test_pdd_collect_service.py`:覆盖半角/全角数量标题、面板已打开和真实未打开超时等场景。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| `颜色 (6)` 识别为颜色维度并解析6个颜色 | 通过 | +| `颜色(6)` 全角数量标题可以识别 | 通过 | +| 面板已打开时不再等待10秒并误报超时 | 通过 | +| 真正没有打开面板时仍返回面板超时 | 通过 | +| 面板已打开但规格不完整时返回规格不完整 | 通过 | +| 原有采集、采购、界面等 Client 回归测试 | 通过 | +| 不执行采购、下单或付款 | 通过,自动测试和本次验证均未连接真机执行任务 | + +## 测试 + +- 执行的命令: + +```powershell +# client 目录 +C:/Python310/python.exe -m unittest discover -s test -p 'test_pdd_collect_service.py' -v +C:/Python310/python.exe -m unittest discover -s test -p 'test_pdd_real_xml_fixtures.py' -v +C:/Python310/python.exe -m py_compile src/pdd_collect_service.py +C:/Python310/python.exe -m unittest discover -s test -p 'test_*.py' -q +``` + +- 结果:采集专项36项、真实 XML 4项、Client 全量368项全部通过;语法检查通过。 +- 补充验证:本次09:50和09:52保存的两份失败 XML 均解析出 + `color / 颜色 (6) / 6个值`。 +- **没验证到的部分**:未在真机重新执行完整采集任务,因此尚未验证修复后 + 颜色采集、尺码滚动和向 Admin 提交的完整真机闭环。 + +## 相关提交 + +- `4ed9400` `fix: 兼容带数量的规格面板标题 (#137)`