3.4 KiB
3.4 KiB
251 安全兼容采购规格繁简体唯一匹配
- 类型:缺陷
- 父级大工单:#1
- 所属 MVP / 版本:#2
- 状态:已完成,待用户验收
- 日期:2026-08-17
- Gitea 工单:#251
背景与目标
采购任务 cg44 的目标颜色使用繁体文字,PDD 规格面板显示对应简体文字。 原选择器只做原文严格匹配,完成横向扫描后仍错误报告找不到目标颜色。
本任务让颜色和尺码支持安全的繁简等价比较,同时保证候选不唯一时停止采购, 不使用包含关系、编辑距离或其他模糊匹配。
最终方案
- 使用 Windows
LCMapStringEx生成简体规格比较键,不增加第三方依赖。 - 比较前执行 Unicode NFKC;原文、Admin payload 和 SQLite 数据保持不变。
- 原文精确匹配优先;只有繁简规范化候选的安全点击边界唯一时才允许点击。
- 同一卡片的外层和文字点击区域按包含关系合并,避免误判为两个候选。
- 多个不同繁简等价候选返回
target_ambiguous,不点击任何候选。 - 点击前完成唯一性检查;点击后允许 PDD 新增“已选”摘要,并继续用最新控件树确认选中状态。
- 颜色、尺码选择失败在对应性能阶段内抛出,使日志准确记录为
failed。
与建单方案一致,没有修改 Admin 接口、数据库、任务状态、地址、价格数量复核、 不可逆门禁和下单流程。
改了哪些
client/src/util/select_color_size.py- 增加繁简规格规范化、精确匹配优先、候选边界合并和歧义拒绝。
- 增加尺码选择失败原因。
client/src/pdd_u2_purchase_adapter.py- 增加颜色、尺码繁简歧义提示。
- 修正选择失败阶段的性能日志结果。
client/test/test_select_color_size.py- 覆盖繁简颜色、繁简尺码和重复候选拒绝。
client/test/test_pdd_u2_purchase_adapter.py- 覆盖颜色、尺码失败时性能阶段记录为失败。
验收结果
| 验收标准 | 结果 |
|---|---|
| 繁体颜色唯一匹配 PDD 简体颜色 | 通过 |
| 繁体尺码唯一匹配 PDD 简体尺码 | 通过 |
| 原有完全一致规格保持原逻辑 | 通过 |
| 多个繁简等价候选时不点击并返回歧义 | 通过 |
| 不使用包含关系或编辑距离猜测规格 | 通过 |
颜色、尺码选择失败计时记录为 failed |
通过 |
| 不修改不可逆门禁、地址和提交逻辑 | 通过 |
| 专项及 Client 回归 | 专项通过;全量有 2 个既有版本断言失败 |
测试
- 执行的命令:
C:/Python310/python.exe -m py_compile src/util/select_color_size.py src/pdd_u2_purchase_adapter.pyC:/Python310/python.exe -m pytest test/test_select_color_size.py test/test_pdd_u2_purchase_adapter.py -q --disable-warningsC:/Python310/python.exe -m pytest test -q --disable-warnings
- 结果:
- 语法检查通过。
- 专项测试 60 项全部通过。
- 全量测试 478 项中 476 项通过。
- 2 项既有失败均为当前版本
0.1.2与旧测试固定期待0.1.0不一致,和 #251 无关。 - 对当前真机控件树做了只读验证:繁体目标可唯一定位简体颜色卡片,未点击。
- 没验证到的部分:未在真机执行选色、选尺码、地址修改、下单或付款;需用户使用新采购任务验收完整流程。
相关提交
134514e安全兼容采购规格繁简匹配