# Staging e Backup — Fase 38.14

Documento de referência para ambiente de staging e procedimentos de backup/restore.

---

## 1. Ambiente Staging

### Objetivo

Ambiente separado para testes antes de produção, com banco de dados anonimizado e integrações em sandbox.

### Requisitos

| Item | Descrição |
|------|-----------|
| URL | staging.lotericapremiada.com.br ou similar |
| Banco | Cópia anonimizada do produção (sem dados sensíveis reais) |
| Pagamentos | PIX/Cartão em modo sandbox (Gerencianet, Mercado Pago, Cielo) |
| Email | Serviço de teste (Mailtrap, Mailhog) ou desabilitar envio |
| Redis | Opcional; sessões em arquivo para staging simples |

### Setup sugerido

1. **Docker Compose** com serviços: app (PHP), frontend (Next.js), db (MySQL)
2. **Seed anonimizado:** script que copia estrutura e anonimiza emails, CPFs, endereços
3. **Variáveis de ambiente:** `APP_ENV=staging`, `MYSQL_*` para banco staging
4. **Gateways:** usar credenciais sandbox de cada provedor

### Checklist pré-deploy staging

- [ ] Banco com dados anonimizados
- [ ] PIX/Cartão em sandbox
- [ ] Emails não enviados para clientes reais
- [ ] Sentry com projeto separado (opcional)
- [ ] GA4 com propriedade de teste

---

## 2. Backup do Banco

### Backup automático

Recomendação: cron diário (ex.: 3h da manhã):

```bash
# Exemplo: backup MySQL
mysqldump -u USER -p DB_NAME | gzip > /backups/loterica_$(date +%Y%m%d).sql.gz
```

### Retenção sugerida

- Diário: últimos 7 dias
- Semanal: últimos 4 semanas
- Mensal: últimos 3 meses

### Armazenamento

- Servidor separado ou cloud (S3, Backblaze)
- Criptografia em repouso
- Acesso restrito

---

## 3. Procedimento de Restore

### Pré-requisitos

- Backup válido (arquivo .sql ou .sql.gz)
- Acesso ao banco de destino
- Janela de manutenção (aplicação offline)

### Passos

1. **Parar aplicação** (evitar writes durante restore)
2. **Fazer backup do estado atual** (caso precise reverter)
3. **Restaurar:**
   ```bash
   gunzip -c backup.sql.gz | mysql -u USER -p DB_NAME
   # ou, se não compactado:
   mysql -u USER -p DB_NAME < backup.sql
   ```
4. **Verificar integridade:** checar tabelas críticas (cliente, grupo, bolao, premio_resgatar)
5. **Reiniciar aplicação**
6. **Smoke test:** login, carrinho, um fluxo de compra

### Testes periódicos de restore

Executar restore em ambiente de teste a cada trimestre para validar que os backups são restaurados corretamente.

---

## 4. Variáveis de ambiente (referência)

| Variável | Produção | Staging |
|----------|----------|---------|
| APP_ENV | production | staging |
| MYSQL_* | banco prod | banco staging |
| REDIS_DSN | Redis prod | (opcional) |
| SENTRY_DSN | DSN prod | DSN staging ou vazio |
| Gerencianet/Cielo/MP | credenciais prod | credenciais sandbox |

---

**Referência:** ideias-melhorias.md §11; plano-acao-v2-completo.md Fase 38.14
