Client 已选中颜色后,目标尺码无法直接匹配时会完整遍历 PDD 第二规格并等待 Admin 解析。完整遍历可能把规格面板留在尺码列表末端,使已选颜色节点和完整“已选”摘要离开当前无障碍控件树。apply_resolved_size 当前先调用 _selected 复核颜色,失败后才调用 _restore_purchase_panel_color_region,导致实际颜色未变时误报 PURCHASE_SPEC_CONTEXT_CHANGED:等待规格解析期间已选颜色发生变化。
apply_resolved_size
_selected
_restore_purchase_panel_color_region
PURCHASE_SPEC_CONTEXT_CHANGED:等待规格解析期间已选颜色发生变化
本地记录显示 cg52 两次、cg59 一次都在 Admin 已返回同一候选快照的唯一结果后触发该错误;现有诊断没有保存失败控件树,因此修复仍须保持强证据和安全停止,不得直接跳过颜色复核。
cg52
cg59
client/src/pdd_u2_purchase_adapter.py
PURCHASE_PANEL_COLOR_REGION_NOT_FOUND
PURCHASE_SPEC_CONTEXT_CHANGED
context_check=selected_color
client/test/test_pdd_u2_purchase_adapter.py
docs/client/06-quality-security.md
预计修改文件:
从 client/ 目录执行:
client/
C:/Python310/python.exe -m py_compile src/pdd_u2_purchase_adapter.py C:/Python310/python.exe -m pytest -q test/test_pdd_u2_purchase_adapter.py test/test_purchase_task_service.py C:/Python310/python.exe -m pytest -q test $env:QT_QPA_PLATFORM="offscreen" C:/Python310/python.exe -c "from src.ui_main import MainWindow; from PyQt5.QtWidgets import QApplication; app=QApplication([]); w=MainWindow(); print('OK'); app.quit()" Remove-Item Env:QT_QPA_PLATFORM
真机验收只观察颜色区域恢复、颜色复核和尺码选择;若继续至提交订单,必须按既有真实采购单次提交门禁执行,绝不付款。
风险是恢复动作改变面板位置后仍使用旧 XML,或把无法确认误当成颜色未变。实现必须使用恢复函数返回的最新 XML 再复核,任何恢复失败、页面变化或选中证据不足都安全停止。回退仅恢复原复核顺序,不涉及数据库和接口迁移;不得以移除颜色复核作为回退。
b0cddb9
024f5e6
docs/task/266-修正规格候选遍历后的颜色复核顺序.md
OK
version.py=0.1.2
0.1.0
工单保持开启,待用户真机验收后关闭并同步父工单。
#267 根据真机流程修订 #266 的最终实现顺序:不再在 AI 返回后强制先恢复颜色区域,改为先复算并选择尺码、再核对完整组合,摘要不足时才兜底恢复颜色。#266 保留实现记录,最终行为以 #267 为准。
No dependencies set.
The note is not visible to the blocked user.
基本信息
要解决什么
Client 已选中颜色后,目标尺码无法直接匹配时会完整遍历 PDD 第二规格并等待 Admin 解析。完整遍历可能把规格面板留在尺码列表末端,使已选颜色节点和完整“已选”摘要离开当前无障碍控件树。
apply_resolved_size当前先调用_selected复核颜色,失败后才调用_restore_purchase_panel_color_region,导致实际颜色未变时误报PURCHASE_SPEC_CONTEXT_CHANGED:等待规格解析期间已选颜色发生变化。本地记录显示
cg52两次、cg59一次都在 Admin 已返回同一候选快照的唯一结果后触发该错误;现有诊断没有保存失败控件树,因此修复仍须保持强证据和安全停止,不得直接跳过颜色复核。做什么 / 不做什么
已确认的实现方案
client/src/pdd_u2_purchase_adapter.py:apply_resolved_size首先重读并验证页面类型;随后调用既有_restore_purchase_panel_color_region,使用其返回的最新 XML 再执行_selected。恢复失败沿用PURCHASE_PANEL_COLOR_REGION_NOT_FOUND,不伪装成颜色变化。PURCHASE_SPEC_CONTEXT_CHANGED,并保留context_check=selected_color;不因颜色文字仅繁简不同而失败。client/test/test_pdd_u2_purchase_adapter.py:构造候选遍历后颜色滑出屏幕、恢复后仍选中的控件树;验证恢复发生在颜色复核之前;覆盖明确换色和无法恢复时安全失败。docs/client/06-quality-security.md,说明候选遍历后的颜色复核必须先恢复可观察区域。预计修改文件:
client/src/pdd_u2_purchase_adapter.pyclient/test/test_pdd_u2_purchase_adapter.pydocs/client/06-quality-security.md验收标准
PURCHASE_SPEC_CONTEXT_CHANGED,不点击返回尺码。PURCHASE_PANEL_COLOR_REGION_NOT_FOUND,不误报颜色变化。验证方式
从
client/目录执行:真机验收只观察颜色区域恢复、颜色复核和尺码选择;若继续至提交订单,必须按既有真实采购单次提交门禁执行,绝不付款。
风险和回退
风险是恢复动作改变面板位置后仍使用旧 XML,或把无法确认误当成颜色未变。实现必须使用恢复函数返回的最新 XML 再复核,任何恢复失败、页面变化或选中证据不足都安全停止。回退仅恢复原复核顺序,不涉及数据库和接口迁移;不得以移除颜色复核作为回退。
实施完成,等待用户验收
b0cddb9024f5e6docs/task/266-修正规格候选遍历后的颜色复核顺序.mdOK)version.py=0.1.2与旧测试期待0.1.0的基线差异,与 #266 无关工单保持开启,待用户真机验收后关闭并同步父工单。
#267 根据真机流程修订 #266 的最终实现顺序:不再在 AI 返回后强制先恢复颜色区域,改为先复算并选择尺码、再核对完整组合,摘要不足时才兜底恢复颜色。#266 保留实现记录,最终行为以 #267 为准。