From df7f65154209cd5380f77dddc25fcfbaf07db163 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Fri, 6 Nov 2026 17:14:55 +0800 Subject: [PATCH] =?UTF-8?q?fix(cost-center):=20=E4=BF=AE=E5=A4=8D=E5=90=AF?= =?UTF-8?q?=E7=94=A8=E4=BA=BA=E5=B7=A5=E4=BD=9C=E5=BA=9F=E5=95=86=E5=93=81?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../144_fulfillment_shadow_configuration_sync.sql | 13 ++++++++++++- .../fulfillment/fulfillment-shadow-model.test.ts | 3 +++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/apps/backend/src/db/migrations/144_fulfillment_shadow_configuration_sync.sql b/apps/backend/src/db/migrations/144_fulfillment_shadow_configuration_sync.sql index b365bfbc..fd843efa 100644 --- a/apps/backend/src/db/migrations/144_fulfillment_shadow_configuration_sync.sql +++ b/apps/backend/src/db/migrations/144_fulfillment_shadow_configuration_sync.sql @@ -92,10 +92,21 @@ $$; DROP TRIGGER IF EXISTS trg_manual_config_product_source ON manual_fulfillment_configs; CREATE TRIGGER trg_manual_config_product_source -BEFORE INSERT OR UPDATE OF canonical_product_id ON manual_fulfillment_configs +BEFORE INSERT OR UPDATE ON manual_fulfillment_configs FOR EACH ROW EXECUTE FUNCTION assert_manual_config_product_source(); +-- 已启用的配置仍可能指向后来被归档的人工商品。这里恢复其 man: 商品, +-- 避免迁移后归一继续把后续订单挂到不可用商品上。 +UPDATE product_catalog product +SET status = 'active', + updated_at = NOW() +FROM manual_fulfillment_configs config +WHERE config.canonical_product_id = product.id + AND config.enabled = TRUE + AND product.canonical_sku LIKE 'man:%' + AND product.status <> 'active'; + -- 修正迁移 141 后由配置变化造成的存量陈旧影子记录。 SELECT sync_fulfillment_shadow(item.id) FROM order_items item diff --git a/apps/backend/src/services/fulfillment/fulfillment-shadow-model.test.ts b/apps/backend/src/services/fulfillment/fulfillment-shadow-model.test.ts index 02940f7a..6c1df388 100644 --- a/apps/backend/src/services/fulfillment/fulfillment-shadow-model.test.ts +++ b/apps/backend/src/services/fulfillment/fulfillment-shadow-model.test.ts @@ -41,6 +41,9 @@ test('人工履约配置不能关联其他来源商品', () => { assert.ok(configSyncMigration.includes('trg_manual_config_product_source')) assert.ok(configSyncMigration.includes("product.canonical_sku LIKE 'man:%'")) assert.ok(configSyncMigration.includes("ERRCODE = '23514'")) + assert.ok(configSyncMigration.includes('BEFORE INSERT OR UPDATE ON manual_fulfillment_configs')) + assert.ok(configSyncMigration.includes('config.enabled = TRUE')) + assert.ok(configSyncMigration.includes("SET status = 'active'")) }) test('明确渠道即视为已路由,不用渠道配置缺失覆盖已选渠道', () => {