feat(cost-center): 渠道映射改为诊断优先,新增未归一队列

- 顶部统计卡:标准商品 / 映射 / 未归一订单项 / 未归一 SKU 组
- 新增「未归一」队列:按来源+店铺+平台SKU+履约方式聚合,行内建映射并预填
- 目录表从 7 列精简到 4 列,匹配方式移入展开明细
- 回填订单项后自动把已归一的 product_mapping_missing 异常收口
- 新增 /cost-center/mappings/diagnostics 与 /mappings/unmapped,按履约方式拆分聚合避免全表扫描
This commit is contained in:
yml2213
2026-10-24 16:36:16 +08:00
parent 956ef5d695
commit e5122d116a
5 changed files with 787 additions and 159 deletions
@@ -27,8 +27,10 @@ import {
createAdminProduct,
deleteAdminChannelMapping,
deleteAdminProduct,
getAdminChannelMappingDiagnostics,
listAdminChannelMappings,
listAdminProducts,
listAdminUnmappedMappingGroups,
updateAdminChannelMapping,
updateAdminProduct,
} from '../../services/cost-center/product-catalog-service.js'
@@ -273,6 +275,26 @@ router.get(
}),
)
router.get(
'/cost-center/mappings/diagnostics',
requireAdminPermission('finance.view'),
createJsonHandler((req) => getAdminChannelMappingDiagnostics(req.query as JsonObject), {
successMessage: 'ok',
errorMessage: '读取渠道映射诊断失败',
scope: '[admin/cost-center/mappings/diagnostics]',
}),
)
router.get(
'/cost-center/mappings/unmapped',
requireAdminPermission('finance.view'),
createJsonHandler((req) => listAdminUnmappedMappingGroups(req.query as JsonObject), {
successMessage: 'ok',
errorMessage: '读取未归一队列失败',
scope: '[admin/cost-center/mappings/unmapped]',
}),
)
router.post(
'/cost-center/mappings',
requireAdminPermission('finance.config'),