重构:硬切履约路由唯一真源
This commit is contained in:
@@ -771,9 +771,12 @@ export async function deleteManualSkuClassification(
|
||||
[key],
|
||||
)
|
||||
const rules = await client.query(
|
||||
`DELETE FROM internal_sku_channels
|
||||
WHERE canonicalize_internal_sku(internal_sku) = $1 AND channel = 'manual'
|
||||
RETURNING id`,
|
||||
`DELETE FROM sku_channel_routes route
|
||||
USING internal_skus sku
|
||||
WHERE sku.id = route.internal_sku_id
|
||||
AND sku.internal_sku_key = $1
|
||||
AND route.channel = 'manual'
|
||||
RETURNING route.id`,
|
||||
[key],
|
||||
)
|
||||
const products = await client.query(
|
||||
@@ -1332,9 +1335,7 @@ function requiredRow<T>(row: T | undefined, message: string): T {
|
||||
return row
|
||||
}
|
||||
|
||||
/**
|
||||
* 人工配置 → internal_sku_channels(内部 SKU 精确匹配)。
|
||||
*/
|
||||
/** 人工配置 → sku_channel_routes(内部 SKU 精确匹配)。 */
|
||||
async function syncManualChannelRule(
|
||||
config: {
|
||||
id: number
|
||||
@@ -1350,10 +1351,13 @@ async function syncManualChannelRule(
|
||||
|
||||
const otherChannelSql = `
|
||||
SELECT EXISTS (
|
||||
SELECT 1 FROM internal_sku_channels
|
||||
WHERE canonicalize_internal_sku(internal_sku) = $1
|
||||
AND enabled = TRUE
|
||||
AND channel <> 'manual'
|
||||
SELECT 1
|
||||
FROM sku_channel_routes route
|
||||
JOIN internal_skus sku ON sku.id = route.internal_sku_id
|
||||
WHERE sku.internal_sku_key = $1
|
||||
AND route.enabled = TRUE
|
||||
AND route.route_role = 'primary'
|
||||
AND route.channel <> 'manual'
|
||||
) AS exists
|
||||
`
|
||||
const otherChannel = client
|
||||
|
||||
@@ -487,14 +487,16 @@ export async function deleteAdminVoucherProduct(productId: number | string) {
|
||||
|
||||
await client.query(
|
||||
`
|
||||
UPDATE internal_sku_channels
|
||||
UPDATE sku_channel_routes route
|
||||
SET enabled = FALSE,
|
||||
is_fallback = FALSE,
|
||||
route_role = 'fallback',
|
||||
updated_at = $3
|
||||
WHERE channel = 'third_party_voucher'
|
||||
FROM internal_skus sku
|
||||
WHERE sku.id = route.internal_sku_id
|
||||
AND route.channel = 'third_party_voucher'
|
||||
AND (
|
||||
canonical_product_id = $1
|
||||
OR canonicalize_internal_sku(internal_sku) = canonicalize_internal_sku($2)
|
||||
route.canonical_product_id = $1
|
||||
OR sku.internal_sku_key = canonicalize_internal_sku($2)
|
||||
)
|
||||
`,
|
||||
[id, internalSku, nowIso()],
|
||||
@@ -545,11 +547,13 @@ export async function deleteAdminVoucherProduct(productId: number | string) {
|
||||
)
|
||||
await client.query(
|
||||
`
|
||||
DELETE FROM internal_sku_channels
|
||||
WHERE channel = 'third_party_voucher'
|
||||
DELETE FROM sku_channel_routes route
|
||||
USING internal_skus sku
|
||||
WHERE sku.id = route.internal_sku_id
|
||||
AND route.channel = 'third_party_voucher'
|
||||
AND (
|
||||
canonical_product_id = $1
|
||||
OR canonicalize_internal_sku(internal_sku) = canonicalize_internal_sku($2)
|
||||
route.canonical_product_id = $1
|
||||
OR sku.internal_sku_key = canonicalize_internal_sku($2)
|
||||
)
|
||||
`,
|
||||
[id, internalSku],
|
||||
|
||||
@@ -248,7 +248,7 @@ test(
|
||||
])
|
||||
await query('DELETE FROM product_channel_capabilities WHERE product_id = $1', [productId])
|
||||
await query(
|
||||
'UPDATE internal_sku_channels SET canonical_product_id = NULL WHERE canonical_product_id = $1',
|
||||
'UPDATE sku_channel_routes SET canonical_product_id = NULL WHERE canonical_product_id = $1',
|
||||
[productId],
|
||||
)
|
||||
await query('DELETE FROM product_catalog WHERE id = $1', [productId])
|
||||
|
||||
Reference in New Issue
Block a user