# Guia de Armazenamento Externo — SGG sgg_storage

## Estrutura de pastas

```
/raiz/
  sgg/              ← código da aplicação (atualizável sem perder arquivos)
  sgg_storage/      ← todos os arquivos enviados pelo sistema
    avatars/              fotos de perfil dos usuários
    branding/
      logos/              logo principal e logo reduzida do gabinete
      favicons/           favicon
    media/
      demands/YYYY/MM/    mídias vinculadas a demandas
      visits/YYYY/MM/     mídias vinculadas a visitas técnicas
      general/YYYY/MM/    mídias gerais e institucionais
    attachments/
      demands/ID/         anexos de demandas
    documents/            documentos
    temp/                 arquivos temporários
```

## Como configurar

1. Faça upload da pasta `sgg_storage/` (incluída no ZIP completo) para o servidor,
   ao lado da pasta `sgg/`.

2. Ajuste as permissões:
   ```
   chmod 755 sgg_storage/ e todas as subpastas
   ```

3. Edite `sgg/config/config.php` e confirme:
   ```php
   'storage_root' => dirname(__DIR__, 2) . '/sgg_storage',
   ```
   Isso aponta para `sgg_storage/` ao lado de `sgg/` automaticamente.

   **Para cPanel com public_html:**
   Se `/sgg` está em `/home/usuario/public_html/sgg/`, então:
   - `dirname(__DIR__, 2)` = `/home/usuario/public_html`
   - `storage_root`        = `/home/usuario/public_html/sgg_storage`

   Para colocar **fora de public_html** (mais seguro), use:
   ```php
   'storage_root' => '/home/meuusuario/sgg_storage',
   ```

## Proteção contra acesso direto

Cada pasta já contém `.htaccess` bloqueando acesso HTTP direto.
Arquivos são servidos apenas via controllers seguros do sistema:
- Avatares: `/file/avatar`
- Branding: `/file/branding?f=logo`
- Mídias: `/media/{id}/raw`
- Anexos de demandas: `/demands/{id}/attachment/{aid}/download`

## Migração de arquivos antigos (`uploads/` → `sgg_storage/`)

Instalações anteriores têm arquivos em `sgg/uploads/`. O sistema já faz
fallback automático: arquivos antigos continuam sendo exibidos sem nenhuma
ação. Novos uploads já vão para `sgg_storage/`.

Para migrar arquivos antigos manualmente (recomendado mas não urgente):

**cPanel — Gerenciador de Arquivos:**
1. Abra `sgg/uploads/` e selecione todo o conteúdo.
2. Clique em Mover e informe o caminho de `sgg_storage/`.
3. Preserve a estrutura de subpastas.

**SSH:**
```bash
cp -rn /home/usuario/public_html/sgg/uploads/* \
       /home/usuario/public_html/sgg_storage/
```
(o `-n` garante que arquivos com mesmo nome não sejam sobrescritos)

## Verificação

Após configurar, verifique:
1. **Avatar**: edite seu perfil e troque a foto → deve aparecer sem erros.
2. **Logo**: acesse Configurações → Branding → envie nova logo.
3. **Mídia**: acesse Mídia → envie um arquivo → confirme que abre na galeria.
4. **Atualização**: substitua a pasta `/sgg` por uma versão nova →
   os arquivos em `sgg_storage/` persistem intactos.
