001project_wildgrowth/backend/scripts/diagnose-task-a5d0ec37.ts

82 lines
2.3 KiB
TypeScript

import prisma from '../src/utils/prisma';
import { contentQueue } from '../src/services/queueService';
async function diagnose() {
const taskId = 'a5d0ec37-3abb-4463-b86a-c87cb3366a77';
const courseId = '185f9e5e-e1c1-479b-abe6-224a29a68856';
console.log('=== 诊断任务状态 ===\n');
// 1. 检查任务状态
const task = await prisma.aIContentTask.findUnique({
where: { id: taskId },
select: {
id: true,
status: true,
generationStyle: true,
outlineEssence: true,
outlineFull: true,
errorMessage: true,
courseId: true,
createdAt: true,
updatedAt: true,
},
});
console.log('1. 任务状态:');
console.log(JSON.stringify(task, null, 2));
// 2. 检查课程状态
const course = await prisma.course.findUnique({
where: { id: courseId },
select: {
id: true,
title: true,
status: true,
generationStatus: true,
generationProgress: true,
totalNodes: true,
createdAt: true,
updatedAt: true,
},
});
console.log('\n2. 课程状态:');
console.log(JSON.stringify(course, null, 2));
// 3. 检查队列状态
if (contentQueue) {
const jobId = `content-${taskId}`;
const job = await contentQueue.getJob(jobId);
console.log('\n3. 队列任务状态:');
if (job) {
const state = await job.getState();
const progress = job.progress;
const failedReason = job.failedReason;
console.log(` Job ID: ${job.id}`);
console.log(` State: ${state}`);
console.log(` Progress: ${progress}`);
console.log(` Failed Reason: ${failedReason || 'N/A'}`);
console.log(` Data: ${JSON.stringify(job.data, null, 2)}`);
} else {
console.log(` 任务 ${jobId} 不在队列中(可能已完成、失败或被删除)`);
}
const waiting = await contentQueue.getWaitingCount();
const active = await contentQueue.getActiveCount();
const completed = await contentQueue.getCompletedCount();
const failed = await contentQueue.getFailedCount();
console.log('\n4. 内容生成队列统计:');
console.log(` 等待中: ${waiting}`);
console.log(` 进行中: ${active}`);
console.log(` 已完成: ${completed}`);
console.log(` 失败: ${failed}`);
}
await prisma.$disconnect();
}
diagnose().catch(console.error);