Client:兼容非滚动图片颜色卡片的采购选择 #178

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

1. 基本信息

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

2. 要解决什么

采购任务 cg3(商品 823647390597)失败:

PURCHASE_OPTIONS_MISMATCH:没有精确选中颜色:藏青色

已确认事实:

  • “藏青色”卡片存在、可见、启用且可点击,坐标为 [36,1188][352,1591]。
  • 页面属于非滚动自绘颜色面板。
  • 采购工具按“标题下方屏幕高度 14%”估算颜色区域,得到 [43,1163][1036,1495]。
  • 卡片下方超出估算区域,安全检查拒绝该目标,最终点击坐标为 None。
  • 选择函数没有点击颜色,却继续执行无意义的横向滑动,约 10.6 秒后用统一错误结束。
  • #175/#177 只修改采集流程,与本问题无关;核心区域估算是历史兼容缺口。

3. 做什么 / 不做什么

做什么

  • 对目标已存在、没有可滚动祖先的图片颜色卡片,根据实际卡片和同组容器计算安全颜色区域。
  • 目标卡片完整显示、位于颜色标题之后且未越过下一规格标题时,允许点击。
  • 静态非滚动面板中目标已经可见时,不进行无意义横向滑动。
  • 点击后仍必须使用最新控件树的 selected/checked 或“已选”摘要确认。
  • 区分“没有安全点击坐标”和“点击后没有确认选中”的内部失败原因,并为采购选项不匹配保存脱敏诊断控件树。
  • 使用现有脱敏提交提示规格固件补回归。

不做什么

  • 不允许点击部分露出的左右边缘卡片。
  • 不按模糊文本匹配颜色,不取消精确匹配。
  • 不以“点击已发出”代替“选中已确认”。
  • 不修改尺码选择、数量、地址、提交订单、不可逆门禁和核单流程。
  • 不提交真实设备原始 XML。

4. 已确认的实现方案

预计修改:

  • client/src/util/select_color_size.py
    • 增加非滚动颜色区域计算:使用目标可点击卡片、最近共同容器、颜色标题和下一规格标题约束纵向范围。
    • 横向安全规则继续检查卡片宽度、左右边缘及完整可见性。
    • 选择函数返回结构化失败原因,或通过兼容方式让 Adapter 能区分“无坐标”和“未确认”。
  • client/src/pdd_u2_purchase_adapter.py
    • 将失败原因映射成更准确的中文错误。
    • 选项不匹配时保存脱敏控件树并写入诊断信息。
  • 对应测试文件
    • 非滚动高图片卡片能生成安全坐标并完成已选确认。
    • 部分露出、越过下一规格标题、点击后未确认仍失败。
    • 静态目标可见时不横向滑动。
    • 原滚动颜色、款式、尺码和采购安全测试保持通过。

5. 验收标准

  • 非滚动高图片颜色卡片完整显示时能够点击目标颜色。
  • 点击后只有最新控件树确认目标已选才返回成功。
  • 静态目标可见时不执行横向滑动。
  • 部分露出或越过下一规格标题的节点仍拒绝点击。
  • 无安全坐标与点击后未确认使用明确错误及脱敏诊断。
  • 尺码选择及采购不可逆安全门禁不变。
  • Client 全量测试通过。

6. 验证方式

从 client 目录执行:

C:/Python310/python.exe -m unittest discover -s test -p "test_select_color_size.py"
C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_u2_purchase_adapter.py"
$env:QT_QPA_PLATFORM="offscreen"
C:/Python310/python.exe -m unittest discover -s test -p "test_*.py"

预期:相关选择、采购 Adapter 和 Client 全量测试全部通过。

风险和回退

  • 风险:错误扩大颜色区域可能点击尺码或其他卡片。
  • 控制:继续精确文本匹配;目标必须可见、启用、完整显示、位于颜色标题后且不越过下一规格标题;点击后必须再次确认选中。
  • 风险:采购属于高风险流程。
  • 控制:不修改提交订���、不修改不可逆门禁;本任务测试不连接真机、不执行下单。
  • 回退:恢复原固定区域计算和统一错误,其他采购流程无需回退。
## 1. 基本信息 - 类型:Client 采购缺陷修复 - 父级大工单:#1 - 所属 MVP:#2 - 阶段:PDD 采购规格选择兼容 ## 2. 要解决什么 采购任务 cg3(商品 823647390597)失败: `PURCHASE_OPTIONS_MISMATCH:没有精确选中颜色:藏青色` 已确认事实: - “藏青色”卡片存在、可见、启用且可点击,坐标为 `[36,1188][352,1591]`。 - 页面属于非滚动自绘颜色面板。 - 采购工具按“标题下方屏幕高度 14%”估算颜色区域,得到 `[43,1163][1036,1495]`。 - 卡片下方超出估算区域,安全检查拒绝该目标,最终点击坐标为 `None`。 - 选择函数没有点击颜色,却继续执行无意义的横向滑动,约 10.6 秒后用统一错误结束。 - #175/#177 只修改采集流程,与本问题无关;核心区域估算是历史兼容缺口。 ## 3. 做什么 / 不做什么 ### 做什么 - 对目标已存在、没有可滚动祖先的图片颜色卡片,根据实际卡片和同组容器计算安全颜色区域。 - 目标卡片完整显示、位于颜色标题之后且未越过下一规格标题时,允许点击。 - 静态非滚动面板中目标已经可见时,不进行无意义横向滑动。 - 点击后仍必须使用最新控件树的 `selected/checked` 或“已选”摘要确认。 - 区分“没有安全点击坐标”和“点击后没有确认选中”的内部失败原因,并为采购选项不匹配保存脱敏诊断控件树。 - 使用现有脱敏提交提示规格固件补回归。 ### 不做什么 - 不允许点击部分露出的左右边缘卡片。 - 不按模糊文本匹配颜色,不取消精确匹配。 - 不以“点击已发出”代替“选中已确认”。 - 不修改尺码选择、数量、地址、提交订单、不可逆门禁和核单流程。 - 不提交真实设备原始 XML。 ## 4. 已确认的实现方案 预计修改: - `client/src/util/select_color_size.py` - 增加非滚动颜色区域计算:使用目标可点击卡片、最近共同容器、颜色标题和下一规格标题约束纵向范围。 - 横向安全规则继续检查卡片宽度、左右边缘及完整可见性。 - 选择函数返回结构化失败原因,或通过兼容方式让 Adapter 能区分“无坐标”和“未确认”。 - `client/src/pdd_u2_purchase_adapter.py` - 将失败原因映射成更准确的中文错误。 - 选项不匹配时保存脱敏控件树并写入诊断信息。 - 对应测试文件 - 非滚动高图片卡片能生成安全坐标并完成已选确认。 - 部分露出、越过下一规格标题、点击后未确认仍失败。 - 静态目标可见时不横向滑动。 - 原滚动颜色、款式、尺码和采购安全测试保持通过。 ## 5. 验收标准 - [x] 非滚动高图片颜色卡片完整显示时能够点击目标颜色。 - [x] 点击后只有最新控件树确认目标已选才返回成功。 - [x] 静态目标可见时不执行横向滑动。 - [x] 部分露出或越过下一规格标题的节点仍拒绝点击。 - [x] 无安全坐标与点击后未确认使用明确错误及脱敏诊断。 - [x] 尺码选择及采购不可逆安全门禁不变。 - [x] Client 全量测试通过。 ## 6. 验证方式 从 `client` 目录执行: ```powershell C:/Python310/python.exe -m unittest discover -s test -p "test_select_color_size.py" C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_u2_purchase_adapter.py" $env:QT_QPA_PLATFORM="offscreen" C:/Python310/python.exe -m unittest discover -s test -p "test_*.py" ``` 预期:相关选择、采购 Adapter 和 Client 全量测试全部通过。 ## 风险和回退 - 风险:错误扩大颜色区域可能点击尺码或其他卡片。 - 控制:继续精确文本匹配;目标必须可见、启用、完整显示、位于颜色标题后且不越过下一规格标题;点击后必须再次确认选中。 - 风险:采购属于高风险流程。 - 控制:不修改提交订���、不修改不可逆门禁;本任务测试不连接真机、不执行下单。 - 回退:恢复原固定区域计算和统一错误,其他采购流程无需回退。
Author
Owner

实施完成,待用户验收

最终实现

  • 非滚动图片颜色卡片使用实际卡片与下一规格标题计算安全区域。
  • 完整卡片可点击;部分露出或越过下一规格标题仍拒绝。
  • 静态目标点击后未确认立即失败,不再横向盲滑。
  • 最新控件树确认规则、尺码流程和采购不可逆门禁保持不变。
  • 选项失败会区分阶段并保存脱敏诊断控件树。

验证结果

  • 颜色选择测试:4 个通过。
  • 采购 Adapter 测试:29 个通过。
  • Client 全量测试:447 个通过。
  • 手机当前树只读计算:藏青色卡片 [36,1188][352,1591],唯一中心点 (194,1389)。
  • 未点击真机,未执行真实下单,等待用户验收。

提交与归档

  • 实现提交:cd9c552
  • 归档提交:944d2cd
  • 归档:docs/task/178-兼容非滚动图片颜色采购选择.md

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

## 实施完成,待用户验收 ### 最终实现 - 非滚动图片颜色卡片使用实际卡片与下一规格标题计算安全区域。 - 完整卡片可点击;部分露出或越过下一规格标题仍拒绝。 - 静态目标点击后未确认立即失败,不再横向盲滑。 - 最新控件树确认规则、尺码流程和采购不可逆门禁保持不变。 - 选项失败会区分阶段并保存脱敏诊断控件树。 ### 验证结果 - 颜色选择测试:4 个通过。 - 采购 Adapter 测试:29 个通过。 - Client 全量测试:447 个通过。 - 手机当前树只读计算:藏青色卡片 [36,1188][352,1591],唯一中心点 (194,1389)。 - 未点击真机,未执行真实下单,等待用户验收。 ### 提交与归档 - 实现提交:`cd9c552` - 归档提交:`944d2cd` - 归档:`docs/task/178-兼容非滚动图片颜色采购选择.md` 状态:已完成,等待用户验收。
Author
Owner

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

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