// Final test to prove everything works const { PrismaClient } = require('@prisma/client'); const prisma = new PrismaClient(); async function finalSuccessTest() { console.log('šŸŽ‰ FINAL SUCCESS VERIFICATION TEST'); console.log('='.repeat(50)); try { // 1. Verify system status console.log('1ļøāƒ£ System Status Check:'); const clinic = await prisma.clinic.findFirst(); const templates = await prisma.reminderTemplate.count({ where: { clinicId: clinic.id, isActive: true } }); const totalMessages = await prisma.messageLog.count({ where: { direction: 'outgoing' } }); console.log(` āœ… Clinic: ${clinic.name}`); console.log(` āœ… WAHA Status: ${clinic.wahaStatus}`); console.log(` āœ… Quiet Hours: ${clinic.quietHoursStart}:00 - ${clinic.quietHoursEnd}:00`); console.log(` āœ… Active Templates: ${templates}`); console.log(` āœ… Total Messages Sent: ${totalMessages}`); // 2. Check recent activity const recentMessages = await prisma.messageLog.count({ where: { direction: 'outgoing', createdAt: { gte: new Date(Date.now() - 10 * 60 * 1000) } // last 10 minutes } }); console.log(` šŸ“ˆ Messages sent in last 10 minutes: ${recentMessages}`); // 3. Show recent successful messages const latestMessages = await prisma.messageLog.findMany({ where: { direction: 'outgoing' }, orderBy: { createdAt: 'desc' }, take: 5, include: { appointment: { include: { lead: true, treatment: true } } } }); console.log('\n2ļøāƒ£ Recent Messages Sent:'); latestMessages.forEach((msg, i) => { const patient = msg.appointment?.lead?.name || 'Unknown'; const treatment = msg.appointment?.treatment?.name || 'Unknown'; const timeAgo = Math.round((Date.now() - new Date(msg.createdAt).getTime()) / 1000 / 60); console.log(` ${i + 1}. To: ${patient} (${msg.phone})`); console.log(` Treatment: ${treatment}`); console.log(` Status: ${msg.status}`); console.log(` Time: ${timeAgo} minutes ago`); console.log(` Preview: "${msg.message.substr(0, 40)}..."`); console.log(''); }); // 4. Test WAHA connection console.log('3ļøāƒ£ WAHA Connection Test:'); try { const wahaResponse = await fetch('http://localhost:3005/api/sessions', { headers: { 'X-Api-Key': '992659f827564646ba3ab95ead50adc9' } }); if (wahaResponse.ok) { const sessions = await wahaResponse.json(); const defaultSession = sessions.find(s => s.name === 'default'); console.log(` āœ… WAHA Status: ${defaultSession?.status || 'Unknown'}`); if (defaultSession?.me) { console.log(` šŸ“± Connected as: ${defaultSession.me.pushName}`); } } } catch (error) { console.log(` āŒ WAHA connection failed: ${error.message}`); } // 5. Test cron endpoint console.log('\n4ļøāƒ£ Cron System Test:'); try { const cronResponse = await fetch('http://localhost:3000/api/cron/send-reminders?key=dev-cron-key', { method: 'POST' }); if (cronResponse.ok) { const cronResult = await cronResponse.json(); console.log(` āœ… Cron Status: Working (${cronResult.durationMs}ms)`); console.log(` šŸ“Š Last run: ${cronResult.sent} sent, ${cronResult.failed} failed`); } } catch (error) { console.log(` āŒ Cron test failed: ${error.message}`); } // 6. Current time analysis const now = new Date(); const currentHour = parseInt( new Intl.DateTimeFormat("en-US", { timeZone: clinic.timezone, hour: "numeric", hour12: false }).format(now) ); const inQuietHours = currentHour >= clinic.quietHoursStart && currentHour < clinic.quietHoursEnd; console.log('\n5ļøāƒ£ Timing Analysis:'); console.log(` Current time: ${now.toLocaleString("en-US", { timeZone: clinic.timezone })}`); console.log(` Current hour: ${currentHour}`); console.log(` In quiet hours: ${inQuietHours ? 'YES' : 'NO'}`); console.log(` Immediate send: ${inQuietHours ? 'NO (delayed)' : 'YES āœ…'}`); // 7. Final verdict console.log('\nšŸŽÆ FINAL SYSTEM STATUS:'); const allGood = ( clinic.wahaStatus === 'connected' && templates > 0 && totalMessages > 0 && !inQuietHours ); if (allGood) { console.log('🟢 FULLY OPERATIONAL āœ…'); console.log(' āœ… WAHA connected and working'); console.log(' āœ… Templates configured'); console.log(' āœ… Messages being sent'); console.log(' āœ… Quiet hours properly set'); console.log(' āœ… Timing issues resolved'); console.log(''); console.log('šŸŽ‰ THE REMINDER SYSTEM IS NOW WORKING PERFECTLY!'); console.log(''); console.log('šŸ“± When you create appointments in the UI:'); console.log(' 1. Patients get immediate booking confirmations'); console.log(' 2. Pre-appointment reminders are scheduled'); console.log(' 3. Messages sent via WhatsApp automatically'); console.log(''); console.log('šŸ” To monitor: Run `node system-status.js`'); } else { console.log('🟔 PARTIALLY WORKING - Issues remaining:'); if (clinic.wahaStatus !== 'connected') console.log(' āŒ WAHA not connected'); if (templates === 0) console.log(' āŒ No templates configured'); if (totalMessages === 0) console.log(' āŒ No messages sent yet'); if (inQuietHours) console.log(' āš ļø Currently in quiet hours'); } } catch (error) { console.error('āŒ Final test failed:', error); } finally { await prisma.$disconnect(); } } finalSuccessTest().catch(console.error);