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