维护:增加商品路由审计并归档孤儿人工商品
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
-- 159_archive_orphan_manual_products.sql
|
||||
--
|
||||
-- man: 只表示来源,不能证明当前可履约。
|
||||
-- 没有主路由、没有启用人工配置、也没有启用商品映射的 man 商品属于孤儿商品,
|
||||
-- 只归档,不删除;历史订单、成本版本和成本快照继续保留。
|
||||
|
||||
WITH candidates AS (
|
||||
SELECT product.id
|
||||
FROM product_catalog product
|
||||
WHERE product.status = 'active'
|
||||
AND product.source_kind = 'manual'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM sku_channel_routes route
|
||||
WHERE route.internal_sku_id = product.internal_sku_id
|
||||
AND route.enabled = TRUE
|
||||
AND route.route_role = 'primary'
|
||||
)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM manual_fulfillment_configs config
|
||||
WHERE config.enabled = TRUE
|
||||
AND (
|
||||
config.canonical_product_id = product.id
|
||||
OR config.internal_sku_id = product.internal_sku_id
|
||||
OR canonicalize_internal_sku(config.sku_key)
|
||||
= canonicalize_internal_sku(substring(product.canonical_sku from 5))
|
||||
)
|
||||
)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM channel_product_mappings mapping
|
||||
WHERE mapping.canonical_product_id = product.id
|
||||
AND mapping.enabled = TRUE
|
||||
)
|
||||
)
|
||||
UPDATE product_catalog product
|
||||
SET status = 'archived',
|
||||
attributes_json = COALESCE(product.attributes_json, '{}'::jsonb) || jsonb_build_object(
|
||||
'legacyManualArchived', TRUE,
|
||||
'legacyManualArchiveReason', 'no_primary_route_no_config_no_mapping',
|
||||
'legacyManualArchivedAt', NOW()
|
||||
),
|
||||
updated_at = NOW()
|
||||
FROM candidates
|
||||
WHERE product.id = candidates.id;
|
||||
|
||||
COMMENT ON COLUMN product_catalog.source_kind IS
|
||||
'标准商品来源类型;来源不等于当前履约渠道,孤儿 man 商品只归档不删除';
|
||||
Reference in New Issue
Block a user