fix: recognize plus-joined product codes as SKU
This commit is contained in:
parent
00ad0783a3
commit
56210b988e
@ -30,6 +30,9 @@ describe('detectSkuOrBarcodeName(SKU 图文件名判别)', () => {
|
||||
['ZH-SZT018001-AD033501'],
|
||||
['ZH-SZT018001-AD033501-BJ017603N1241V01'],
|
||||
['zh-szt018001-ad033501n1256v01'],
|
||||
['MKHDNZ0409260601010+GBGJ-SJ038016N1410V01'],
|
||||
['mkhdnz0409260601010+gbgj-sj038016n1410v01'],
|
||||
['DNZ038521+AD033601+BJ017603N1241V01'],
|
||||
])('%s → 组合 SKU 整串保留', (input) => {
|
||||
expect(detectSkuOrBarcodeName(input)).toEqual({ type: 'skuCode', value: input })
|
||||
})
|
||||
@ -45,6 +48,10 @@ describe('detectSkuOrBarcodeName(SKU 图文件名判别)', () => {
|
||||
['ZH--SZT018001-AD033501'],
|
||||
['ZH-SZT018001-AD033501-'],
|
||||
['ZH-SZT018001-组合'],
|
||||
['MKHDNZ0409260601010+'],
|
||||
['+GBGJ-SJ038016N1410V01'],
|
||||
['MKHDNZ0409260601010++GBGJ-SJ038016N1410V01'],
|
||||
['MKHDNZ0409260601010+随便起的名字'],
|
||||
['随便起的名字'],
|
||||
[''],
|
||||
])('%s → 不填(null)', (input) => {
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
*
|
||||
* 依据生产数据的稳定结构(配合 lib/spu-parser.ts 的品类字典):
|
||||
* - SKU 编号: [前缀-?]品类码 + 纯数字,如 DNZ038521、AD033601、GBSFY-AD0360、MKHDNZ0409260600987
|
||||
* - 组合 SKU: ZH- 开头,后接至少两个“字母码 + 数字”的产品段;整串都属于 SKU 编号
|
||||
* - 组合 SKU: ZH- 开头,或以 + 连接多个有效产品编码;整串都属于 SKU 编号
|
||||
* - 产品条码: SKU 编号 + N数字(V数字)? 段,如 DNZ038521N1280V01、CY001306N35V01
|
||||
* - 其余(纯序号、02-1、复合串、含中文等)判别不出,交给人工填写
|
||||
*
|
||||
@ -56,7 +56,11 @@ export function detectSkuOrBarcodeName(name: string): SkuOrBarcodeDetection | nu
|
||||
if (!trimmed) return null
|
||||
|
||||
// 组合 SKU 的业务语义优先于普通 N/V 条码规则。
|
||||
if (COMBINATION_SKU_PATTERN.test(trimmed)) {
|
||||
const parts = trimmed.split('+')
|
||||
const isJoinedSku = parts.length > 1 && parts.every(part =>
|
||||
SKU_CODE_PATTERN.test(part) || BARCODE_PATTERN.test(part)
|
||||
)
|
||||
if (COMBINATION_SKU_PATTERN.test(trimmed) || isJoinedSku) {
|
||||
return { type: 'skuCode', value: trimmed }
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user