const path = require('path'); const dotenv = require('dotenv'); const nodeEnv = process.env.NODE_ENV; let envFile = '.env.development'; if (nodeEnv === 'production') { envFile = '.env.production'; } else { envFile = '.env.development'; } dotenv.config({ path: path.resolve(__dirname, '..', envFile) }); const { processTicketsController } = require('./controllers/processTicketsController'); const { processCommentsController } = require('./controllers/processCommentsController'); const { processErrorController } = require('./controllers/processErrorController'); const { processStatusAndClosureController } = require('./controllers/processStatusController'); const { processGlpiClosureController } = require('./controllers/processGlpiClosureController'); const { logInfo } = require('./utils/logger'); logInfo(`Ambiente carregado: ${process.env.NODE_ENV || 'development'}`); logInfo('Aplicacao iniciada', { timestamp: new Date().toISOString(), environment: process.env.NODE_ENV || 'development' }); async function main() { try { const statusSyncEnabled = process.env.ENABLE_STATUS_SYNC === 'true'; const glpiCloseCronEnabled = process.env.ENABLE_GLPI_CLOSE_CRON !== 'false'; await processErrorController(); await processTicketsController(); if (glpiCloseCronEnabled) { await processGlpiClosureController(); } else { logInfo('Monitor de encerramento definitivo GLPI desabilitado (ENABLE_GLPI_CLOSE_CRON=false).'); } if (statusSyncEnabled) { await processStatusAndClosureController(); } else { logInfo('Sincronizacao legada de status desabilitada (ENABLE_STATUS_SYNC=false).'); } await processCommentsController(); logInfo('Ciclo de sincronizacao concluido com sucesso.'); } catch (error) { logInfo('Erro na aplicacao:', error); } } module.exports = { main };