update logika penarikan API dan tampilan anjungan
This commit is contained in:
No files matched your search
@@ -0,0 +1,58 @@
|
||||
// plugins/scheduler.client.ts
|
||||
import { useClinicStore } from '@/stores/clinicStore';
|
||||
import { useDoctorStore } from '@/stores/doctorStore';
|
||||
|
||||
export default defineNuxtPlugin((nuxtApp) => {
|
||||
// We only want this to run on the client side (kiosks)
|
||||
if (process.server) return;
|
||||
|
||||
const CHECK_INTERVAL = 60 * 1000; // Check every minute
|
||||
let isSyncing = false;
|
||||
|
||||
const checkSync = async () => {
|
||||
if (isSyncing) return;
|
||||
|
||||
try {
|
||||
const clinicStore = useClinicStore();
|
||||
const doctorStore = useDoctorStore();
|
||||
|
||||
const now = new Date();
|
||||
|
||||
// We target 2:00 AM.
|
||||
// If it's between 2:00 and 2:05, and store says sync is needed, we trigger it.
|
||||
// This window prevents missing it if the kiosk is slightly off or interval skips.
|
||||
const isSyncWindow = now.getHours() === 2 && now.getMinutes() < 5;
|
||||
|
||||
const clinicSyncNeeded = clinicStore.isSyncNeeded();
|
||||
const doctorSyncNeeded = doctorStore.isSyncNeeded();
|
||||
|
||||
if (isSyncWindow && (clinicSyncNeeded || doctorSyncNeeded)) {
|
||||
console.log('⏰ [scheduler] 2 AM Sync window detected. Triggering sync...');
|
||||
isSyncing = true;
|
||||
|
||||
// 1. Sync Clinics
|
||||
console.log('🔄 [scheduler] Syncing clinics...');
|
||||
await clinicStore.fetchRegulerClinics(true);
|
||||
|
||||
// 2. Sync Doctors after clinics are ready
|
||||
console.log('🔄 [scheduler] Syncing doctors...');
|
||||
const allClinics = clinicStore.clinics;
|
||||
await doctorStore.syncAllDoctors(allClinics);
|
||||
|
||||
console.log('✅ [scheduler] Daily 2 AM sync completed successfully.');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('❌ [scheduler] Error during scheduled sync:', error);
|
||||
} finally {
|
||||
isSyncing = false;
|
||||
}
|
||||
};
|
||||
|
||||
// Run initial check on site load
|
||||
setTimeout(checkSync, 5000); // Wait 5s for stores to hydrate
|
||||
|
||||
// Set interval for periodic check
|
||||
setInterval(checkSync, CHECK_INTERVAL);
|
||||
|
||||
console.log('🕒 [scheduler] 2 AM Sync Scheduler initialized.');
|
||||
});
|
||||
Reference in New Issue
Block a user