# WebSofia - Deploy em Produção

Pacote gerado em: 2026-07-10

## Conteúdo do pacote

| Arquivo | Tamanho | Descrição |
|---------|---------|-----------|
| `data.sql` | ~1MB | Dump completo MySQL (autor, livro, frase, video, autor_livro, autor_video) |
| `schema.sql` | 13KB | Estrutura CREATE TABLE |
| `uploads_capas.tar.gz` | 177KB | Capas dos livros |
| `deploy-to-production.ps1` | - | Script automatizado de deploy |

## Estatísticas atuais (pré-deploy)

| Tabela | Registros |
|--------|-----------|
| `autor` | 110 (103 com imagem, 88 com conteúdo .md) |
| `livro` | 788 (231 com capa, 61 com sinopse) |
| `frase` | 274 citações |
| `video` | 209 vídeos (214 autor-video) |
| `autor_livro` | 789 |
| `autor_video` | 214 |

## Como aplicar em produção

### Opção 1: Automático (PowerShell)

```powershell
$env:WEBSOFIA_PROD_SERVER = "user@servidor.com"
$env:WEBSOFIA_PROD_PASS = "senha-do-banco"
cd deploy
.\deploy-to-production.ps1
```

### Opção 2: Manual (Docker)

```bash
# 1. Copiar para container do banco
docker cp deploy/data.sql websofia-db-1:/tmp/

# 2. Aplicar dump (adiciona dados sem apagar existentes)
docker exec -i websofia-db-1 mysql -u root -proot websofia < deploy/data.sql

# 3. Enviar capas para o nginx/app
docker exec websofia-app-1 mkdir -p /var/www/html/uploads
docker cp deploy/uploads_capas.tar.gz websofia-app-1:/tmp/
docker exec websofia-app-1 tar xzf /tmp/uploads_capas.tar.gz -C /var/www/html/uploads/

# 4. Reiniciar container da aplicação
docker restart websofia-app-1
```

### Opção 3: SSH direto

```bash
# No servidor de produção
cd /tmp
docker cp data.sql websofia-db-1:/tmp/
docker exec -i websofia-db-1 mysql -u root -p"$DB_PASS" websofia < data.sql

docker cp uploads_capas.tar.gz websofia-app-1:/tmp/
docker exec websofia-app-1 bash -c "cd /var/www/html/uploads && tar xzf /tmp/uploads_capas.tar.gz"
docker restart websofia-app-1
```

## Considerações importantes

### Encoding
- Banco de dados: `utf8mb4` + collation `utf8mb4_unicode_ci`
- Caracteres acentuados preservados (corrigido encoding duplo que existia antes)
- Quebras de linha reais (CHAR(10)) em `autor.conteudo` ao invés de literais `\n`

### Encoding duplo (resolvido)
```sql
-- Para verificar se ainda existe encoding duplo:
SELECT * FROM frase WHERE frase LIKE '%Ã©%' OR frase LIKE '%Ã§%';

-- Para corrigir (se necessário):
UPDATE frase
SET frase = CONVERT(CAST(CONVERT(frase USING latin1) AS BINARY) USING utf8mb4)
WHERE frase REGEXP '[Ãâ][€©ª¢§³áíãõ]';
```

### Quebras de linha
Os arquivos `.md` são carregados via `LOAD_FILE()` no MySQL para preservar quebras de linha reais (CHAR(10)).

## Backup antes de aplicar

```bash
# Dump ANTES de aplicar mudanças
docker exec websofia-db-1 mysqldump -u root -proot websofia > /tmp/backup_antes.sql
```

## Rollback se necessário

```bash
# Restaurar backup
docker exec -i websofia-db-1 mysql -u root -proot websofia < /tmp/backup_antes.sql
```
