chore: sincroniza projeto para gitea
This commit is contained in:
147
scripts/instalar-cron-alertas.sh
Normal file
147
scripts/instalar-cron-alertas.sh
Normal file
@@ -0,0 +1,147 @@
|
||||
#!/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 ""
|
||||
Reference in New Issue
Block a user