Destaques
- Debug ao vivo da migração de imagens para bucket Oracle Cloud Infrastructure (OCI), usando o driver
s3/oracle-s3do Flysystem no Laravel: erro inicial "namespace não autorizado ou bucket não encontrado" resolvido ajustando a policy IAM (manage object-family, manage buckets) e corrigindo a URL pré-autenticada (PAR) — distinção entre a URL de leitura pública e o endpoint de escrita, que estavam invertidos. - Causa raiz do upload que "não subia": o Livewire grava um arquivo temporário no disco de destino antes de mover para a pasta final, e precisa de permissão de delete nessa pasta temporária no bucket; sem essa permissão o upload falhava silenciosamente, sem gravar no banco.
- Solução aplicada: configurar
livewire.phppara gravar o temporário num subdiretório dedicado (bucket/livewire-tmp), separado da pasta de produtos, com permissão de escrita e delete; alternativas discutidas foram usardisk('local')para o temporário do FileUpload do Filament ou desativar o cleanup automático. - Alerta de custo: alguns provedores de object storage cobram taxa se um arquivo for deletado antes de um período mínimo (o grupo citou o exemplo de 3 meses em outro serviço) — relevante para quem fica escrevendo e apagando temporários com frequência.
- Boa prática de modelagem discutida: gravar no banco apenas o nome do arquivo, mantendo o path/bucket base numa configuração à parte, para permitir trocar de bucket, região ou provedor sem precisar migrar dados.
- Ponto em aberto: uma pasta extra, com o próprio nome do bucket, aparecia aninhada no path final sem explicação clara no código do projeto; suspeita recaiu sobre o FilePond (a lib JS usada por baixo do upload do Livewire) ou sobre a montagem da URL do endpoint OCI — ficou como tarefa para investigação posterior entre Virgo e Matheus.
- Anúncio de agenda: próximo workshop em 25/02, às 19h, com um projeto usando Laravel Reverb em esquema multissala e um bot LLM como oponente quando falta um segundo jogador — ideia trazida por Guilherme.
- Atualizações de comunidade: Marcelão migrando seus plugins Filament (File Manager e Terminal SSH) da v4 para a v5 e mantendo um registro privado próprio de pacotes Composer/NPM/Docker; João testando o Claude Agent SDK rodando local com a própria conta Anthropic, sem custo adicional de API.
Profundidade técnica
O caso de storage exigiu debug de nível intermediário/avançado, com trade-offs reais: URL pré-autenticada de escrita ampla (qualquer um com o link sobe arquivo) versus uma URL restrita e não listável, mais segura mas exigindo configuração adicional; cleanup automático do temporário do Livewire versus custo de delete prematuro em alguns provedores; e path completo no banco (mais simples de ler, mas acoplado ao provedor) versus path relativo com base configurável (mais flexível para trocar de bucket/região, exigindo uma camada extra de indireção). A sessão terminou com o upload funcionando, mas com uma anomalia de path não totalmente explicada — reforçando que debug em produção às vezes fecha o sintoma sem fechar a causa raiz, e que isso é normal e faz parte do processo. O debate sobre IA reforçou o mesmo princípio de planejamento: código gerado sem contexto e requisitos claros tende a ser "plausível" mas não necessariamente correto, e cobra o preço depois, na manutenção.
Faça parte do Clã
Esse tipo de sessão — debug ao vivo, sem roteiro, com gente de verdade puxando fio até achar a causa — é exclusivo de quem está no Clã. Quer participar das próximas mentorias? Conheça o Beer and Code Clã Nível 1.
Engenharia de IA virou profissão, e se aprende construindo, não assistindo. O Clã Beer and Code é o ambiente onde isso acontece ao vivo, toda semana: RAG, agentes, observabilidade e LLMOps em projetos reais, ao lado de quem já está em produção. É pago, é assinatura, e é exatamente o ambiente que estes encontros dão uma amostra.
Entrar no Clã