001project_wildgrowth/backend/scripts/stats-lite-duration.js

55 lines
1.6 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env node
/**
* 最近用 doubao lite 模型跑出来的已完成课程平均生成时间、90 分位(秒)
* 用法node scripts/stats-lite-duration.js
*/
const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();
async function main() {
const tasks = await prisma.courseGenerationTask.findMany({
where: {
status: 'completed',
modelId: { contains: 'lite' },
},
orderBy: { createdAt: 'desc' },
take: 50,
select: { id: true, courseId: true, modelId: true, createdAt: true, updatedAt: true },
});
if (tasks.length === 0) {
console.log('没有用 doubao lite 完成的课程');
return;
}
const durations = tasks
.map((t) => (t.updatedAt && t.createdAt ? (new Date(t.updatedAt) - new Date(t.createdAt)) / 1000 : null))
.filter((d) => d != null);
if (durations.length === 0) {
console.log('无有效时长数据');
return;
}
const sorted = [...durations].sort((a, b) => a - b);
const sum = sorted.reduce((a, b) => a + b, 0);
const avg = sum / sorted.length;
const idx90 = Math.min(Math.ceil(0.9 * sorted.length) - 1, sorted.length - 1);
const p90 = sorted[idx90];
console.log('=== doubao lite 模型:最近已完成课程生成时间 ===\n');
console.log('条数:', sorted.length);
console.log('平均(秒):', Math.round(avg * 10) / 10);
console.log('90分位(秒):', Math.round(p90 * 10) / 10);
console.log('\n明细(秒):', sorted.map((d) => Math.round(d)).join(', '));
}
main()
.then(() => process.exit(0))
.catch((e) => {
console.error(e);
process.exit(1);
})
.finally(() => prisma.$disconnect());