| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- const fs = require('fs');
- const file = 'src/modules/book-generator/langgraph-generator.ts';
- let content = fs.readFileSync(file, 'utf8');
- // 添加断点续传:筛选未完成的小节
- const oldCode = ` // 从数据库获取所有小节(level=3)
- const subsections = await prisma.bookChapter.findMany({
- where: { bookId: bookIdNum, level: 3 },
- orderBy: [
- { parentId: 'asc' }, // 先按父节点排序
- { number: 'asc' }
- ],
- include: {
- // 获取父节的信息
- parent: {
- include: {
- // 获取父章的信息
- parent: true
- }
- }
- }
- });
- if (subsections.length === 0) {
- console.log('[LangGraph] 没有小节,跳过内容生成');
- return { finished: true, progress: 90 };
- }`;
- const newCode = ` // 从数据库获取所有小节(level=3)
- const allSubsections = await prisma.bookChapter.findMany({
- where: { bookId: bookIdNum, level: 3 },
- orderBy: [
- { parentId: 'asc' }, // 先按父节点排序
- { number: 'asc' }
- ],
- include: {
- // 获取父节的信息
- parent: {
- include: {
- // 获取父章的信息
- parent: true
- }
- }
- }
- });
- if (allSubsections.length === 0) {
- console.log('[LangGraph] 没有小节,跳过内容生成');
- return { finished: true, progress: 90 };
- }
- // 筛选出未完成的小节(pending 或 failed),支持断点续传
- const subsections = allSubsections.filter(s => s.status !== 'completed');
- const completedCount = allSubsections.length - subsections.length;
-
- if (completedCount > 0) {
- console.log(\`[LangGraph] ✅ 跳过 \${completedCount} 个已完成的小节,待生成 \${subsections.length} 个\`);
- }
-
- if (subsections.length === 0) {
- console.log('[LangGraph] ✅ 所有小节已完成');
- return { finished: true, progress: 95 };
- }`;
- content = content.replace(oldCode, newCode);
- // 修改进度计算:从已完成的数量开始
- content = content.replace(
- /const totalSubsections = subsections\.length;\s+let completedSubsections = 0;/,
- `const totalSubsections = allSubsections.length;
- let completedSubsections = completedCount; // 从已完成的数量开始`
- );
- fs.writeFileSync(file, content, 'utf8');
- console.log('✅ 断点续传逻辑已添加');
|