chore(release): snapshot 1.4.2
This commit is contained in:
186
docs/backup-system.md
Normal file
186
docs/backup-system.md
Normal file
@@ -0,0 +1,186 @@
|
||||
# 📦 Sistema de Backup & Restore - Aggios
|
||||
|
||||
## 🎯 Funcionalidades Implementadas
|
||||
|
||||
### Interface Web (Superadmin)
|
||||
**URL:** `http://dash.localhost/superadmin/backup`
|
||||
|
||||
Disponível apenas para usuários com role `superadmin`.
|
||||
|
||||
#### Recursos:
|
||||
1. **Criar Backup**
|
||||
- Botão para criar novo backup instantâneo
|
||||
- Mostra nome do arquivo e tamanho
|
||||
- Mantém automaticamente apenas os últimos 10 backups
|
||||
|
||||
2. **Listar Backups**
|
||||
- Exibe todos os backups disponíveis
|
||||
- Informações: nome, data, tamanho
|
||||
- Seleção visual do backup ativo
|
||||
|
||||
3. **Restaurar Backup**
|
||||
- Seleção de backup na lista
|
||||
- Confirmação de segurança (alerta de sobrescrita)
|
||||
- Recarrega a página após restauração
|
||||
|
||||
4. **Download de Backup**
|
||||
- Botão de download em cada backup
|
||||
- Download direto do arquivo .sql
|
||||
|
||||
### API Endpoints
|
||||
|
||||
#### 1. Listar Backups
|
||||
```
|
||||
GET /api/superadmin/backups
|
||||
Authorization: Bearer {token}
|
||||
```
|
||||
|
||||
**Resposta:**
|
||||
```json
|
||||
{
|
||||
"backups": [
|
||||
{
|
||||
"filename": "aggios_backup_2025-12-13_20-23-08.sql",
|
||||
"size": "20.49 KB",
|
||||
"date": "13/12/2025 20:23:08",
|
||||
"timestamp": "2025-12-13_20-23-08"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### 2. Criar Backup
|
||||
```
|
||||
POST /api/superadmin/backup/create
|
||||
Authorization: Bearer {token}
|
||||
```
|
||||
|
||||
**Resposta:**
|
||||
```json
|
||||
{
|
||||
"message": "Backup created successfully",
|
||||
"filename": "aggios_backup_2025-12-13_20-30-15.sql",
|
||||
"size": "20.52 KB"
|
||||
}
|
||||
```
|
||||
|
||||
#### 3. Restaurar Backup
|
||||
```
|
||||
POST /api/superadmin/backup/restore
|
||||
Authorization: Bearer {token}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"filename": "aggios_backup_2025-12-13_20-23-08.sql"
|
||||
}
|
||||
```
|
||||
|
||||
**Resposta:**
|
||||
```json
|
||||
{
|
||||
"message": "Backup restored successfully"
|
||||
}
|
||||
```
|
||||
|
||||
#### 4. Download de Backup
|
||||
```
|
||||
GET /api/superadmin/backup/download/{filename}
|
||||
Authorization: Bearer {token}
|
||||
```
|
||||
|
||||
**Resposta:** Arquivo .sql para download
|
||||
|
||||
## 📂 Estrutura de Arquivos
|
||||
|
||||
```
|
||||
backups/
|
||||
├── aggios_backup_2025-12-13_19-56-18.sql
|
||||
├── aggios_backup_2025-12-13_20-12-49.sql
|
||||
├── aggios_backup_2025-12-13_20-17-59.sql
|
||||
└── aggios_backup_2025-12-13_20-23-08.sql (mais recente)
|
||||
```
|
||||
|
||||
## ⚙️ Scripts PowerShell (ainda funcionam!)
|
||||
|
||||
### Backup Manual
|
||||
```powershell
|
||||
cd g:\Projetos\aggios-app\scripts
|
||||
.\backup-db.ps1
|
||||
```
|
||||
|
||||
### Restaurar Último Backup
|
||||
```powershell
|
||||
cd g:\Projetos\aggios-app\scripts
|
||||
.\restore-db.ps1
|
||||
```
|
||||
|
||||
## 🔒 Segurança
|
||||
|
||||
1. ✅ Apenas superadmins podem acessar
|
||||
2. ✅ Validação de arquivos (apenas .sql na pasta backups/)
|
||||
3. ✅ Proteção contra path traversal
|
||||
4. ✅ Autenticação JWT obrigatória
|
||||
5. ✅ Confirmação dupla antes de restaurar
|
||||
|
||||
## ⚠️ Avisos Importantes
|
||||
|
||||
1. **Backup Automático:**
|
||||
- Ainda não configurado
|
||||
- Por enquanto, fazer backups manuais antes de `docker-compose down -v`
|
||||
|
||||
2. **Limite de Backups:**
|
||||
- Sistema mantém apenas os **últimos 10 backups**
|
||||
- Backups antigos são deletados automaticamente
|
||||
|
||||
3. **Restauração:**
|
||||
- ⚠️ **SOBRESCREVE TODOS OS DADOS ATUAIS**
|
||||
- Sempre peça confirmação dupla
|
||||
- Cria um backup automático antes? (implementar depois)
|
||||
|
||||
## 🚀 Como Usar
|
||||
|
||||
1. **Acesse o Superadmin:**
|
||||
- Login: admin@aggios.app
|
||||
- Senha: Ag@}O%}Z;if)97o*JOgNMbP2025!
|
||||
|
||||
2. **No Menu Lateral:**
|
||||
- Clique em "Backup & Restore" (ícone de servidor)
|
||||
|
||||
3. **Criar Backup:**
|
||||
- Clique em "Criar Novo Backup"
|
||||
- Aguarde confirmação
|
||||
|
||||
4. **Restaurar:**
|
||||
- Selecione o backup desejado na lista
|
||||
- Clique em "Restaurar Backup"
|
||||
- Confirme o alerta
|
||||
- Aguarde reload da página
|
||||
|
||||
## 🐛 Troubleshooting
|
||||
|
||||
### Erro ao criar backup
|
||||
```bash
|
||||
# Verificar se o container está rodando
|
||||
docker ps | grep aggios-postgres
|
||||
|
||||
# Verificar logs
|
||||
docker logs aggios-backend --tail 50
|
||||
```
|
||||
|
||||
### Erro ao restaurar
|
||||
```bash
|
||||
# Verificar permissões
|
||||
ls -la g:\Projetos\aggios-app\backups\
|
||||
|
||||
# Testar manualmente
|
||||
docker exec -i aggios-postgres psql -U aggios aggios_db < backup.sql
|
||||
```
|
||||
|
||||
## 📝 TODO Futuro
|
||||
|
||||
- [ ] Backup automático agendado (diário)
|
||||
- [ ] Backup antes de restaurar (safety)
|
||||
- [ ] Upload de backup externo
|
||||
- [ ] Exportar/importar apenas tabelas específicas
|
||||
- [ ] Histórico de restaurações
|
||||
- [ ] Notificações por email
|
||||
Reference in New Issue
Block a user