# 📦 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