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

243
MIGRACAO_RAPIDA.md Normal file
View File

@@ -0,0 +1,243 @@
# ⚡ Migração Rápida: PointControl → NoIdle
## 🎯 Resumo Executivo
Seu projeto mudou de **PointControl** para **NoIdle**, mas os arquivos e código ainda usam "pointcontrol" em vários lugares. Isso cria confusão e desorganização.
**Solução:** Script automatizado que renomeia tudo em 5 minutos! ⏱️
---
## 🚀 Migração em 3 Passos
### 1⃣ **Verificar o que vai mudar**
```bash
# Ver arquivos que serão afetados
cd /var/www/pointcontrol
grep -r "pointcontrol" . --include="*.js" --include="*.json" --include="*.md" | wc -l
```
### 2⃣ **Executar a migração**
```bash
sudo bash /var/www/pointcontrol/migrate_to_noidle.sh
```
### 3⃣ **Verificar resultado**
```bash
pm2 list
curl http://localhost:3005/api/health
```
---
## 📊 O Que Vai Ser Mudado
| Item | Antes | Depois |
|------|-------|--------|
| **Pasta** | `/var/www/pointcontrol` | `/var/www/noidle` |
| **PM2** | `pointcontrol-api` | `noidle-api` |
| **Backend** | `"name": "pointcontrol-api"` | `"name": "noidle-api"` |
| **Frontend** | `"name": "pointcontrol-frontend"` | `"name": "noidle-frontend"` |
| **Código** | `PointControl` | `NoIdle` |
| **Logs** | `console.log('PointControl API')` | `console.log('NoIdle API')` |
---
## ✅ O Que o Script Faz
1.**Backup automático** (salvo em `/tmp`)
2.**Para serviços** (PM2)
3.**Renomeia pasta** (`pointcontrol``noidle`)
4.**Atualiza package.json** (backend e frontend)
5.**Atualiza código** (todas as referências)
6.**Atualiza documentação** (arquivos .md)
7.**Recria PM2** com novo nome
8.**Verifica funcionamento** (testes automáticos)
---
## 🎬 Executar AGORA
```bash
cd /var/www/pointcontrol
sudo bash migrate_to_noidle.sh
```
**Tempo estimado:** 5 minutos ⏱️
---
## ⚠️ Importante
### ✅ Não Precisa Alterar:
-**Banco de dados** (continua igual)
-**URLs externas** (`admin.noidle.tech` já está certo)
-**Certificados SSL** (já estão corretos)
-**Chaves de ativação** (continuam funcionando)
### ⚠️ Verificar Depois:
- Nginx config (se tiver path hardcoded)
- Cliente Windows (se API_URL estiver hardcoded)
- Variáveis de ambiente
---
## 🔄 Rollback (Se der problema)
```bash
# Parar novo serviço
pm2 stop noidle-api
pm2 delete noidle-api
# Restaurar pasta
cd /var/www
mv noidle pointcontrol
# Restaurar PM2
cd pointcontrol/backend
pm2 start server.js --name pointcontrol-api
pm2 save
```
---
## 📝 Após a Migração
### 1. Atualizar Git
```bash
cd /var/www/noidle
git add .
git commit -m "refactor: Migração completa de PointControl para NoIdle"
git push
```
### 2. Atualizar Nginx (se necessário)
```bash
sudo nano /etc/nginx/sites-available/admin.noidle.tech
# Verificar se tem paths antigos
# /var/www/pointcontrol → /var/www/noidle
sudo nginx -t
sudo systemctl reload nginx
```
### 3. Testar Tudo
```bash
# API
curl http://localhost:3005/api/health
# Frontend
curl https://admin.noidle.tech
# PM2
pm2 list
pm2 logs noidle-api
```
---
## 🎯 Alternativa Manual (Se Preferir)
### Opção A: Fazer Tudo Manualmente
Ver arquivo: `PLANO_MIGRACAO_NOIDLE.md`
### Opção B: Fazer em Etapas
1. Apenas renomear pasta
2. Apenas atualizar PM2
3. Apenas atualizar código
4. etc...
### Opção C: Manter Como Está
- **NÃO recomendado** (mantém confusão)
- Criar alias e documentar
---
## 📊 Estatísticas
**Arquivos afetados:**
- ~58 ocorrências em 21 arquivos
- Backend: ~5 arquivos
- Frontend: ~10 arquivos
- Docs: ~15 arquivos
**Tempo necessário:**
- Migração automática: ~5 minutos
- Migração manual: ~30 minutos
- Verificação e testes: ~10 minutos
---
## 🆘 Precisa de Ajuda?
### Se o script falhar:
1. **Ver logs:**
```bash
pm2 logs noidle-api --lines 50
```
2. **Verificar backup:**
```bash
ls -lah /tmp/noidle_migration_backup_*
```
3. **Restaurar backup:**
```bash
# Ver seção de Rollback acima
```
### Contatos:
- Ver documentação completa: `PLANO_MIGRACAO_NOIDLE.md`
- Logs do PM2: `pm2 logs noidle-api`
---
## ✨ Benefícios Após Migração
**Organização:** Tudo consistente e limpo
**Clareza:** Código fácil de entender
**Manutenção:** Sem confusão entre nomes
**Profissionalismo:** Nome correto em todo lugar
**Git:** Histórico limpo e organizado
---
## 🎉 Resultado Final
```
/var/www/noidle/
├── backend/
│ ├── package.json (✅ "name": "noidle-api")
│ └── server.js (✅ console.log('NoIdle API'))
├── frontend/
│ ├── package.json (✅ "name": "noidle-frontend")
│ └── src/
│ └── components/ (✅ Todos: NoIdle)
└── *.md (✅ Documentação atualizada)
PM2: noidle-api (✅ online)
Git: /var/www/noidle (✅ atualizado)
```
---
## 🚀 Executar AGORA
```bash
cd /var/www/pointcontrol
sudo bash migrate_to_noidle.sh
```
**Tempo:** 5 minutos | **Backup:** Automático | **Rollback:** Disponível
---
**Pronto para começar? Execute o comando acima! 🎯**
Data: 2025-11-16

446
PLANO_MIGRACAO_NOIDLE.md Normal file
View File

@@ -0,0 +1,446 @@
# 🔄 Plano de Migração: PointControl → NoIdle
## 📊 Situação Atual
**Problema:** Projeto mudou de nome de "PointControl" para "NoIdle", mas a estrutura de pastas e código ainda usa "pointcontrol" em muitos lugares.
**Resultado:** Confusão, inconsistência e bagunça no código.
---
## 🎯 Objetivo
Renomear **tudo** de forma consistente para "NoIdle" mantendo compatibilidade e sem quebrar nada.
---
## 📋 O Que Precisa Ser Renomeado
### 1. **Pasta Principal**
```
/var/www/pointcontrol → /var/www/noidle
```
### 2. **Serviço PM2**
```
pointcontrol-api → noidle-api
```
### 3. **Package.json (Backend)**
```json
{
"name": "pointcontrol-api" "noidle-api"
}
```
### 4. **Package.json (Frontend)**
```json
{
"name": "pointcontrol-frontend" "noidle-frontend"
}
```
### 5. **Referências no Código**
- `PointControl``NoIdle`
- `pointcontrol``noidle`
- URLs antigas → URLs novas
### 6. **Banco de Dados**
- Nome do database (se usar específico)
- Tabelas com prefixo (se houver)
### 7. **Configurações**
- Nginx config
- PM2 config
- Variáveis de ambiente
---
## 🚀 Plano de Execução (Passo a Passo)
### Fase 1: Preparação (Backup)
```bash
# 1. Parar serviços
pm2 stop pointcontrol-api
# 2. Backup do banco de dados
pg_dump $DATABASE_URL > /tmp/noidle_backup_$(date +%Y%m%d).sql
# 3. Backup dos arquivos
cd /var/www
tar -czf pointcontrol_backup_$(date +%Y%m%d).tar.gz pointcontrol/
```
---
### Fase 2: Renomear Pasta Principal
```bash
# Renomear pasta
cd /var/www
mv pointcontrol noidle
# Atualizar link simbólico se houver
# ln -sfn /var/www/noidle /var/www/app
```
---
### Fase 3: Atualizar Backend
```bash
cd /var/www/noidle/backend
# Atualizar package.json
sed -i 's/"name": "pointcontrol-api"/"name": "noidle-api"/g' package.json
# Atualizar referências no código
grep -r "PointControl" . --include="*.js" -l | xargs sed -i 's/PointControl/NoIdle/g'
grep -r "pointcontrol" . --include="*.js" -l | xargs sed -i 's/pointcontrol/noidle/g'
# Reinstalar dependências
npm install
```
---
### Fase 4: Atualizar Frontend
```bash
cd /var/www/noidle/frontend
# Atualizar package.json
sed -i 's/"name": "pointcontrol-frontend"/"name": "noidle-frontend"/g' package.json
# Atualizar referências no código
grep -r "PointControl" src/ -l | xargs sed -i 's/PointControl/NoIdle/g'
grep -r "pointcontrol" src/ -l | xargs sed -i 's/pointcontrol/noidle/g'
# Rebuild
npm run build
```
---
### Fase 5: Atualizar PM2
```bash
# Deletar processo antigo
pm2 delete pointcontrol-api
# Criar novo processo
cd /var/www/noidle/backend
pm2 start server.js --name noidle-api
pm2 save
# Verificar
pm2 list
```
---
### Fase 6: Atualizar Nginx
```bash
# Editar config
sudo nano /etc/nginx/sites-available/admin.noidle.tech
# Atualizar paths se necessário
# root /var/www/pointcontrol/frontend/build; → /var/www/noidle/frontend/build;
# Testar e recarregar
sudo nginx -t
sudo systemctl reload nginx
```
---
### Fase 7: Atualizar Documentação
```bash
cd /var/www/noidle
# Atualizar todos os arquivos .md
find . -name "*.md" -type f -exec sed -i 's/PointControl/NoIdle/g' {} +
find . -name "*.md" -type f -exec sed -i 's/pointcontrol/noidle/g' {} +
```
---
### Fase 8: Atualizar Git
```bash
cd /var/www/noidle
# Commit das mudanças
git add .
git commit -m "refactor: Migração completa de PointControl para NoIdle
- Renomeadas todas as referências no código
- Atualizados package.json
- Atualizadas configurações
- Documentação atualizada"
git push
```
---
## ✅ Checklist de Migração
### Antes de Começar:
- [ ] Backup do banco de dados
- [ ] Backup dos arquivos
- [ ] Avisar usuários sobre manutenção
- [ ] Anotar configurações atuais
### Durante a Migração:
- [ ] Renomear pasta principal
- [ ] Atualizar package.json (backend)
- [ ] Atualizar package.json (frontend)
- [ ] Atualizar código backend
- [ ] Atualizar código frontend
- [ ] Atualizar PM2
- [ ] Atualizar Nginx
- [ ] Atualizar documentação
### Após Migração:
- [ ] Testar API: `curl http://localhost:3005/api/health`
- [ ] Testar Frontend: Acessar admin.noidle.tech
- [ ] Verificar logs: `pm2 logs noidle-api`
- [ ] Testar funcionalidades principais
- [ ] Commit no Git
- [ ] Remover backups antigos (após confirmar)
---
## 🔍 Locais Específicos para Atualizar
### 1. Backend
**Arquivos principais:**
```
/var/www/noidle/backend/
├── server.js (linha 80: console.log)
├── package.json (name, description)
├── package-lock.json (name)
└── README.md
```
**Mudanças necessárias:**
- `console.log('✅ PointControl API')``console.log('✅ NoIdle API')`
- Nome do projeto no package.json
### 2. Frontend
**Arquivos principais:**
```
/var/www/noidle/frontend/
├── package.json
├── src/
│ ├── components/Layout.jsx (logo, título)
│ ├── pages/Login.jsx (branding)
│ └── App.js (title)
└── public/
├── index.html (title, meta)
└── manifest.json (name)
```
**Mudanças necessárias:**
- Logo e branding
- Títulos das páginas
- Meta tags
### 3. Configurações
**PM2:**
```bash
# Arquivo: ecosystem.config.js (criar se não existir)
module.exports = {
apps: [{
name: 'noidle-api',
script: './server.js',
cwd: '/var/www/noidle/backend',
env: {
NODE_ENV: 'production',
PORT: 3005
}
}]
};
```
**Nginx:**
```nginx
# /etc/nginx/sites-available/admin.noidle.tech
server {
server_name admin.noidle.tech;
root /var/www/noidle/frontend/build;
location /api {
proxy_pass http://localhost:3005;
}
}
```
---
## 🚨 Cuidados Importantes
### ⚠️ NÃO Renomear:
1. **Banco de Dados PostgreSQL:**
- Nome do database pode continuar como está
- Não há necessidade de renomear tabelas
2. **URLs Externas:**
- API URL já é `admin.noidle.tech`
- Certificados SSL já estão corretos ✅
3. **Chaves de Ativação:**
- Continuam funcionando normalmente
- Não precisam ser regeradas
### ✅ Verificar Depois:
1. **Clientes Windows:**
- Verificar se API_URL está correta
- Se necessário, atualizar e redistribuir
2. **Integracões:**
- Webhooks
- APIs externas
- Serviços de terceiros
---
## 📝 Script Automatizado (OPÇÃO RÁPIDA)
```bash
#!/bin/bash
# migrate_to_noidle.sh
echo "🔄 Iniciando migração PointControl → NoIdle"
# Parar serviços
echo "⏸️ Parando serviços..."
pm2 stop pointcontrol-api
# Renomear pasta
echo "📁 Renomeando pasta..."
cd /var/www
mv pointcontrol noidle
# Atualizar backend
echo "🔧 Atualizando backend..."
cd noidle/backend
sed -i 's/pointcontrol/noidle/g' package.json
sed -i 's/PointControl/NoIdle/g' server.js
# Atualizar frontend
echo "🎨 Atualizando frontend..."
cd ../frontend
sed -i 's/pointcontrol/noidle/g' package.json
find src/ -name "*.jsx" -o -name "*.js" | xargs sed -i 's/PointControl/NoIdle/g'
# Atualizar PM2
echo "🚀 Atualizando PM2..."
pm2 delete pointcontrol-api
cd ../backend
pm2 start server.js --name noidle-api
pm2 save
echo "✅ Migração concluída!"
echo "Verifique: pm2 logs noidle-api"
```
---
## 🎯 Estratégia Recomendada
### Opção 1: Migração Completa (Recomendado)
- Fazer tudo de uma vez em uma janela de manutenção
- Tempo estimado: 30-60 minutos
- Risco: Baixo (com backups)
### Opção 2: Migração Gradual
- Fase 1: Renomear pasta e PM2 (5 min)
- Fase 2: Atualizar código (15 min)
- Fase 3: Atualizar docs (10 min)
- Vantagem: Pode pausar entre fases
### Opção 3: Manter Como Está
- Criar alias/links simbólicos
- Documentar que "pointcontrol" é o nome técnico
- Usar "NoIdle" apenas no frontend
- **NÃO recomendado** (mantém confusão)
---
## 🆘 Rollback (Se der problema)
```bash
# Parar novos serviços
pm2 stop noidle-api
pm2 delete noidle-api
# Restaurar pasta
cd /var/www
mv noidle pointcontrol
# Restaurar PM2
cd pointcontrol/backend
pm2 start server.js --name pointcontrol-api
pm2 save
# Verificar
pm2 list
curl http://localhost:3005/api/health
```
---
## ✅ Resultado Esperado
Após a migração, tudo deve estar assim:
```
/var/www/noidle/
├── backend/
│ ├── package.json (name: "noidle-api")
│ └── server.js (console.log: "NoIdle API")
├── frontend/
│ ├── package.json (name: "noidle-frontend")
│ └── src/
│ └── * (Todas referências: NoIdle)
└── docs/
└── *.md (Documentação atualizada)
```
**PM2:**
```
noidle-api │ online
```
**Git:**
```
Repositório: sergio.correa/NoIdle
Pasta local: /var/www/noidle
```
---
## 📞 Suporte
Se algo der errado:
1. Não entre em pânico
2. Execute o rollback
3. Verifique os logs: `pm2 logs`
4. Restaure o backup se necessário
---
**Pronto para Começar? Execute o script ou siga o passo a passo!** 🚀
**Data de criação:** 2025-11-16

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 ""