diff --git a/progresso/2026-02-28_fix_media_audio_imagem_whatsapp.md b/progresso/2026-02-28_fix_media_audio_imagem_whatsapp.md index 11a66c710..459dd0ee9 100644 --- a/progresso/2026-02-28_fix_media_audio_imagem_whatsapp.md +++ b/progresso/2026-02-28_fix_media_audio_imagem_whatsapp.md @@ -11,43 +11,59 @@ - Áudio exibe `00:00 / 00:00` e não toca - Imagem exibe "Esta imagem não está mais disponível" - Mensagens de texto chegam normalmente +- Transcrição do áudio aparece corretamente, mas o áudio não toca + +--- + +## ⚡ Diagnóstico Rápido (comece aqui) + +Antes de ler tudo, rode esses comandos na ordem. O primeiro que falhar identifica o bug. + +```bash +# 1. Arquivo chegou? Descriptografia OK? +grep -E "WuzAPI Decrypt|SUCCESS|invalid format" log/development.log | tail -5 + +# 2. Arquivo está no disco? +bin/rails runner "a = Attachment.last; puts a.file.blob.byte_size; puts File.binread(ActiveStorage::Blob.service.path_for(a.file.blob.key), 4).bytes.map{|b| '%02X'%b}.join(' ')" + +# 3. URL que o browser recebe é relativa ou absoluta? +grep "data_url" log/development.log | tail -3 +``` + +**Interpretação:** +| Resultado | Bug | +|-----------|-----| +| Sem `WuzAPI Decrypt:` nos logs | Bug 5 (PayloadParser sem `attachment_params`) | +| `WuzAPI Decrypt Error: NoMethodError` | Bug 3 (`update!` em vez de `update`) | +| Bytes: `31 88 d2` ou similares (não FF D8, 4F 67, 89 50) | Bug 2 (arquivo encriptado) | +| URL absoluta `https://ngrok-url/...` | Bug 4 (ngrok interstitial — ver abaixo) | +| URL relativa `/rails/active_storage/...` e bytes válidos | Bug de infra (Sidekiq parado, ngrok caído) | --- ## Diagnóstico — Root Causes -Havia **três bugs independentes**, todos precisavam ser corrigidos. +Havia **seis bugs independentes** documentados ao longo do tempo. Os primeiros três são históricos. Os outros três surgiram com refatorações. --- -### Bug 1 — URL de mídia apontando para `localhost` (invisível via ngrok) +### Bug 1 — URL de mídia apontando para `localhost` hardcoded *(histórico)* **Arquivo:** `app/models/attachment.rb` **Problema:** -`file_url` e `thumb_url` geravam URLs hardcoded com `localhost:3000`. O browser acessando via ngrok não consegue resolver `localhost:3000` diretamente, então `` e `