fix: RIIN 商品状态补 COMPLETE/PAUSE 映射,修复 Goods.status 大面积 NULL
CI / test (pull_request) Successful in 1m35s
CI / test (pull_request) Successful in 1m35s
问题:RIIN 商品级 goodsStatus 复用平台状态枚举,COMPLETE/PAUSE 无映射, .get() 返回 None 落库为 NULL,累计 206 万行(占 RIIN 商品 33.75%), 终态订单不再被 refresh_pending 刷新而长期滞留。该缺口继承自 inkreach-bi-auth-mng TS 版,且 TS 的 warnUnknown 告警在移植时被省略, 导致从未暴露。 修复: - RIIN_GOODS_STATUS_MAP 补 COMPLETE=已完成、PAUSE=暂停 - 对齐 TS 版 warnUnknown:四个状态映射函数对未知值告警(同值只报一次) - docs/sql:Goods.status 约束新增允许"暂停"(原约束拒绝,已在库执行) - scripts/backfill_riin_goods_status.py:存量 NULL 按"已发货"订单终态 近似回填(幂等、分批);"已关闭"与非终态订单走 by-orders 重拉真值 - tests/test_mappers.py:9 个单测全过;实单 GSU1S555400MFLL e2e 验证 4 行 NULL → 已完成/暂停
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
-- 2026-09-28 Goods.status 约束新增允许 '暂停'
|
||||
-- 背景:RIIN 商品级 goodsStatus 复用平台状态枚举,存在 PAUSE(暂停),
|
||||
-- 原约束未包含该值,导致映射层只能落 NULL(chk_goods_status 拒绝其余新值)。
|
||||
-- 配套:mappers.py 的 RIIN_GOODS_STATUS_MAP 补 COMPLETE/PAUSE。
|
||||
-- 执行方式(两步,避免阻塞 ETL 写入;VALIDATE 只锁 SHARE UPDATE EXCLUSIVE):
|
||||
ALTER TABLE "Goods" DROP CONSTRAINT chk_goods_status;
|
||||
ALTER TABLE "Goods" ADD CONSTRAINT chk_goods_status CHECK (
|
||||
status IS NULL OR status = ANY (ARRAY[
|
||||
'备货中', '已删除', '已取消', '已完成', '待付款', '待确认',
|
||||
'搁置中', '待发货', '已发货', '退款中', '暂停'
|
||||
])
|
||||
) NOT VALID;
|
||||
ALTER TABLE "Goods" VALIDATE CONSTRAINT chk_goods_status;
|
||||
Reference in New Issue
Block a user