# 🔧 Correções no Sistema de Atualização Gitea

## Problemas Identificados

1. **Permissões negadas ao remover arquivos do `dist/`**
   - O script tentava remover arquivos que pertencem a outros usuários
   - Solução: Remover apenas arquivos que temos permissão de escrita

2. **`chown` falhando com "Operation not permitted"**
   - Tentativa de mudar ownership sem permissões root
   - Solução: Remover chamadas de `chown`, apenas ajustar permissões (`chmod`)

3. **`su` falhando com "Authentication failure"**
   - Tentativa de executar como `www-data` requer senha
   - Solução: Executar tudo como usuário atual (o processo já roda como `www-data`)

4. **Cópia de arquivos do frontend incluindo `dist/`**
   - Arquivos em `dist/` podem ter permissões diferentes
   - Solução: Não copiar `dist/` durante atualização (será reconstruído)

## Correções Aplicadas

### 1. Script de Build (`build_frontend.sh`)

**Antes:**
- Tentava remover tudo com `rm -rf dist`
- Usava `chown -R www-data:www-data`
- Usava `su -s /bin/bash www-data -c "..."`

**Depois:**
- Remove apenas arquivos com permissão de escrita
- Não usa `chown` (apenas `chmod` quando possível)
- Executa tudo como usuário atual (sem `su`)
- Usa `find` para remover apenas arquivos graváveis

### 2. Cópia de Arquivos Frontend

**Antes:**
- Copiava tudo, incluindo `dist/` e `node_modules`

**Depois:**
- Método `copyDirectorySelective()` que exclui:
  - `dist/` (será reconstruído)
  - `node_modules/` (será reinstalado)
  - `.vite/` (cache temporário)

### 3. Execução do Script

**Antes:**
- Executava com `bash script.sh` sem tratamento adequado

**Depois:**
- Executa como usuário atual
- Captura saída completa
- Log detalhado de erros

## Como Testar

1. **Executar atualização manual:**
   ```bash
   cd /var/www/gestorstream/backend
   php artisan tinker
   ```
   ```php
   $service = app(\App\Services\UpdateService::class);
   $update = $service->executeUpdate('v1.2.1', 1);
   ```

2. **Verificar logs:**
   ```bash
   tail -f /var/www/gestorstream/backend/storage/logs/frontend_build.log
   ```

3. **Verificar permissões:**
   ```bash
   ls -la /var/www/gestorstream/frontend/dist
   ```

## Próximos Passos (Opcional)

Se ainda houver problemas de permissão:

1. **Ajustar ownership manualmente (como root):**
   ```bash
   chown -R www-data:www-data /var/www/gestorstream/frontend
   chmod -R 755 /var/www/gestorstream/frontend
   ```

2. **Criar script de correção de permissões:**
   ```bash
   # Executar após cada atualização
   find /var/www/gestorstream/frontend/dist -type d -exec chmod 755 {} \;
   find /var/www/gestorstream/frontend/dist -type f -exec chmod 644 {} \;
   ```

## Observações

- O script agora é mais resiliente a problemas de permissão
- Não tenta fazer operações que requerem privilégios elevados
- Executa tudo como o usuário atual (www-data)
- Ignora arquivos que não pode modificar (em vez de falhar)

