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 { processTicketLifecycleController } = require('./controllers/processTicketLifecycleController'); 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 ticketLifecycleEnabled = process.env.ENABLE_GLPI_CLOSE_CRON !== 'false'; await processErrorController(); await processTicketsController(); if (ticketLifecycleEnabled) { await processTicketLifecycleController(); } else { logInfo('Motor de regras de status/fechamento desabilitado (ENABLE_GLPI_CLOSE_CRON=false).'); } await processCommentsController(); logInfo('Ciclo de sincronizacao concluido com sucesso.'); } catch (error) { logInfo('Erro na aplicacao:', error); } } module.exports = { main };