refactor(cost-center): 精简成本中心,人工成本以 SKU 配置为唯一真源

- 删除「成本项目」「成本版本」「成本预览」三个 Tab:成本项只有 3 条系统内置,版本金额只是快照挂载点
- 新增只读「发单价格」面板,仅在接单平台来源显示,改价仍走接单模板后同步
- 成本预览改为弹窗,从成本异常行和订单详情「查成本」进入;人工单显示 SKU 配置成本并禁止生成快照
- 成本异常新增按原因聚合摘要接口,列表支持 reason/since 筛选,默认只看近 24 小时
- 迁移 111:把 sys_manual_service 的历史 ¥88 全局版本清零;预估同步与成本缺失判定排除 manual_actual
This commit is contained in:
yml2213
2026-10-24 16:07:25 +08:00
parent 9f2206430f
commit 956ef5d695
16 changed files with 904 additions and 1124 deletions
@@ -0,0 +1,31 @@
-- 人工履约成本金额的唯一真源是 manual_fulfillment_configs.credit_quantity × 平台换算率。
-- cost_versions 里的 sys_manual_service 行只是 cost_snapshots.cost_version_id 的挂载点,
-- 金额不参与计算;历史上手工填的 ¥88 全局版本会让「成本预览」显示错误金额,这里清零。
UPDATE cost_versions v
SET amount_fen = 0,
rate_bps = 0,
change_reason = '系统占位:人工成本按人工 SKU 配置的消耗积分结算,版本金额不参与计算',
updated_at = NOW()
FROM cost_items ci
WHERE ci.id = v.cost_item_id
AND ci.code = 'sys_manual_service'
AND v.scope_type = 'global'
AND v.status = 'active';
-- 若人工成本项还没有生效版本,补一条 0 元全局占位,保证快照能挂到版本上。
INSERT INTO cost_versions (
cost_item_id, scope_type, provider, shop_id, canonical_product_id,
work_product_rule_id, amount_fen, rate_bps, effective_from, source,
status, change_reason, created_at, updated_at
)
SELECT
ci.id, 'global', '', '', NULL, NULL, 0, 0,
'1970-01-01T00:00:00+08:00', 'manual', 'active',
'系统占位:人工成本按人工 SKU 配置的消耗积分结算', NOW(), NOW()
FROM cost_items ci
WHERE ci.code = 'sys_manual_service'
AND NOT EXISTS (
SELECT 1 FROM cost_versions v
WHERE v.cost_item_id = ci.id AND v.status = 'active'
);