#!/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 ""