修复 AI 规格返回后的繁简体颜色复核误判 #260

Open
opened 2026-08-18 09:09:32 +08:00 by ila · 1 comment
Owner

基本信息

  • 类型:缺陷
  • 父级大工单:#96
  • 所属 MVP / 版本:#253 采购运行时 AI 规格纠偏闭环
  • 阶段:阶段 5,跨端契约、异常路径和真实设备验收

要解决什么

Client 在采购任务颜色为繁体、PDD App 同一颜色显示为简体时,初次选择会按现有繁简归一化规则成功,但等待 Admin 规格解析返回后,apply_resolved_size 使用逐字颜色复核,误报 PURCHASE_SPEC_CONTEXT_CHANGED:等待规格解析期间页面或已选颜色发生变化。

复现:任务 cg44 的颜色为 縹緲仙姬綰【黑色】,PDD 页面显示并选中 缥缈仙姬绾【黑色】;Admin 两次均成功返回唯一尺码,Client 在点击返回尺码前失败。现场只读检查确认页面仍为规格确认页,逐字复核为 false,而现有繁简归一化选中复核为 true。

做什么 / 不做什么

  • 做:统一初次选色与 AI 返回后复核的繁简体比较语义;保留页面类型、颜色真实选中和候选快照复核;细分页面���化与颜色变化诊断;补充繁简等价及真实变化的回归测试。
  • 不做:不放宽候选白名单、快照哈希、数量、价格、地址、不可逆标记和单次提交门禁;不修改数据库或 Admin 接口;不自动付款;不处理无关规格采集问题。

怎么做

  • 修改 client/src/pdd_u2_purchase_adapter.py,让 AI 返回后的颜色选中复核复用 client/src/util/select_color_size.py 的规格归一化语义,不再用逐字字符串判断繁简等价颜色。
  • 保留 order_confirmation 页面判断;页面不符和颜色未选中分别返回可定位的错误消息及最小诊断字段。
  • 候选重新采集、候选哈希和原文逐字校验保持不变;只有当前页面仍是确认页、繁简等价颜色仍明确选中且候选未变化时,才允许点击 Admin 返回的候选原文。
  • 在 client/test/test_pdd_u2_purchase_adapter.py 增加任务繁体/PDD 简体成功、颜色真正切换或取消时停止、页面变化时停止的用例;必要时补规格选择工具测试。

验收标准

  • 任务颜色为繁体、PDD 页面唯一对应简体颜色且仍明确选中时,不再误报 PURCHASE_SPEC_CONTEXT_CHANGED。
  • 页面离开规格确认页时仍安全失败,并明确记录页面变化。
  • 颜色真正未选中或切换为其他颜色时仍安全失败,并明确记录颜色变化。
  • 候选列表、候选哈希或返回候选原文变化时仍拒绝继续。
  • 所有检查通过后只点击 Admin 返回的候选原文,继续复用数量、价格、地址、不可逆标记和单次提交门禁。
  • 不上传或保存原始控件树、个人数据和凭据;不自动付款。
  • Python 3.10 定向测试、Client 回归和离屏 UI 冒烟通过;真机复测结果如实记录。

怎么验证

从 client/ 执行:

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
C:/Python310/python.exe -m py_compile src/pdd_u2_purchase_adapter.py src/util/select_color_size.py
$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

真机:在任务目标颜色为繁体、PDD App 显示简体的受控任务上重测到尺码成功选中;不得把真实提交或付款作为自动化测试步骤。

风险和回退

风险是繁简归���化后错误接受多个等价颜色或已经切换的颜色。实现必须继续依赖真实 selected/checked 证据,并保留页面与候选快照复核;不以“文字相似”代替选中状态。回退时恢复 AI 返回后的严格复核,任务回到安全失败,不修改已有审计记录或采购数据。

## 基本信息 - 类型:缺陷 - 父级大工单:#96 - 所属 MVP / 版本:#253 采购运行时 AI 规格纠偏闭环 - 阶段:阶段 5,跨端契约、异常路径和真实设备验收 ## 要解决什么 Client 在采购任务颜色为繁体、PDD App 同一颜色显示为简体时,初次选择会按现有繁简归一化规则成功,但等待 Admin 规格解析返回后,`apply_resolved_size` 使用逐字颜色复核,误报 `PURCHASE_SPEC_CONTEXT_CHANGED:等待规格解析期间页面或已选颜色发生变化`。 复现:任务 `cg44` 的颜色为 `縹緲仙姬綰【黑色】`,PDD 页面显示并选中 `缥缈仙姬绾【黑色】`;Admin 两次均成功返回唯一尺码,Client 在点击返回尺码前失败。现场只读检查确认页面仍为规格确认页,逐字复核为 false,而现有繁简归一化选中复核为 true。 ## 做什么 / 不做什么 - 做:统一初次选色与 AI 返回后复核的繁简体比较语义;保留页面类型、颜色真实选中和候选快照复核;细分页面���化与颜色变化诊断;补充繁简等价及真实变化的回归测试。 - 不做:不放宽候选白名单、快照哈希、数量、价格、地址、不可逆标记和单次提交门禁;不修改数据库或 Admin 接口;不自动付款;不处理无关规格采集问题。 ## 怎么做 - 修改 `client/src/pdd_u2_purchase_adapter.py`,让 AI 返回后的颜色选中复核复用 `client/src/util/select_color_size.py` 的规格归一化语义,不再用逐字字符串判断繁简等价颜色。 - 保留 `order_confirmation` 页面判断;页面不符和颜色未选中分别返回可定位的错误消息及最小诊断字段。 - 候选重新采集、候选哈希和原文逐字校验保持不变;只有当前页面仍是确认页、繁简等价颜色仍明确选中且候选未变化时,才允许点击 Admin 返回的候选原文。 - 在 `client/test/test_pdd_u2_purchase_adapter.py` 增加任务繁体/PDD 简体成功、颜色真正切换或取消时停止、页面变化时停止的用例;必要时补规格选择工具测试。 ## 验收标准 - [ ] 任务颜色为繁体、PDD 页面唯一对应简体颜色且仍明确选中时,不再误报 `PURCHASE_SPEC_CONTEXT_CHANGED`。 - [ ] 页面离开规格确认页时仍安全失败,并明确记录页面变化。 - [ ] 颜色真正未选中或切换为其他颜色时仍安全失败,并明确记录颜色变化。 - [ ] 候选列表、候选哈希或返回候选原文变化时仍拒绝继续。 - [ ] 所有检查通过后只点击 Admin 返回的候选原文,继续复用数量、价格、地址、不可逆标记和单次提交门禁。 - [ ] 不上传或保存原始控件树、个人数据和凭据;不自动付款。 - [ ] Python 3.10 定向测试、Client 回归和离屏 UI 冒烟通过;真机复测结果如实记录。 ## 怎么验证 从 `client/` 执行: ```powershell 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 C:/Python310/python.exe -m py_compile src/pdd_u2_purchase_adapter.py src/util/select_color_size.py $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 ``` 真机:在任务目标颜色为繁体、PDD App 显示简体的受控任务上重测到尺码成功选中;不得把真实提交或付款作为自动化测试步骤。 ## 风险和回退 风险是繁简归���化后错误接受多个等价颜色或已经切换的颜色。实现必须继续依赖真实 `selected/checked` 证据,并保留页面与候选快照复核;不以“文字相似”代替选中状态。回退时恢复 AI 返回后的严格复核,任务回到安全失败,不修改已有审计记录或采购数据。
Author
Owner

实施完成,待真机验收

根因已按现场证据修复:初次选色使用繁简归一化,而 AI 返回后的 _selected 原先逐字比较,导致任务繁体颜色与 PDD 简体颜色虽仍处于选中状态却被误报为上下文变化。

实现:

  • 已选规格复核统一使用既有繁简归一化比较键,仍要求真实 selected/checked 或“已选/已選”摘要证据。
  • 保留页面类型、候选重新采集、候选哈希和原文复核。
  • 页面离开与颜色变化返回不同消息和 context_check 诊断,稳定错误码保持不变。
  • 未修改数据库、Admin 接口和采购安全门禁。

提交:

  • 752d420 fix: 修正规格返回后的繁简体复核 (#260)
  • 160f5cd docs: 归档任务 #260

验证:定向测试 80 项通过;Client 全量 502 项通过、2 项既有版本号断言失败;排除对应旧测试后 482 项通过;语法检查和 PyQt5 离屏 UI 冒烟通过。

未执行真实 Android 的 cg44 完整重测,也未触发提交订单或付款。请使用最新 Client 重测,验收通过后再关闭本工单并更新父工单清单。

## 实施完成,待真机验收 根因已按现场证据修复:初次选色使用繁简归一化,而 AI 返回后的 `_selected` 原先逐字比较,导致任务繁体颜色与 PDD 简体颜色虽仍处于选中状态却被误报为上下文变化。 实现: - 已选规格复核统一使用既有繁简归一化比较键,仍要求真实 `selected/checked` 或“已选/已選”摘要证据。 - 保留页面类型、候选重新采集、候选哈希和原文复核。 - 页面离开与颜色变化返回不同消息和 `context_check` 诊断,稳定错误码保持不变。 - 未修改数据库、Admin 接口和采购安全门禁。 提交: - `752d420` `fix: 修正规格返回后的繁简体复核 (#260)` - `160f5cd` `docs: 归档任务 #260` 验证:定向测试 80 项通过;Client 全量 502 项通过、2 项既有版本号断言失败;排除对应旧测试后 482 项通过;语法检查和 PyQt5 离屏 UI 冒烟通过。 未执行真实 Android 的 `cg44` 完整重测,也未触发提交订单或付款。请使用最新 Client 重测,验收通过后再关闭本工单并更新父工单清单。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#260