From 5e27d4cd754ef16ea7b95f0eff6684ed3a707380 Mon Sep 17 00:00:00 2001 From: chengma Date: Tue, 18 Aug 2026 17:43:22 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?#276?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/task/276-合并近重叠地址入口候选.md | 45 +++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 docs/task/276-合并近重叠地址入口候选.md diff --git a/docs/task/276-合并近重叠地址入口候选.md b/docs/task/276-合并近重叠地址入口候选.md new file mode 100644 index 0000000..3c7d17d --- /dev/null +++ b/docs/task/276-合并近重叠地址入口候选.md @@ -0,0 +1,45 @@ +# 276 合并近重叠地址入口候选 + +- 类型:缺陷 +- 父级大工单:#96 +- 所属 MVP / 版本:#253 采购运行时 AI 规格纠偏闭环 +- 状态:待验收 +- 日期:2026-08-18 +- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/276 + +## 背景与目标 + +采购已正确选中颜色和尺码,但同一收货地址卡片在无障碍控件树中出现两个边界仅相差 1 像素的可点击祖先。旧逻辑按完整坐标去重后仍得到两个候选,因此误报 `PURCHASE_ADDRESS_ENTRY_AMBIGUOUS`。 + +目标是只合并同一卡片产生的近重叠重复节点,同时保留多个真实地址入口的歧义保护。 + +## 最终方案 + +地址入口候选增加严格的几何合并:两个候选的中心坐标每轴相差不超过 3 像素,并且交集覆盖较小候选至少 98% 时,才视为同一卡片。合并后使用所有重复节点的共同交集作为安全点击区域。 + +同一组内的新候选必须与组内每个已有候选都满足条件,避免通过连续的小偏移把不同卡片间接合并。位置明显不同的候选仍保留为多个结果,继续触发原有歧义中断。 + +## 改了哪些文件 + +- `client/src/pdd_u2_purchase_adapter.py`:增加地址候选近重叠判断和严格分组合并。 +- `client/test/test_pdd_u2_purchase_adapter.py`:覆盖 1 像素重复节点合并和真实分离卡片不合并。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 同一地址卡片的 1 像素边界差异合并为一个候选 | 通过 | +| 合并后的点击区域同时位于原候选内部 | 通过 | +| 两个位置明显不同的地址卡片仍保留为两个候选 | 通过 | +| 采购适配器原有行为通过回归测试 | 通过 | + +## 测试 + +- 执行的命令:`C:/Python310/python.exe -m py_compile src/pdd_u2_purchase_adapter.py` +- 执行的命令:`C:/Python310/python.exe -m pytest test/test_pdd_u2_purchase_adapter.py -q` +- 结果:72 passed。 +- **没验证到的部分**:尚未用原失败任务重新执行完整真机采购;未执行下单或付款。 + +## 相关提交 + +- `7c56c29` `fix: 合并近重叠地址入口候选 (#276)`