| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- // 轮询 book 43 状态直到完成或失败
- const { PrismaClient } = require('@prisma/client');
- const p = new PrismaClient();
- const POLL_INTERVAL = 30 * 1000; // 30s
- const MAX_WAIT = 30 * 60 * 1000; // 30 分钟
- (async () => {
- const start = Date.now();
- let lastSnapshot = '';
- while (Date.now() - start < MAX_WAIT) {
- await new Promise(r => setTimeout(r, POLL_INTERVAL));
- const elapsed = Math.round((Date.now() - start) / 1000);
- const b = await p.book.findUnique({
- where: { id: 43 },
- select: { id: true, genStage: true, failedStage: true, errorMsg: true, progress: true, totalChapters: true, updatedAt: true },
- });
- const chapters = await p.bookChapter.count({ where: { bookId: 43 } });
- const completedChapters = await p.bookChapter.count({
- where: { bookId: 43, genStage: { in: ['content_completed', 'audio_completed', 'video_completed'] } },
- });
- const snapshot = `${b.genStage}|${b.progress}|${chapters}|${completedChapters}|${b.failedStage || ''}|${b.errorMsg || ''}`;
- if (snapshot !== lastSnapshot) {
- console.log(`[${elapsed}s] ${snapshot}`);
- lastSnapshot = snapshot;
- }
- if (b.genStage === 'content_completed' || b.genStage === 'audio_completed' || b.genStage === 'video_completed') {
- console.log(`\n✅ 成功完成!genStage=${b.genStage}, progress=${b.progress}, chapters=${chapters}/${completedChapters} 已完成`);
- break;
- }
- if (b.genStage === 'failed') {
- console.log(`\n❌ 生成失败`);
- console.log('failedStage:', b.failedStage);
- console.log('errorMsg:', b.errorMsg);
- break;
- }
- }
- await p.$disconnect();
- process.exit(0);
- })();
|