fix(data-foundation): 放行非集成 SKU 冲突质量状态约束
This commit is contained in:
parent
420b159f7e
commit
6fee15d4aa
@ -83,6 +83,14 @@ BEGIN
|
||||
OR cardinality("missingRequiredFields") > 0
|
||||
)
|
||||
)
|
||||
OR
|
||||
(
|
||||
"dataQualityStatus" = 'CONFLICT'
|
||||
AND (
|
||||
NULLIF(btrim("skuCode"), '') IS NOT NULL
|
||||
OR NULLIF(btrim("barcode"), '') IS NOT NULL
|
||||
)
|
||||
)
|
||||
);
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
@ -926,6 +926,7 @@ SELECT
|
||||
FROM "IntakeNonIntegratedSkuItem" sku
|
||||
JOIN "IntakeNonIntegratedProduct" product ON product."id" = sku."productId"
|
||||
WHERE product."deletedAt" IS NULL
|
||||
AND sku."dataQualityStatus" = 'READY'
|
||||
AND NULLIF(btrim(sku."skuCode"), '') IS NOT NULL
|
||||
GROUP BY upper(btrim(sku."skuCode"))
|
||||
HAVING COUNT(*) > 1
|
||||
@ -938,11 +939,20 @@ SELECT
|
||||
FROM "IntakeNonIntegratedSkuItem" sku
|
||||
JOIN "IntakeNonIntegratedProduct" product ON product."id" = sku."productId"
|
||||
WHERE product."deletedAt" IS NULL
|
||||
AND sku."dataQualityStatus" = 'READY'
|
||||
AND NULLIF(btrim(sku."barcode"), '') IS NOT NULL
|
||||
GROUP BY upper(btrim(sku."barcode"))
|
||||
HAVING COUNT(*) > 1
|
||||
ORDER BY duplicate_count DESC, upper(btrim(sku."barcode"));
|
||||
|
||||
SELECT
|
||||
'intake_non_integrated_conflict_sku_risk' AS check_name,
|
||||
COUNT(*)::integer AS row_count
|
||||
FROM "IntakeNonIntegratedSkuItem" sku
|
||||
JOIN "IntakeNonIntegratedProduct" product ON product."id" = sku."productId"
|
||||
WHERE product."deletedAt" IS NULL
|
||||
AND sku."dataQualityStatus" = 'CONFLICT';
|
||||
|
||||
SELECT
|
||||
'intake_non_integrated_incomplete_sku_risk' AS check_name,
|
||||
COUNT(*)::integer AS row_count
|
||||
|
||||
@ -644,7 +644,7 @@ const REQUIRED_DATABASE_GUARDS = [
|
||||
name: 'IntakeNonIntegratedSkuItem_quality_state_required_fields',
|
||||
relationName: 'IntakeNonIntegratedSkuItem',
|
||||
expressionPattern: 'dataQualityStatus',
|
||||
purpose: '非集成 SKU 的 READY/INCOMPLETE 状态必须和必填字段、缺失字段数组一致。',
|
||||
purpose: '非集成 SKU 的 READY/INCOMPLETE/CONFLICT 状态必须和必填字段、缺失字段数组、冲突身份一致。',
|
||||
},
|
||||
{
|
||||
type: 'partial-unique-index',
|
||||
@ -3111,7 +3111,8 @@ async function getStructuredSkuSummary(client) {
|
||||
SELECT
|
||||
COUNT(*)::integer AS total,
|
||||
COUNT(*) FILTER (WHERE "dataQualityStatus" = 'READY')::integer AS ready,
|
||||
COUNT(*) FILTER (WHERE "dataQualityStatus" = 'INCOMPLETE')::integer AS incomplete
|
||||
COUNT(*) FILTER (WHERE "dataQualityStatus" = 'INCOMPLETE')::integer AS incomplete,
|
||||
COUNT(*) FILTER (WHERE "dataQualityStatus" = 'CONFLICT')::integer AS conflict
|
||||
FROM "IntakeNonIntegratedSkuItem" sku
|
||||
JOIN "IntakeNonIntegratedProduct" product ON product."id" = sku."productId"
|
||||
WHERE product."deletedAt" IS NULL
|
||||
@ -3149,6 +3150,7 @@ async function getDuplicateGroupCount(client, columnName) {
|
||||
FROM "IntakeNonIntegratedSkuItem" sku
|
||||
JOIN "IntakeNonIntegratedProduct" product ON product."id" = sku."productId"
|
||||
WHERE product."deletedAt" IS NULL
|
||||
AND sku."dataQualityStatus" = 'READY'
|
||||
AND NULLIF(btrim("${columnName}"), '') IS NOT NULL
|
||||
GROUP BY upper(btrim("${columnName}"))
|
||||
HAVING COUNT(*) > 1
|
||||
|
||||
@ -1324,16 +1324,18 @@ describe('verify-master-data-foundation', () => {
|
||||
expect(query).toContain('product."deletedAt" IS NULL')
|
||||
if (query.includes('duplicate_groups')) {
|
||||
expect(query).toContain('upper(btrim("skuCode"))')
|
||||
expect(query).toContain('sku."dataQualityStatus" = \'READY\'')
|
||||
return Promise.resolve({ rows: [{ duplicate_groups: 0 }] })
|
||||
}
|
||||
return Promise.resolve({ rows: [{ total: 3, ready: 2, incomplete: 1 }] })
|
||||
return Promise.resolve({ rows: [{ total: 4, ready: 2, incomplete: 1, conflict: 1 }] })
|
||||
}),
|
||||
}
|
||||
|
||||
await expect(getStructuredSkuSummary(client)).resolves.toEqual({
|
||||
total: 3,
|
||||
total: 4,
|
||||
ready: 2,
|
||||
incomplete: 1,
|
||||
conflict: 1,
|
||||
})
|
||||
await expect(getDuplicateGroupCount(client, 'skuCode')).resolves.toBe(0)
|
||||
})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user