// infra/cron/sync.cron.js const loadEnv = require('../../config/env.loader.js') loadEnv() const cron = require('node-cron') const { syncTickets } = require('../../modules/tickets/controller/tickets.controller.js') const { syncComments } = require('../../modules/comments/useCases/syncHubCommentToGlpi.usecase.js') //const { retryFailedTickets } = require('../../modules/tickets/useCases/retryFailedTickets.usecase.js') //TODO //const { retryFailedComments } = require('../../modules/comments/useCases/retryFailedComments.usecase.js') //TODO const { logInfo, logError } = require('../../shared/utils/logger.js') let isCronRunning = false logInfo('Schedule agendado para rodar a cada minuto.') cron.schedule('* * * * *', async () => { if (isCronRunning) { logInfo('Cron já está em execução. Ignorando nova execução.') return } isCronRunning = true try { await runSyncPipeline() } catch (error) { logError('Erro no cron', error) } finally { isCronRunning = false } }) async function runSyncPipeline() { logInfo('[CRON] Iniciando Sync Pipeline Hubsoft -> GLPI ') logInfo('[CRON] Sincronizando Tickets') await syncTickets() logInfo('[CRON] Sincronizando comentários') await syncComments() logInfo('[CRON] Resincronizando Tickets que fallharam') //await retryFailedTickets() logInfo('[CRON] Resincronizando Comentarios que falharam') //await retryFailedComments() logInfo('[CRON] Pipeline Hubsoft -> GLPI finalizado') }