| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- const { PrismaClient } = require('@prisma/client');
- const prisma = new PrismaClient();
- async function testFullAudioGeneration() {
- const bookId = 5; // Git入门(最小,章节少)
-
- console.log('\n🎵 开始完整音频生成测试\n');
- console.log('=' .repeat(60));
-
- // 步骤1:记录测试前的状态
- console.log('\n📊 步骤1:记录测试前状态\n');
-
- const beforeBooks = await prisma.book.count();
- const beforeAudioRecords = await prisma.audioRecord.count({
- where: { userId: 1 }
- });
- const beforeSubsectionsWithAudio = await prisma.bookChapter.count({
- where: {
- bookId,
- level: 3,
- audioUrl: { not: '' }
- }
- });
-
- console.log(`书籍总数: ${beforeBooks}`);
- console.log(`AudioRecord记录: ${beforeAudioRecords}`);
- console.log(`已有音频的小节: ${beforeSubsectionsWithAudio}\n`);
-
- // 步骤2:调用批量生成音频API
- console.log('📤 步骤2:调用批量生成音频API\n');
-
- try {
- const response = await fetch(`http://localhost:3000/api/book-generator/langgraph/books/${bookId}/audio`, {
- method: 'POST',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify({ voiceId: 'cherry' }),
- });
-
- const data = await response.json();
-
- console.log('API响应:');
- console.log(` 状态码: ${response.status}`);
- console.log(` code: ${data.code}`);
- console.log(` message: ${data.message}`);
- console.log(` totalSubsections: ${data.data?.totalSubsections}\n`);
-
- if (data.code !== 0) {
- console.log('❌ API调用失败,测试终止');
- await prisma.$disconnect();
- return;
- }
-
- console.log('✅ API调用成功!\n');
- } catch (error) {
- console.log('❌ API调用异常:', error.message);
- await prisma.$disconnect();
- return;
- }
-
- // 步骤3:等待30秒让音频生成
- console.log('⏳ 步骤3:等待音频生成(30秒)...\n');
- await new Promise(resolve => setTimeout(resolve, 30000));
-
- // 步骤4:检查生成结果
- console.log('📊 步骤4:检查生成结果\n');
-
- const afterBooks = await prisma.book.count();
- const afterAudioRecords = await prisma.audioRecord.count({
- where: { userId: 1 }
- });
- const afterSubsectionsWithAudio = await prisma.bookChapter.count({
- where: {
- bookId,
- level: 3,
- audioUrl: { not: '' }
- }
- });
-
- console.log('对比结果:');
- console.log(` 书籍总数: ${beforeBooks} → ${afterBooks} ${afterBooks === beforeBooks ? '✅' : '❌ 增加了!'}`);
- console.log(` AudioRecord: ${beforeAudioRecords} → ${afterAudioRecords} ${afterAudioRecords > beforeAudioRecords ? '✅ 增加了' : '⚠️ 未增加'}`);
- console.log(` 有音频的小节: ${beforeSubsectionsWithAudio} → ${afterSubsectionsWithAudio} ${afterSubsectionsWithAudio > beforeSubsectionsWithAudio ? '✅ 增加了' : '⚠️ 未增加'}\n`);
-
- // 步骤5:验证音频质量
- console.log('📝 步骤5:验证音频质量\n');
-
- const completedAudios = await prisma.audioRecord.findMany({
- where: {
- userId: 1,
- status: 'completed'
- },
- orderBy: { createdAt: 'desc' },
- take: 3,
- select: {
- id: true,
- title: true,
- status: true,
- audioUrl: true,
- audioDuration: true,
- wordCount: true,
- createdAt: true,
- }
- });
-
- if (completedAudios.length > 0) {
- console.log(`最近3个完成的音频:\n`);
- completedAudios.forEach((audio, index) => {
- console.log(`${index + 1}. ${audio.title}`);
- console.log(` 状态: ${audio.status}`);
- console.log(` 字数: ${audio.wordCount}字`);
- console.log(` 时长: ${audio.audioDuration}秒`);
- console.log(` URL: ${audio.audioUrl || '无'}`);
- console.log(` 时间: ${audio.createdAt}\n`);
- });
- } else {
- console.log('⚠️ 还没有完成的音频,可能需要更长时间\n');
- }
-
- // 步骤6:检查是否创建了错误的书籍
- console.log('🔍 步骤6:检查是否创建了错误的"我的音频"书籍\n');
-
- const myAudioBooks = await prisma.book.count({
- where: { title: '我的音频' }
- });
-
- if (myAudioBooks === 0) {
- console.log('✅ 没有创建错误的"我的音频"书籍!\n');
- } else {
- console.log(`❌ 创建了${myAudioBooks}本"我的音频"书籍!\n`);
- }
-
- // 最终总结
- console.log('=' .repeat(60));
- console.log('\n📋 测试总结:\n');
-
- const allPassed =
- afterBooks === beforeBooks && // 书籍数量没增加
- afterSubsectionsWithAudio > beforeSubsectionsWithAudio && // 音频小节增加了
- myAudioBooks === 0; // 没有错误的书籍
-
- if (allPassed) {
- console.log('✅ 所有测试通过!音频生成功能正常!\n');
- } else {
- console.log('❌ 部分测试未通过,请检查上面的详细结果\n');
- }
-
- await prisma.$disconnect();
- }
- testFullAudioGeneration().catch(console.error);
|