fix: 使用原始SKU辅助档口匹配 (#259)
This commit is contained in:
@@ -179,6 +179,50 @@ func TestPlanInnerCodeRows_精确与标准化规格均受档口约束(t *testing
|
||||
}
|
||||
}
|
||||
|
||||
func TestPlanInnerCodeRows_原始SKU精确命中VariationSKU(t *testing.T) {
|
||||
record := model.InnerCodeRecord{ID: 31, OrderNumber: "26081387A2EC2N",
|
||||
Stall: "上寮-青春网购工厂店#8916", SourceSKURaw: "上寮-青春网购工厂店8916##(&9)",
|
||||
SpecRaw: "紫色,XL", InnerCode: "DK-31", SourceDuplicateCount: 1}
|
||||
item := innerCodeTestItem(310, "紫色,XL", map[string]any{"variationSku": "上寮-青春网购工厂店8916##(&9)"})
|
||||
plans := planInnerCodeRows([]model.InnerCodeRecord{record},
|
||||
map[string][]int64{record.OrderNumber: {300}}, map[int64]syb.StockDetail{300: {ID: 300, Details: []syb.DetailItem{item}}})
|
||||
if len(plans) != 1 || plans[0].Status != model.InnerCodeReady || plans[0].DetailID != 310 {
|
||||
t.Fatalf("原始 SKU 未生成可回写计划: %+v", plans)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMatchInnerCodeItemsWithEvidence_原始SKU可命中SKU且保留旧规则兜底(t *testing.T) {
|
||||
items := []syb.DetailItem{
|
||||
innerCodeTestItem(1, "黑色,M", map[string]any{"sku": "源SKU-1"}),
|
||||
innerCodeTestItem(2, "黑色,M", map[string]any{"sku": "B档#2"}),
|
||||
}
|
||||
matched, reason := matchInnerCodeItemsWithEvidence("不匹配#9", " 源SKU-1\n", items)
|
||||
if reason != "" || len(matched) != 1 || matched[0].ID != 1 {
|
||||
t.Fatalf("原始 SKU 精确命中失败 matched=%+v reason=%q", matched, reason)
|
||||
}
|
||||
matched, reason = matchInnerCodeItemsWithEvidence("B档#2", "不存在", items)
|
||||
if reason != "" || len(matched) != 1 || matched[0].ID != 2 {
|
||||
t.Fatalf("旧档口规则兜底失败 matched=%+v reason=%q", matched, reason)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMatchInnerCodeItemsWithEvidence_重复和证据冲突均阻断(t *testing.T) {
|
||||
duplicate := []syb.DetailItem{
|
||||
innerCodeTestItem(1, "黑色,M", map[string]any{"sku": "同一SKU"}),
|
||||
innerCodeTestItem(2, "黑色,M", map[string]any{"variationSku": "同一SKU"}),
|
||||
}
|
||||
if matched, reason := matchInnerCodeItemsWithEvidence("", "同一SKU", duplicate); len(matched) != 0 || reason != "原始 SKU 候选重复,不能自动选择" {
|
||||
t.Fatalf("重复候选未阻断 matched=%+v reason=%q", matched, reason)
|
||||
}
|
||||
conflict := []syb.DetailItem{
|
||||
innerCodeTestItem(1, "黑色,M", map[string]any{"sku": "源SKU"}),
|
||||
innerCodeTestItem(2, "黑色,M", map[string]any{"sku": "B档#2"}),
|
||||
}
|
||||
if matched, reason := matchInnerCodeItemsWithEvidence("B档#2", "源SKU", conflict); len(matched) != 0 || reason != "原始 SKU 与档口货号冲突,不能自动选择" {
|
||||
t.Fatalf("证据冲突未阻断 matched=%+v reason=%q", matched, reason)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPlanInnerCodeRows_多件数量一致放行且其他异常继续阻断(t *testing.T) {
|
||||
records := []model.InnerCodeRecord{
|
||||
{ID: 1, OrderNumber: "DUP", SpecRaw: "黑色,M", InnerCode: "DK1,DK2", SourceDuplicateCount: 2},
|
||||
|
||||
Reference in New Issue
Block a user