重构:硬切履约路由唯一真源

This commit is contained in:
yml2213
2026-11-08 19:44:27 +08:00
parent f6e193e7f6
commit 6bff1971dd
31 changed files with 1029 additions and 1022 deletions
@@ -18,6 +18,7 @@ async function main() {
orphanManualProducts,
multiplePrimaryRoutes,
missingInternalSku,
unroutedProducts,
invalidSourceKinds,
] = await Promise.all([
query<{ source_kind: string; primary_channel: string | null; total: number }>(
@@ -46,7 +47,9 @@ async function main() {
SELECT
CASE
WHEN primary_route.channel = 'manual' THEN 'primary_manual'
WHEN manual_route.route_role = 'fallback' THEN 'manual_fallback'
WHEN primary_route.channel IS NOT NULL
AND manual_route.route_role = 'fallback' THEN 'manual_fallback'
WHEN manual_route.route_role = 'fallback' THEN 'fallback_without_primary'
ELSE 'missing_manual_route'
END AS route_state,
COUNT(*)::int AS total
@@ -123,6 +126,19 @@ async function main() {
ORDER BY 1
`,
),
query<{
product_id: number
canonical_sku: string
canonical_name: string
source_kind: string
}>(
`
SELECT id AS product_id, canonical_sku, canonical_name, source_kind
FROM v_product_current
WHERE status = 'active' AND active_primary_channel IS NULL
ORDER BY source_kind, id
`,
),
query<{ source_kind: string; total: number }>(
`
SELECT source_kind, COUNT(*)::int AS total
@@ -146,6 +162,11 @@ async function main() {
multiplePrimaryRoutes: multiplePrimaryRoutes.rows.length,
missingInternalSku: missingInternalSku.rows.reduce((sum, row) => sum + Number(row.total), 0),
invalidSourceKinds: invalidSourceKinds.rows.reduce((sum, row) => sum + Number(row.total), 0),
invalidManualConfigRoutes: manualConfigRoutes.rows
.filter(
(row) => row.route_state !== 'primary_manual' && row.route_state !== 'manual_fallback',
)
.reduce((sum, row) => sum + Number(row.total), 0),
}
console.info('[product-routing-audit] 商品来源 × 当前渠道')
@@ -169,6 +190,9 @@ async function main() {
console.info('[product-routing-audit] 非法商品来源')
console.table(invalidSourceKinds.rows)
console.info('[product-routing-audit] 未路由活动商品(待人工分类)')
console.table(unroutedProducts.rows)
console.info('[product-routing-audit] 关键异常', critical)
if (strict && Object.values(critical).some((count) => count > 0)) {
process.exitCode = 1