refactor(finance)!: 强制渠道模型,移除旧履约方式与同步链路

- 删除 fulfillment_mode 相关的旧同步/回填链路与定时任务
- 删除 cost_finance_sync、成本快照同步、人工商品归一等遗留服务
- 迁移 113 直接删除 order_items.fulfillment_mode 及其索引约束
- 断代脚本自带归档步骤,不再依赖独立回填脚本
- 退款/事实/总账统一走渠道版销售事实
This commit is contained in:
yml2213
2026-10-31 19:52:03 +08:00
parent 808949f3b8
commit 65b7f4f9dc
25 changed files with 156 additions and 2383 deletions
@@ -0,0 +1,40 @@
-- 113_drop_legacy_fulfillment_mode.sql
--
-- 强制新模型:彻底删除旧 `order_items.fulfillment_mode` 及其索引/约束。
--
-- 背景:
-- · 112 已加入 fulfillment_channel + fulfillment_status + fulfillment_source;
-- · 代码侧已全部改为读写新列,`fulfillment_mode` 不再有任何读写方;
-- · 保留旧列只会让「新旧并存」继续存在,因此这一版直接删除。
--
-- 注意:
-- 1. 本迁移只做 DDL,不搬运数据;
-- 2. 升级时应在维护窗口内先跑迁移,紧接着执行 `npm run finance:cutover-v2`
-- 完成断代归档与派生数据清理,避免中间态被业务读到;
-- 3. 已被 112 标记为 archived 的历史行不受影响。
-- 上一版 113 曾加过「旧异常写入口」兼容触发器,这里一并清理,不再保留兼容层。
DROP TRIGGER IF EXISTS trg_cost_exceptions_fill_scope_key ON cost_exceptions;
DROP FUNCTION IF EXISTS cost_exceptions_fill_scope_key();
ALTER TABLE order_items
DROP CONSTRAINT IF EXISTS chk_order_items_fulfillment_mode;
-- 依赖旧列的部分索引必须先删,否则 DROP COLUMN 会被拒绝。
DROP INDEX IF EXISTS idx_order_items_fulfillment_mode;
DROP INDEX IF EXISTS idx_order_items_fulfillment_pending;
DROP INDEX IF EXISTS idx_order_items_fulfillment_id;
DROP INDEX IF EXISTS idx_order_items_fulfillment_pending_id;
DROP INDEX IF EXISTS idx_order_items_fulfillment_product;
DROP INDEX IF EXISTS idx_order_items_manual_pending_cover;
DROP INDEX IF EXISTS idx_order_items_manual_sku_key_stored;
DROP INDEX IF EXISTS idx_order_items_manual_internal_sku;
DROP INDEX IF EXISTS idx_order_items_fulfillment_config;
ALTER TABLE order_items
DROP COLUMN IF EXISTS fulfillment_mode;
COMMENT ON COLUMN order_items.fulfillment_channel IS
'履约渠道(唯一真源):work_order / affiliate_dash / third_party_voucher / manual;pending 时为空';
COMMENT ON COLUMN order_items.fulfillment_status IS
'渠道状态:pending 待分类 / assigned 已确定 / archived 断代归档';