fix-controller-queue.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. const fs = require('fs');
  2. const file = 'src/modules/book-generator/langgraph-controller.ts';
  3. let content = fs.readFileSync(file, 'utf8');
  4. // 替换第1处:创建书籍
  5. content = content.replace(
  6. ` // 启动 LangGraph 生成(异步,自动完成:大纲→章节→前言/后记)
  7. langGraphGenerator.generate(
  8. book.id,
  9. body.description,
  10. bookScale
  11. ).catch(err => {
  12. console.error('[LangGraph] 生成失败:', err);
  13. });`,
  14. ` // 将生成任务加入队列(由队列处理器异步执行)
  15. const jobId = await queueService.addBookGenerationTask({
  16. bookId: book.id,
  17. topic: body.description,
  18. bookScale,
  19. });
  20. console.log(\`[LangGraph] 生成任务已加入队列: bookId=\${book.id}, jobId=\${jobId}\`);`
  21. );
  22. // 替换第2处:重新生成
  23. content = content.replace(
  24. ` // 启动 LangGraph 生成
  25. langGraphGenerator.generate(
  26. bookId,
  27. book.description,
  28. bookScale
  29. ).catch(err => {
  30. console.error('[LangGraph] 生成失败:', err);
  31. });`,
  32. ` // 将生成任务加入队列
  33. const jobId = await queueService.addBookGenerationTask({
  34. bookId,
  35. topic: book.description,
  36. bookScale,
  37. });
  38. console.log(\`[LangGraph] 重新生成任务已加入队列: bookId=\${bookId}, jobId=\${jobId}\`);`
  39. );
  40. // 替换第3处:续生成
  41. content = content.replace(
  42. ` // 重新启动生成(只生成 pending 状态的小节)
  43. langGraphGenerator.generate(
  44. bookId,
  45. book.description || book.title,
  46. book.bookScale || '标准教程'
  47. ).catch(err => {
  48. console.error('[LangGraph] 续生成失败:', err);
  49. });`,
  50. ` // 将续生成任务加入队列
  51. const jobId = await queueService.addBookGenerationTask({
  52. bookId,
  53. topic: book.description || book.title,
  54. bookScale: book.bookScale || '标准教程',
  55. });
  56. console.log(\`[LangGraph] 续生成任务已加入队列: bookId=\${bookId}, jobId=\${jobId}\`);`
  57. );
  58. fs.writeFileSync(file, content, 'utf8');
  59. console.log('✅ 控制器已改为使用队列');