/** * 回填导入日志的 import_kind,并清理错误的 "[object Object]" external_id。 * Usage: pnpm exec tsx scripts/backfill-import-log-meta.ts */ import { prisma } from "../src/services/db"; import { inferImportKindFromObjectKey, normalizeExternalId, } from "../src/services/import/import-log-meta"; async function main() { const rows = await prisma.containerImport.findMany({ select: { id: true, containerNo: true, importKind: true, externalId: true, }, }); let kindUpdated = 0; let externalFixed = 0; for (const row of rows) { const kind = row.importKind || inferImportKindFromObjectKey(row.containerNo); const externalId = normalizeExternalId(row.externalId); const needKind = !row.importKind; const needExt = row.externalId === "[object Object]" || (row.externalId != null && externalId !== row.externalId); if (!needKind && !needExt) continue; await prisma.containerImport.update({ where: { id: row.id }, data: { ...(needKind ? { importKind: kind } : {}), ...(needExt ? { externalId } : {}), }, }); if (needKind) kindUpdated += 1; if (needExt) externalFixed += 1; } console.log( JSON.stringify( { scanned: rows.length, kindUpdated, externalFixed }, null, 2, ), ); } main() .catch((err) => { console.error(err); process.exitCode = 1; }) .finally(async () => { await prisma.$disconnect(); });