From 08b3bf2639ae2edb488dca281c988a05b1c3e9b5 Mon Sep 17 00:00:00 2001 From: Rafael Lopes Date: Mon, 12 Jan 2026 16:40:47 -0300 Subject: [PATCH] CHORE: Preparando ambiente PM2 para novas Features --- ecosystem.config.js | 73 ++++++++----------- .../tickets/repositories/ticket.repository.js | 2 +- 2 files changed, 30 insertions(+), 45 deletions(-) diff --git a/ecosystem.config.js b/ecosystem.config.js index 3667ffd..984ae87 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -1,73 +1,58 @@ +// ecosystem.config.js + module.exports = { apps: [ - // 🟢 --- PRIMEIRA APLICAÇÃO: API PRINCIPAL (servidor HTTP) --- + // 🟢 API PRINCIPAL { - name: "hubxglpi-api", // Nome que aparecerá no PM2 - script: "src/infra/http/server.js", // Caminho do arquivo principal da API + name: "hubxglpi-api", + script: "src/infra/http/server.js", - // 👇 Execução em modo "cluster" (um processo por core da máquina) exec_mode: "cluster", - instances: "max", // "max" = usa todos os núcleos disponíveis + instances: "max", - // ⚙️ Variáveis de ambiente padrão (modo development) env: { - watch: true, NODE_ENV: "development", - PORT: 3000 // Porta usada no ambiente de desenvolvimento + PORT: 3000 }, - // ⚙️ Variáveis de ambiente quando rodar com `--env production` env_production: { - watch: false, NODE_ENV: "production", - PORT: 3000 // Porta usada no ambiente de produção + PORT: 3000 } }, - // 🕒 --- SEGUNDA APLICAÇÃO: CRON JOBS (tarefas agendadas) --- + // 🕒 CRON DE SINCRONIZAÇÃO { - name: "hubxglpi-cron", // Nome do serviço de crons - script: "src/infra/cron/sync.cron.js", // Arquivo onde ficam as tarefas agendadas + name: "hubxglpi-cron", + script: "src/infra/cron/sync.cron.js", - // 👇 Modo "fork" = apenas 1 instância, sem cluster (evita rodar crons duplicados) exec_mode: "fork", - instances: 1, // Força a rodar somente um processo + instances: 1, + + env: { + NODE_ENV: "development" + }, + + env_production: { + NODE_ENV: "production" + } + }, + + // 🐶 WATCHDOG + { + name: "hubxglpi-watchdog", + script: "src/infra/cron/observer.cron.js", + + exec_mode: "fork", + instances: 1, - // ⚙️ Variáveis de ambiente para desenvolvimento env: { - watch: true, NODE_ENV: "development" }, - // ⚙️ Variáveis de ambiente para produção env_production: { - watch: false, NODE_ENV: "production" } } ] }; - - -/** * @module server - * @description Ponto de entrada principal da aplicação. - * Este módulo é responsável por: - * Definir a configuração do PM2 para gerenciar a aplicação principal e o serviço de cron jobs. - * 1. A aplicação principal (`hubxglpi-api`) roda em modo cluster para lidar com requisições HTTP. Para encerrar chamados. - * 2. O serviço de cron jobs (`hubxglpi-cron`) roda em modo fork para evitar execuções duplicadas das tarefas agendadas. -*/ - -/** - * 💡 Dicas de uso: - * - * 🧪 Ambiente de desenvolvimento: - * pm2 start ecosystem.config.js --env development - * - * 🚀 Ambiente de produção: - * pm2 start ecosystem.config.js --env production - * pm2 startup systemd - * sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u desenvolvimento --hp /home/desenvolvimento - * pm2 save - * - * ✅ Após isso, o PM2 inicializa automaticamente os dois processos no boot do servidor. - */ \ No newline at end of file diff --git a/src/modules/tickets/repositories/ticket.repository.js b/src/modules/tickets/repositories/ticket.repository.js index bb5b66b..1d5eaff 100644 --- a/src/modules/tickets/repositories/ticket.repository.js +++ b/src/modules/tickets/repositories/ticket.repository.js @@ -33,7 +33,7 @@ const TYPES = Object.freeze({ async function getMundialeTickets(watermark) { return hubsoftTicketsRepo.getTicketsByTipo({ tipoAtendimento: TYPES.MUNDIALE, - usuarioAbertura: 248, + usuarioAbertura: process.env.HUBSOFT_MUNDIALE_USER_ID, watermark }); }