1.4 KiB
1.4 KiB
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
- Chave Válida: Testes com
curlconfirmaram que a chavesk-proj-...no.envestava correta e tinha permissões. - Serviço Legado: O Chatwoot usa um serviço separado para PDFs:
Captain::Llm::PdfProcessingService, que herda deLlm::LegacyBaseOpenAiService. - Causa Raiz: A classe
LegacyBaseOpenAiServiceestava ignorando a variável de ambienteOPENAI_API_KEYe buscando uma chave antiga/inválida diretamente na tabelainstallation_configsdo 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:
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
CrawlJobmanualmente. - O PDF foi enviado com sucesso para a OpenAI.
- O status do documento mudou para
available. - Embeddings estão sendo gerados.