/** * 整理脚本(幂等 / 显式人工触发)——解析去运行时化后的唯一解析入口: * 1. 回填结构化解析列(只补 NULL,不覆盖存量); * 2. 派生链接标签(未人工接管的 SDS 链接按名称刷新,人工接管不动)+ 商品镜像; * 3. 自动建族(auto-group); * 4. 全量族重算(并集尺码表/包装 + 五维价格矩阵)。 * * 运行:pnpm --filter @inkreach/api organize * 后台等价入口:POST /product-families/organize(「整理」按钮)。 */ import { PrismaService } from '../src/prisma/prisma.service'; import { FamilyRecomputeService } from '../src/product-families/family-recompute.service'; import { ProductFamiliesService } from '../src/product-families/product-families.service'; import { OrganizeService } from '../src/product-families/organize.service'; async function main() { const prisma = new PrismaService(); await prisma.onModuleInit(); const recompute = new FamilyRecomputeService(prisma); const families = new ProductFamiliesService(prisma, recompute); const organize = new OrganizeService(prisma, recompute, families); const result = await organize.organize(); console.log( `[organize] labels parsed=${result.labelsParsed} (unparsable=${result.labelsUnparsable}) | ` + `tags links=${result.linksUpdated} goods=${result.goodsUpdated} | ` + `families created=${result.familiesCreated} recomputed=${result.familiesRecomputed}`, ); await prisma.onModuleDestroy(); } main().catch((error) => { console.error(error); process.exit(1); });