feat(finance): 统一内部 SKU 驱动的履约与财务分流

- 新增 internal_sku_mappings / internal_sku_channels,平台字段统一映射到内部中文 SKU
- 下单入口按内部 SKU 渠道决策修正默认人工路由,自动发货补全 dash sku
- 财务 channel_assign 读取统一渠道表;卡券/人工能力兜底,自动发货/接单要求真实载体
- carrier reconciliation 自动补自动发货任务和接单工单
- pending 落明确原因:无内部 SKU / 无渠道能力 / 无履约载体
- 合并、重判、旧 sku_code 规则清理、部署后 preflight 核对脚本
- 待分类队列按内部 SKU 聚合并展示原因
This commit is contained in:
yml2213
2026-11-02 14:17:08 +08:00
parent 531a23d78b
commit 5fe33b0b46
18 changed files with 1020 additions and 15 deletions
@@ -126,6 +126,19 @@ function PendingPanel() {
render: (value: string[] | undefined) => (value?.length ? value.join(' / ') : '-'),
},
{ title: '商品名', dataIndex: 'sku_name', ellipsis: true },
{
title: '待分类原因',
dataIndex: 'pending_reasons',
width: 160,
render: (value: string[] | undefined) => {
const labels: Record<string, string> = {
no_internal_sku: '无内部SKU',
no_channel_capability: '无渠道能力',
no_carrier: '无履约载体',
}
return value?.length ? value.map((reason) => labels[reason] || reason).join(' / ') : '-'
},
},
{ title: '订单数', dataIndex: 'item_count', width: 90 },
{
title: '收入',
@@ -7,6 +7,7 @@ export type PendingChannelGroup = {
internal_sku: string
sku_name: string
sku_codes: string[]
pending_reasons: string[]
item_count: number
revenue_fen: number
first_seen_at: string