148 lines
4.4 KiB
Bash
148 lines
4.4 KiB
Bash
#!/bin/bash
|
|
|
|
##############################################
|
|
# Instalador de Cron Job para Alertas de Vencimento
|
|
#
|
|
# Este script configura o cron para executar
|
|
# alertas automáticos às 09:00 (horário de Brasília)
|
|
##############################################
|
|
|
|
set -e
|
|
|
|
echo "=========================================="
|
|
echo " INSTALADOR CRON - ALERTAS PARCELAS"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# Cores
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Detectar diretório do projeto
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
NODE_SCRIPT="$PROJECT_DIR/scripts/enviar-alertas-parcelas.js"
|
|
|
|
echo "📁 Diretório do projeto: $PROJECT_DIR"
|
|
echo "📜 Script de alertas: $NODE_SCRIPT"
|
|
echo ""
|
|
|
|
# Verificar se o script existe
|
|
if [ ! -f "$NODE_SCRIPT" ]; then
|
|
echo -e "${RED}❌ Script de alertas não encontrado!${NC}"
|
|
echo " Caminho esperado: $NODE_SCRIPT"
|
|
exit 1
|
|
fi
|
|
|
|
# Tornar o script executável
|
|
chmod +x "$NODE_SCRIPT"
|
|
echo -e "${GREEN}✅ Permissões de execução configuradas${NC}"
|
|
|
|
# Detectar path do Node.js
|
|
NODE_PATH=$(which node)
|
|
if [ -z "$NODE_PATH" ]; then
|
|
echo -e "${RED}❌ Node.js não encontrado!${NC}"
|
|
echo " Instale o Node.js primeiro: https://nodejs.org"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${GREEN}✅ Node.js encontrado: $NODE_PATH${NC}"
|
|
|
|
# Criar linha do cron
|
|
# Executa todos os dias às 09:00 (horário de Brasília - UTC-3)
|
|
# Nota: Cron usa UTC, então 09:00 BRT = 12:00 UTC
|
|
CRON_LINE="0 12 * * * TZ='America/Sao_Paulo' $NODE_PATH $NODE_SCRIPT >> $PROJECT_DIR/logs/alertas-cron.log 2>&1"
|
|
|
|
echo ""
|
|
echo "🕐 Configuração do cron:"
|
|
echo " - Horário: 09:00 (Brasília)"
|
|
echo " - Frequência: Diariamente"
|
|
echo " - Timezone: America/Sao_Paulo"
|
|
echo ""
|
|
|
|
# Criar diretório de logs
|
|
mkdir -p "$PROJECT_DIR/logs"
|
|
echo -e "${GREEN}✅ Diretório de logs criado${NC}"
|
|
|
|
# Verificar se já existe o cron
|
|
EXISTING_CRON=$(crontab -l 2>/dev/null | grep -F "$NODE_SCRIPT" || true)
|
|
|
|
if [ -n "$EXISTING_CRON" ]; then
|
|
echo -e "${YELLOW}⚠️ Já existe um cron job configurado para este script${NC}"
|
|
echo ""
|
|
echo "Cron atual:"
|
|
echo " $EXISTING_CRON"
|
|
echo ""
|
|
read -p "Deseja substituir? (s/N): " -n 1 -r
|
|
echo ""
|
|
|
|
if [[ ! $REPLY =~ ^[Ss]$ ]]; then
|
|
echo "❌ Instalação cancelada pelo usuário"
|
|
exit 0
|
|
fi
|
|
|
|
# Remover linha antiga
|
|
(crontab -l 2>/dev/null | grep -v -F "$NODE_SCRIPT") | crontab -
|
|
echo -e "${GREEN}✅ Cron antigo removido${NC}"
|
|
fi
|
|
|
|
# Adicionar novo cron
|
|
(crontab -l 2>/dev/null; echo "$CRON_LINE") | crontab -
|
|
|
|
echo ""
|
|
echo -e "${GREEN}✅ Cron job instalado com sucesso!${NC}"
|
|
echo ""
|
|
|
|
# Verificar instalação
|
|
echo "📋 Cron jobs ativos:"
|
|
echo "────────────────────────────────────────"
|
|
crontab -l | grep -F "$NODE_SCRIPT" || echo "Nenhum cron encontrado"
|
|
echo "────────────────────────────────────────"
|
|
echo ""
|
|
|
|
# Teste manual
|
|
echo "🧪 Deseja executar um teste agora? (s/N): "
|
|
read -p "" -n 1 -r
|
|
echo ""
|
|
|
|
if [[ $REPLY =~ ^[Ss]$ ]]; then
|
|
echo ""
|
|
echo "🚀 Executando teste..."
|
|
echo "────────────────────────────────────────"
|
|
TZ='America/Sao_Paulo' $NODE_PATH $NODE_SCRIPT
|
|
echo "────────────────────────────────────────"
|
|
echo ""
|
|
fi
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo " INSTALAÇÃO CONCLUÍDA! ✅"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "📝 Próximos passos:"
|
|
echo ""
|
|
echo "1. Configure as variáveis de ambiente em .env:"
|
|
echo " - SUPABASE_URL"
|
|
echo " - SUPABASE_SERVICE_KEY (ou SUPABASE_ANON_KEY)"
|
|
echo ""
|
|
echo "2. Configure no painel admin:"
|
|
echo " - Evolution API (URL, Instance, API Key)"
|
|
echo " - Mercado Pago (Access Token)"
|
|
echo " - Mensagens de alerta personalizadas"
|
|
echo " - Dias de antecedência para alertas"
|
|
echo ""
|
|
echo "3. Monitore os logs:"
|
|
echo " tail -f $PROJECT_DIR/logs/alertas-cron.log"
|
|
echo ""
|
|
echo "4. Para testar manualmente:"
|
|
echo " cd $PROJECT_DIR"
|
|
echo " node scripts/enviar-alertas-parcelas.js"
|
|
echo ""
|
|
echo "5. Para desinstalar o cron:"
|
|
echo " crontab -e (e remova a linha do script)"
|
|
echo ""
|
|
echo "=========================================="
|
|
echo ""
|