From 160f5cd183661f96c9c6b4bbc1d94c9692b5d56d Mon Sep 17 00:00:00 2001 From: chengma Date: Tue, 18 Aug 2026 09:13:40 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?#260?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...60-修复AI规格返回后的繁简体颜色复核误判.md | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 docs/task/260-修复AI规格返回后的繁简体颜色复核误判.md diff --git a/docs/task/260-修复AI规格返回后的繁简体颜色复核误判.md b/docs/task/260-修复AI规格返回后的繁简体颜色复核误判.md new file mode 100644 index 0000000..5c4c41d --- /dev/null +++ b/docs/task/260-修复AI规格返回后的繁简体颜色复核误判.md @@ -0,0 +1,55 @@ +# 260 修复 AI 规格返回后的繁简体颜色复核误判 + +- 类型:缺陷 +- 父级大工单:#96 +- 所属 MVP / 版本:#253 采购运行时 AI 规格纠偏闭环 +- 状态:已完成 +- 日期:2026-08-18 +- Gitea 工单: + +## 背景与目标 + +任务颜色为繁体、PDD App 同一颜色显示为简体时,初次选择颜色会按既有繁简归一化规则成功;但等待 Admin 返回规格解析结果后,Client 使用逐字字符串重新检查颜色,误报 `PURCHASE_SPEC_CONTEXT_CHANGED`。目标是在不削弱页面、选中状态和候选快照安全检查的前提下消除该误报。 + +## 最终方案 + +- 采购 Adapter 的已选规格判断统一使用既有 `normalize_spec_text` 比较键,原始规格文字仍用于任务、审计和点击。 +- 规格节点或祖先仍必须具有真实 `selected/checked` 属性;节点滑出屏幕时仍只接受“已选/已選”摘要作为证据,不进行模糊匹配。 +- AI 返回后继续先检查规格确认页,再检查颜色选中状态,最后重新采集并比较候选哈希与候选原文。 +- 页面离开和颜色不再选中继续使用稳定错误码 `PURCHASE_SPEC_CONTEXT_CHANGED`,但返回不同消息及最小诊断字段,便于定位。 +- 未修改数据库、Admin 接口、任务规格原文、不可逆标记或真实采购门禁。 + +## 改了哪些 + +- `client/src/pdd_u2_purchase_adapter.py`:统一繁简体选中复核,并拆分页面与颜色上下文诊断。 +- `client/test/test_pdd_u2_purchase_adapter.py`:增加任务繁体/PDD 简体成功,以及页面或颜色真正变化时安全停止的测试。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 唯一繁简等价颜色仍明确选中时不再误报上下文变化 | 通过 | +| 页面离开规格确认页时仍安全失败并记录页面诊断 | 通过 | +| 颜色真正未选中或切换时仍安全失败并记录颜色诊断 | 通过 | +| 候选列表、哈希和返回原文复核保持不变 | 通过 | +| 数量、价格、地址、不可逆标记和单次提交门禁未放宽 | 通过 | +| 不保存原始 XML、个人数据或凭据,不自动付款 | 通过 | + +## 测试 + +- 执行的命令: + - `C:/Python310/python.exe -m py_compile src/pdd_u2_purchase_adapter.py test/test_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 --disable-warnings` + - `C:/Python310/python.exe -m pytest -q test` + - `C:/Python310/python.exe -m pytest -q test --disable-warnings --ignore=test/test_update_service.py --ignore=test/test_update_ui_event.py` + - 设置 `QT_QPA_PLATFORM=offscreen` 后创建并关闭 `MainWindow`。 +- 结果:定向测试 80 项通过;Client 全量测试 502 项通过、2 项既有版本号断言失败;排除两个既有版本号测试文件后 482 项通过;语法检查和离屏 UI 冒烟通过。 +- **没验证到的部分**:没有在真实 Android 设备上重新执行 `cg44` 的完整规格解析后采购链路;没有触发提交订单或付款。 + +## 遗留问题 + +- 工作区已有 `client/src/version.py` 为 `0.1.2`,两个旧测试仍固定期待 `0.1.0`;该问题不属于 #260。 + +## 相关提交 + +- `752d420` 修正规格返回后的繁简体复核。