001project_wildgrowth/backend/scripts/check-stuck-tasks.ts

103 lines
3.1 KiB
TypeScript
Raw Permalink Normal View History

2026-02-11 15:26:03 +08:00
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
async function checkStuckTasks() {
try {
// 查找最近创建的任务
const recentTasks = await prisma.aIContentTask.findMany({
orderBy: { createdAt: 'desc' },
take: 5,
select: {
id: true,
status: true,
generationStyle: true,
createdAt: true,
courseId: true,
suggestedTitle: true,
sourceText: true,
outline: true,
},
});
console.log('\n=== 最近5个任务 ===');
recentTasks.forEach((task, index) => {
console.log(`\n任务 ${index + 1}:`);
console.log(` ID: ${task.id}`);
console.log(` 状态: ${task.status}`);
console.log(` 风格: ${task.generationStyle || '未选择'}`);
console.log(` 创建时间: ${task.createdAt}`);
console.log(` 课程ID: ${task.courseId || '无'}`);
console.log(` 标题: ${task.suggestedTitle || '未生成'}`);
console.log(` 文本长度: ${task.sourceText?.length || 0} 字符`);
console.log(` 是否有大纲: ${task.outline ? '是' : '否'}`);
});
// 查找卡住的任务pending 或 analyzing 状态超过1分钟
const oneMinuteAgo = new Date(Date.now() - 60 * 1000);
const stuckTasks = await prisma.aIContentTask.findMany({
where: {
status: {
in: ['pending', 'analyzing'],
},
createdAt: {
lt: oneMinuteAgo,
},
},
select: {
id: true,
status: true,
generationStyle: true,
createdAt: true,
courseId: true,
},
});
if (stuckTasks.length > 0) {
console.log('\n=== 卡住的任务超过1分钟未更新===');
stuckTasks.forEach((task) => {
console.log(`\n任务 ID: ${task.id}`);
console.log(` 状态: ${task.status}`);
console.log(` 风格: ${task.generationStyle || '未选择'}`);
console.log(` 创建时间: ${task.createdAt}`);
console.log(` 课程ID: ${task.courseId || '无'}`);
});
} else {
console.log('\n✅ 没有发现卡住的任务');
}
// 检查课程进度
if (recentTasks.length > 0) {
const courseIds = recentTasks
.map((t) => t.courseId)
.filter((id): id is string => id !== null);
if (courseIds.length > 0) {
const courses = await prisma.course.findMany({
where: { id: { in: courseIds } },
select: {
id: true,
title: true,
generationProgress: true,
generationStatus: true,
},
});
console.log('\n=== 关联的课程进度 ===');
courses.forEach((course) => {
console.log(`\n课程 ID: ${course.id}`);
console.log(` 标题: ${course.title}`);
console.log(` 生成状态: ${course.generationStatus || '无'}`);
console.log(` 生成进度: ${(course.generationProgress || 0) * 100}%`);
});
}
}
} catch (error: any) {
console.error('检查失败:', error.message);
} finally {
await prisma.$disconnect();
}
}
checkStuckTasks();