diff --git a/docs/task/273-档口货号括号与前导零匹配.md b/docs/task/273-档口货号括号与前导零匹配.md new file mode 100644 index 0000000..661fca1 --- /dev/null +++ b/docs/task/273-档口货号括号与前导零匹配.md @@ -0,0 +1,56 @@ +# 273 Admin:修复档口货号中文括号与前导零匹配 + +- 类型:缺陷 +- 父级大工单:#14 +- 所属 MVP / 版本:#224 +- 状态:已完成,待用户验收 +- 日期:2026-08-18 +- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/273 + +## 背景与目标 + +18 号档口入库码订单 `260814A21AAB1G` 有一条规格可以唯一命中顺运宝商品,但档口 +`将客大码网批#067` 无法匹配候选 SKU `067【将客大码网批】...` 和 variationSku +`汽配-将客大码网批#67...`。目标是在不放宽唯一性和远端写入门禁的前提下兼容中文 +括号边界及纯数字货号前导零。 + +## 最终方案 + +- 档口字段按最后一个 `#` 拆成名称和货号,避免名称自身含 `#` 时截错。 +- 连续字母或数字作为货号候选,中文括号、`#`、横线和空格等标点均作为边界;因此 + `067【档口】` 能识别为独立货号,又不会从 `PDD256437` 中截取短数字。 +- 纯数字货号去掉前导零比较,但必须同时确认候选 SKU 或 variationSku 含相同档口名称; + 非数字货号继续精确比较。 +- 原始 SKU 优先匹配、冲突阻断、候选唯一、规格、采购字段及 detail 占用门禁均保持不变。 +- 没有修改数据库、页面、接口和顺运宝写入流程,也没有对生产记录执行重新匹配或回写。 + +## 改了哪些 + +- `admin/service/inner_code_match.go`:增加档口拆分、货号分词、数字前导零安全比较。 +- `admin/service/inner_code_match_test.go`:覆盖生产样例、中文括号、同档口前导零、不同档口 + 阻断和非数字货号精确比较。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| `将客大码网批#067` 唯一命中目标候选 | 通过 | +| `067` 与 `67` 只在档口名称一致时等价 | 通过 | +| 同货号不同档口不命中 | 通过 | +| 非数字货号不做类似转换 | 通过 | +| 原始 SKU 与既有安全门禁不退化 | 通过,全量测试通过 | +| 固定 Go 1.23.0 测试、构建、vet 和差异检查通过 | 通过 | +| 生产目标订单不自动回写 | 通过,只读核对后以脱敏样例回归 | + +## 测试 + +- 执行的命令:`go test ./service -run InnerCode -count=1`、`go test ./... -count=1`、 + `go build ./...`、`go vet ./...`(均使用 `GOTOOLCHAIN=go1.23.0`),以及 + `git diff --check`。 +- 结果:全部通过。 +- **没验证到的部分**:未部署生产 Admin;未在生产页面重新匹配目标记录;未向顺运宝 + 发送任何写入请求。 + +## 相关提交 + +- `5e0cf95` fix: 兼容档口货号括号与前导零 (#273)