/**
 * 整理脚本（幂等 / 显式人工触发）——解析去运行时化后的唯一解析入口：
 *   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);
});
