115 lines
3.7 KiB
JavaScript
115 lines
3.7 KiB
JavaScript
/**
|
|
* Debug Script untuk Railway Worker
|
|
* Jalankan script ini untuk debugging masalah scheduling
|
|
*/
|
|
|
|
require('dotenv').config();
|
|
const admin = require('firebase-admin');
|
|
|
|
// Setup Firebase
|
|
const config = {
|
|
projectId: process.env.FIREBASE_PROJECT_ID,
|
|
clientEmail: process.env.FIREBASE_CLIENT_EMAIL,
|
|
privateKey: process.env.FIREBASE_PRIVATE_KEY?.replace(/\\n/g, '\n'),
|
|
databaseURL: process.env.FIREBASE_DATABASE_URL,
|
|
};
|
|
|
|
console.log('🔍 DEBUG: Railway Worker Troubleshooting');
|
|
console.log('==========================================');
|
|
|
|
async function debugWorker() {
|
|
try {
|
|
// Test Firebase connection
|
|
console.log('1. Testing Firebase connection...');
|
|
|
|
admin.initializeApp({
|
|
credential: admin.credential.cert(config),
|
|
databaseURL: config.databaseURL,
|
|
});
|
|
|
|
const db = admin.database();
|
|
console.log('✅ Firebase initialized');
|
|
|
|
// Test reading kontrol config
|
|
console.log('\n2. Reading kontrol configuration...');
|
|
const snapshot = await db.ref('kontrol').once('value');
|
|
const kontrolConfig = snapshot.val();
|
|
|
|
console.log('📊 Current kontrol config:', JSON.stringify(kontrolConfig, null, 2));
|
|
|
|
// Check important fields
|
|
console.log('\n3. Validating schedule configuration...');
|
|
if (!kontrolConfig) {
|
|
console.log('❌ No kontrol config found! Flutter app needs to set schedule first.');
|
|
return;
|
|
}
|
|
|
|
const issues = [];
|
|
|
|
if (!kontrolConfig.waktu) {
|
|
issues.push('⚠️ waktu mode is disabled');
|
|
}
|
|
|
|
if (!kontrolConfig.waktu_1 && !kontrolConfig.waktu_2) {
|
|
issues.push('❌ No jadwal waktu_1 or waktu_2 configured');
|
|
}
|
|
|
|
if (!kontrolConfig.durasi_1 && !kontrolConfig.durasi_2) {
|
|
issues.push('❌ No durasi_1 or durasi_2 configured');
|
|
}
|
|
|
|
if (issues.length === 0) {
|
|
console.log('✅ All configuration looks good!');
|
|
|
|
// Test current time vs scheduled time
|
|
console.log('\n4. Time check...');
|
|
const now = new Date();
|
|
const currentTime = `${now.getHours().toString().padStart(2, '0')}:${now.getMinutes().toString().padStart(2, '0')}`;
|
|
console.log(`⏰ Current time: ${currentTime}`);
|
|
console.log(`📅 Jadwal 1: ${kontrolConfig.waktu_1 || 'Not set'}`);
|
|
console.log(`📅 Jadwal 2: ${kontrolConfig.waktu_2 || 'Not set'}`);
|
|
|
|
if (kontrolConfig.waktu_1 === currentTime || kontrolConfig.waktu_2 === currentTime) {
|
|
console.log('🎯 MATCHED! Schedule should trigger now');
|
|
} else {
|
|
console.log('⏳ No schedule match at current time');
|
|
}
|
|
|
|
} else {
|
|
console.log('❌ Configuration issues found:');
|
|
issues.forEach(issue => console.log(` ${issue}`));
|
|
}
|
|
|
|
// Test Firebase write permission
|
|
console.log('\n5. Testing Firebase write permission...');
|
|
await db.ref('debug').set({
|
|
timestamp: Date.now(),
|
|
message: 'Railway Worker debug test'
|
|
});
|
|
console.log('✅ Firebase write permission OK');
|
|
|
|
console.log('\n🎉 Debug completed!');
|
|
|
|
} catch (error) {
|
|
console.error('❌ Debug failed:', error.message);
|
|
|
|
if (error.message.includes('private_key')) {
|
|
console.error('\n💡 Fix: Check FIREBASE_PRIVATE_KEY format');
|
|
console.error(' - Should start with "-----BEGIN PRIVATE KEY-----"');
|
|
console.error(' - Should have \\n properly escaped');
|
|
console.error(' - Should be wrapped in quotes');
|
|
}
|
|
|
|
if (error.message.includes('projectId')) {
|
|
console.error('\n💡 Fix: Check FIREBASE_PROJECT_ID');
|
|
console.error(' - Should match your Firebase project ID');
|
|
}
|
|
} finally {
|
|
if (admin.apps.length > 0) {
|
|
await admin.app().delete();
|
|
}
|
|
process.exit(0);
|
|
}
|
|
}
|
|
|
|
debugWorker(); |