- 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
447 lines
8.7 KiB
Markdown
447 lines
8.7 KiB
Markdown
# 🔄 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
|
|
|