Files
cmautobuy/docs/task/251-安全兼容采购规格繁简体唯一匹配.md
T
2026-08-17 15:21:09 +08:00

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.py
    • C:/Python310/python.exe -m pytest test/test_select_color_size.py test/test_pdd_u2_purchase_adapter.py -q --disable-warnings
    • C:/Python310/python.exe -m pytest test -q --disable-warnings
  • 结果:
    • 语法检查通过。
    • 专项测试 60 项全部通过。
    • 全量测试 478 项中 476 项通过。
    • 2 项既有失败均为当前版本 0.1.2 与旧测试固定期待 0.1.0 不一致,和 #251 无关。
    • 对当前真机控件树做了只读验证:繁体目标可唯一定位简体颜色卡片,未点击。
  • 没验证到的部分:未在真机执行选色、选尺码、地址修改、下单或付款;需用户使用新采购任务验收完整流程。

相关提交

  • 134514e 安全兼容采购规格繁简匹配