docs: Plano completo de migração PointControl → NoIdle

- Documentação detalhada do processo (PLANO_MIGRACAO_NOIDLE.md)
- Guia rápido para executar (MIGRACAO_RAPIDA.md)
- Script automatizado de migração (migrate_to_noidle.sh)
- Renomeia pasta, código, PM2, docs
- Backup automático e rollback
- Tempo estimado: 5 minutos
- Solução para organizar estrutura bagunçada
This commit is contained in:
Sérgio Corrêa
2025-11-16 23:32:24 +00:00
parent 0bc09e4001
commit 710792af01
3 changed files with 896 additions and 0 deletions

207
migrate_to_noidle.sh Executable file
View File

@@ -0,0 +1,207 @@
#!/bin/bash
#
# Script de Migração: PointControl → NoIdle
# Uso: sudo bash migrate_to_noidle.sh
#
set -e # Parar em caso de erro
# Cores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e "${BLUE}═══════════════════════════════════════════════════${NC}"
echo -e "${BLUE} Migração: PointControl → NoIdle${NC}"
echo -e "${BLUE}═══════════════════════════════════════════════════${NC}"
echo ""
# Verificar se está rodando como root ou com sudo
if [[ $EUID -ne 0 ]]; then
echo -e "${RED}❌ Este script precisa rodar como root ou com sudo${NC}"
echo "Use: sudo bash migrate_to_noidle.sh"
exit 1
fi
# Confirmar antes de começar
echo -e "${YELLOW}⚠️ ATENÇÃO: Este script vai:${NC}"
echo " 1. Parar o serviço pointcontrol-api"
echo " 2. Renomear /var/www/pointcontrol para /var/www/noidle"
echo " 3. Atualizar todas as referências no código"
echo " 4. Recriar o serviço PM2 como noidle-api"
echo ""
read -p "Deseja continuar? (s/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Ss]$ ]]; then
echo -e "${RED}❌ Migração cancelada${NC}"
exit 1
fi
echo ""
echo -e "${GREEN}✅ Iniciando migração...${NC}"
echo ""
# Fase 1: Backup
echo -e "${BLUE}[1/8]${NC} Criando backup..."
BACKUP_DIR="/tmp/noidle_migration_backup_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
# Backup do PM2
pm2 save --force
cp ~/.pm2/dump.pm2 "$BACKUP_DIR/" 2>/dev/null || true
# Backup da pasta (apenas configs importantes)
cd /var/www
tar -czf "$BACKUP_DIR/pointcontrol_backup.tar.gz" \
--exclude='pointcontrol/node_modules' \
--exclude='pointcontrol/frontend/node_modules' \
--exclude='pointcontrol/frontend/build' \
pointcontrol/ 2>/dev/null || true
echo -e "${GREEN} ✓ Backup salvo em: $BACKUP_DIR${NC}"
# Fase 2: Parar serviços
echo -e "${BLUE}[2/8]${NC} Parando serviços..."
pm2 stop pointcontrol-api 2>/dev/null || echo " Serviço pointcontrol-api não estava rodando"
sleep 2
echo -e "${GREEN} ✓ Serviços parados${NC}"
# Fase 3: Renomear pasta principal
echo -e "${BLUE}[3/8]${NC} Renomeando pasta principal..."
cd /var/www
if [ -d "pointcontrol" ]; then
if [ -d "noidle" ]; then
echo -e "${RED} ⚠️ Pasta /var/www/noidle já existe!${NC}"
read -p " Deseja sobrescrever? (s/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Ss]$ ]]; then
mv noidle noidle_old_$(date +%Y%m%d_%H%M%S)
mv pointcontrol noidle
else
echo -e "${RED}❌ Migração cancelada${NC}"
exit 1
fi
else
mv pointcontrol noidle
fi
echo -e "${GREEN} ✓ Pasta renomeada: /var/www/noidle${NC}"
else
echo -e "${YELLOW} ⚠️ Pasta pointcontrol não encontrada, verificando noidle...${NC}"
if [ ! -d "noidle" ]; then
echo -e "${RED}❌ Nenhuma pasta encontrada!${NC}"
exit 1
fi
echo -e "${GREEN} ✓ Usando pasta existente: /var/www/noidle${NC}"
fi
# Fase 4: Atualizar Backend
echo -e "${BLUE}[4/8]${NC} Atualizando backend..."
cd /var/www/noidle/backend
# Atualizar package.json
if [ -f "package.json" ]; then
sed -i 's/"name": "pointcontrol-api"/"name": "noidle-api"/g' package.json
sed -i 's/"name": "pointcontrol"/"name": "noidle"/g' package.json
echo -e "${GREEN} ✓ package.json atualizado${NC}"
fi
# Atualizar server.js
if [ -f "server.js" ]; then
sed -i 's/PointControl/NoIdle/g' server.js
sed -i 's/pointcontrol/noidle/g' server.js
echo -e "${GREEN} ✓ server.js atualizado${NC}"
fi
# Fase 5: Atualizar Frontend
echo -e "${BLUE}[5/8]${NC} Atualizando frontend..."
cd /var/www/noidle/frontend
# Atualizar package.json
if [ -f "package.json" ]; then
sed -i 's/"name": "pointcontrol-frontend"/"name": "noidle-frontend"/g' package.json
sed -i 's/"name": "pointcontrol"/"name": "noidle"/g' package.json
echo -e "${GREEN} ✓ package.json atualizado${NC}"
fi
# Atualizar componentes React
if [ -d "src" ]; then
find src/ -type f \( -name "*.js" -o -name "*.jsx" \) -exec sed -i 's/PointControl/NoIdle/g' {} + 2>/dev/null || true
find src/ -type f \( -name "*.js" -o -name "*.jsx" \) -exec sed -i 's/pointcontrol/noidle/g' {} + 2>/dev/null || true
echo -e "${GREEN} ✓ Componentes atualizados${NC}"
fi
# Atualizar HTML
if [ -f "public/index.html" ]; then
sed -i 's/PointControl/NoIdle/g' public/index.html
sed -i 's/pointcontrol/noidle/g' public/index.html
echo -e "${GREEN} ✓ HTML atualizado${NC}"
fi
# Fase 6: Atualizar Documentação
echo -e "${BLUE}[6/8]${NC} Atualizando documentação..."
cd /var/www/noidle
# Atualizar arquivos .md
find . -maxdepth 1 -name "*.md" -type f -exec sed -i 's/PointControl/NoIdle/g' {} + 2>/dev/null || true
find . -maxdepth 1 -name "*.md" -type f -exec sed -i 's/pointcontrol/noidle/g' {} + 2>/dev/null || true
echo -e "${GREEN} ✓ Documentação atualizada${NC}"
# Fase 7: Atualizar PM2
echo -e "${BLUE}[7/8]${NC} Atualizando PM2..."
# Remover processo antigo
pm2 delete pointcontrol-api 2>/dev/null || true
# Criar novo processo
cd /var/www/noidle/backend
pm2 start server.js --name noidle-api
pm2 save --force
echo -e "${GREEN} ✓ PM2 atualizado: noidle-api${NC}"
# Fase 8: Verificação
echo -e "${BLUE}[8/8]${NC} Verificando instalação..."
sleep 3
# Verificar PM2
if pm2 list | grep -q "noidle-api.*online"; then
echo -e "${GREEN} ✓ Serviço noidle-api está online${NC}"
else
echo -e "${RED} ⚠️ Serviço noidle-api não está online${NC}"
fi
# Verificar API
if curl -s http://localhost:3005/api/health > /dev/null 2>&1; then
echo -e "${GREEN} ✓ API respondendo em http://localhost:3005${NC}"
else
echo -e "${YELLOW} ⚠️ API não está respondendo (pode precisar reiniciar)${NC}"
fi
# Resumo
echo ""
echo -e "${GREEN}═══════════════════════════════════════════════════${NC}"
echo -e "${GREEN}✅ Migração concluída com sucesso!${NC}"
echo -e "${GREEN}═══════════════════════════════════════════════════${NC}"
echo ""
echo -e "${BLUE}📋 Resumo:${NC}"
echo " • Pasta: /var/www/noidle"
echo " • Serviço PM2: noidle-api"
echo " • Backup: $BACKUP_DIR"
echo ""
echo -e "${BLUE}🔍 Próximos passos:${NC}"
echo " 1. Verificar logs: ${YELLOW}pm2 logs noidle-api${NC}"
echo " 2. Testar API: ${YELLOW}curl http://localhost:3005/api/health${NC}"
echo " 3. Acessar frontend: ${YELLOW}https://admin.noidle.tech${NC}"
echo " 4. Atualizar Nginx se necessário"
echo " 5. Fazer commit: ${YELLOW}cd /var/www/noidle && git add . && git commit -m 'refactor: Migração para NoIdle'${NC}"
echo ""
echo -e "${YELLOW}⚠️ Se houver problemas, restaure o backup:${NC}"
echo " ${YELLOW}pm2 stop noidle-api && pm2 delete noidle-api${NC}"
echo " ${YELLOW}cd /var/www && mv noidle noidle_failed && tar -xzf $BACKUP_DIR/pointcontrol_backup.tar.gz${NC}"
echo " ${YELLOW}cd pointcontrol/backend && pm2 start server.js --name pointcontrol-api${NC}"
echo ""