feat(api): category-based family grouping, tree family info and custom goods family attribution
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
* 运行:pnpm --filter @inkreach/api backfill:product-families
|
||||
* 幂等性:重复执行时步骤 1 数据不变、步骤 2 候选为空(familyId=null 过滤)。
|
||||
*/
|
||||
import { Prisma } from '@prisma/client';
|
||||
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';
|
||||
@@ -51,9 +52,18 @@ async function main() {
|
||||
const result = await families.autoGroup(true);
|
||||
console.log(`[2/2] created ${result.applied} families`);
|
||||
|
||||
// ---- 3. 全量族重算兜底(修复建族早于解析列回填等时序造成的空矩阵) ----
|
||||
const allFamilies = await prisma.productFamily.findMany({ select: { id: true } });
|
||||
for (const f of allFamilies) {
|
||||
await recompute.recomputeFamily(f.id);
|
||||
}
|
||||
console.log(`[3/3] recomputed ${allFamilies.length} families`);
|
||||
|
||||
// ---- 统计 ----
|
||||
const total = await prisma.productFamily.count();
|
||||
const withMatrix = await prisma.productFamily.count({ where: { priceMatrix: { not: null } } });
|
||||
const withMatrix = await prisma.productFamily.count({
|
||||
where: { priceMatrix: { not: Prisma.DbNull } },
|
||||
});
|
||||
const members = await prisma.originGood.count({ where: { familyId: { not: null } } });
|
||||
const stale = await prisma.productFamily.count({ where: { stale: true } });
|
||||
console.log(`stats: families=${total}, materialized=${withMatrix}, members=${members}, stale=${stale}`);
|
||||
|
||||
Reference in New Issue
Block a user