monitor-book.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. const { PrismaClient } = require('@prisma/client');
  2. const prisma = new PrismaClient();
  3. async function monitor() {
  4. console.log('开始监控书籍 #3 生成进度...\n');
  5. for (let i = 0; i < 120; i++) {
  6. const book = await prisma.book.findUnique({
  7. where: { id: 3 },
  8. include: { chapters: true }
  9. });
  10. if (!book) {
  11. console.log('书籍不存在');
  12. break;
  13. }
  14. const level1 = book.chapters.filter(c => c.level === 1).length;
  15. const level2 = book.chapters.filter(c => c.level === 2).length;
  16. const level3 = book.chapters.filter(c => c.level === 3).length;
  17. console.log(`[${new Date().toLocaleTimeString()}] 状态: ${book.status.padEnd(12)} | 进度: ${book.progress.toString().padStart(3)}% | 章: ${level1} | 节: ${level2} | 小节: ${level3} | 总计: ${book.chapters.length}`);
  18. if (book.status === 'completed' || book.status === 'failed') {
  19. console.log('\n' + '='.repeat(80));
  20. console.log('✅ 生成完成!');
  21. console.log('='.repeat(80));
  22. console.log('最终状态:', book.status);
  23. console.log('最终进度:', book.progress + '%');
  24. console.log('章节统计:', { level1, level2, level3, total: book.chapters.length });
  25. if (level1 > 0) {
  26. console.log('\n章节结构:');
  27. book.chapters.filter(c => c.level === 1).forEach(c => {
  28. console.log(` 第${c.number}章: ${c.title} [${c.status}] (ID:${c.id})`);
  29. const sections = book.chapters.filter(s => s.parentId === c.id);
  30. sections.forEach(s => {
  31. console.log(` 第${s.number}节: ${s.title} [${s.status}] (ID:${s.id})`);
  32. const subsections = book.chapters.filter(ss => ss.parentId === s.id);
  33. subsections.forEach(ss => {
  34. console.log(` 第${ss.number}小节: ${ss.title} [${ss.status}]`);
  35. });
  36. });
  37. });
  38. }
  39. break;
  40. }
  41. await new Promise(resolve => setTimeout(resolve, 3000));
  42. }
  43. await prisma.$disconnect();
  44. }
  45. monitor().catch(console.error);