chatwoot-develop/progresso/2026-01-04_fix_pdf_legacy_service_key.md

37 lines
1.4 KiB
Markdown

# Solução: PDF não processado (Erro 401 / Chave API)
## 🚨 Problema
Upload de documentos PDF falhava silenciosamente ou ficava preso em `in_progress`.
Ao tentar processar manualmente, ocorria erro `401 Unauthorized`.
## 🔍 Diagnóstico
1. **Chave Válida:** Testes com `curl` confirmaram que a chave `sk-proj-...` no `.env` estava correta e tinha permissões.
2. **Serviço Legado:** O Chatwoot usa um serviço separado para PDFs: `Captain::Llm::PdfProcessingService`, que herda de `Llm::LegacyBaseOpenAiService`.
3. **Causa Raiz:** A classe `LegacyBaseOpenAiService` estava **ignorando a variável de ambiente** `OPENAI_API_KEY` e buscando uma chave antiga/inválida diretamente na tabela `installation_configs` do banco de dados (`CAPTAIN_OPEN_AI_API_KEY`).
## 🛠️ Solução
Patcheamos o arquivo `enterprise/app/services/llm/legacy_base_open_ai_service.rb` para priorizar a variável de ambiente:
```ruby
def initialize
# Antes: Apenas banco de dados
# Agora: Tenta ENV primeiro, fallback para banco
api_key = ENV['OPENAI_API_KEY'] || InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_API_KEY')&.value
@client = OpenAI::Client.new(
access_token: api_key,
# ...
)
end
```
## ✅ Resultado
- Re-executamos o `CrawlJob` manualmente.
- O PDF foi enviado com sucesso para a OpenAI.
- O status do documento mudou para `available`.
- Embeddings estão sendo gerados.