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);