const pddiktiService = require('../services/v2/pddikti.service') const waJobService = require('../services/waJob.service') const { logInfo, logError } = require('../utils/logger') let isRunning = false let timer = null const processJobs = async () => { if (isRunning) return isRunning = true try { const job = await waJobService.processNextJob() if (job) { logInfo('WA_WORKER', 'Processing job', { jobId: job._id, templateId: job.templateId }) try { const response = await pddiktiService.whatsapp( job.templateId, job.contacts, job.body, job.buttons ) await waJobService.markJobSuccess(job._id, response) } catch (error) { await waJobService.markJobFailed(job._id, error, job.attempt + 1) } } } catch (err) { logError('WA_WORKER', 'Error in worker tick', { error: err.message }) } finally { isRunning = false } } const startWorker = (intervalMs = 3000) => { logInfo('WA_WORKER', `Starting WA Background Worker (interval: ${intervalMs}ms)`) waJobService.resetStuckJobs() timer = setInterval(processJobs, intervalMs) } const stopWorker = () => { if (timer) clearInterval(timer) logInfo('WA_WORKER', 'Stopped WA Background Worker') } module.exports = { startWorker, stopWorker, }