| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- const { PrismaClient } = require('@prisma/client');
- const http = require('http');
- async function createMiniBook() {
- console.log('创建迷你测试书籍(2章)...\n');
-
- // 1. 创建书籍
- const bookData = {
- title: 'Python入门教程',
- description: '面向初学者的Python编程基础教程',
- bookScale: '小册子', // 最小规模:2-5万字,2-5章
- targetAudience: '编程初学者',
- knowledgeDepth: '入门',
- industry: '教育',
- writingStyle: '通俗易懂',
- };
-
- const postData = JSON.stringify(bookData);
-
- const options = {
- hostname: 'localhost',
- port: 3000,
- path: '/api/book-generator/langgraph/books',
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- 'Content-Length': Buffer.byteLength(postData),
- },
- };
-
- const response = await new Promise((resolve, reject) => {
- const req = http.request(options, (res) => {
- let data = '';
- res.on('data', chunk => data += chunk);
- res.on('end', () => {
- resolve({
- statusCode: res.statusCode,
- body: JSON.parse(data),
- });
- });
- });
-
- req.on('error', reject);
- req.write(postData);
- req.end();
- });
-
- console.log('书籍创建响应:');
- console.log(JSON.stringify(response.body, null, 2));
-
- if (response.body.code === 0) {
- const bookId = parseInt(response.body.data.book.id);
- console.log(`\n✅ 书籍创建成功!bookId=${bookId}`);
- console.log(`\n访问前端页面:http://localhost:5173/#/pages/book-generator/index?id=${bookId}`);
- console.log('\n开始监控生成进度...\n');
-
- // 2. 监控生成进度
- const prisma = new PrismaClient();
-
- for (let i = 0; i < 30; i++) { // 最多监控30次,每次10秒
- await new Promise(resolve => setTimeout(resolve, 10000)); // 等待10秒
-
- const book = await prisma.book.findUnique({
- where: { id: bookId },
- select: {
- id: true,
- status: true,
- progress: true,
- errorMsg: true,
- }
- });
-
- const chapters = await prisma.bookChapter.count({ where: { bookId, level: 1 } });
- const sections = await prisma.bookChapter.count({ where: { bookId, level: 2 } });
- const subsections = await prisma.bookChapter.count({ where: { bookId, level: 3 } });
- const completedContent = await prisma.bookChapter.count({
- where: { bookId, level: 3, contentStatus: 'completed' }
- });
-
- console.log(`[${new Date().toLocaleTimeString()}] 状态: ${book.status}, 进度: ${book.progress}%, ` +
- `章: ${chapters}, 节: ${sections}, 小节: ${subsections}, 已完成内容: ${completedContent}`);
-
- if (book.errorMsg) {
- console.log(` ❌ 错误: ${book.errorMsg}`);
- break;
- }
-
- if (book.status === 'completed') {
- console.log('\n🎉 生成完成!');
-
- // 显示生成的内容
- const firstContent = await prisma.bookChapter.findFirst({
- where: { bookId, level: 3, contentStatus: 'completed' },
- select: { title: true, content: true, wordCount: true }
- });
-
- if (firstContent) {
- console.log(`\n📝 第一个完成的小节: ${firstContent.title}`);
- console.log(`字数: ${firstContent.wordCount}`);
- console.log(`内容预览:\n${firstContent.content.substring(0, 500)}...`);
- }
-
- break;
- }
- }
-
- await prisma.$disconnect();
- }
- }
- createMiniBook().catch(console.error);
|