iachat/enterprise/app/models/captain
Rodribm10 b457e84c2f fix(captain): route embeddings to legacy OpenAI + retry transient errors
Resolve duas camadas de problema identificadas em teste end-to-end:

1. Embeddings falhavam com HTTP 404 (/codex/v1/embeddings não existe).
   Solução: Captain::Llm::EmbeddingService sempre usa OpenAI tradicional
   via Llm::Config.with_api_key(legacy_settings). ProviderConfig expõe
   legacy_openai_settings pra isso.

2. Servidor Codex ocasionalmente responde com response.failed +
   code=server_error (instabilidade transitória). Client agora retenta
   até 2x com backoff exponencial (0.5s, 1.5s) em erros retryable:
   HTTP 5xx, server_error no response.failed, ou stream inacabado.

Outras correções nesta etapa:
- Scenario#agent_model: em modo Codex, ignora CAPTAIN_OPEN_AI_MODEL_SCENARIO
  (que pode ter gpt-4o legado) e usa ProviderConfig.model.
- ExtractionService/ContradictionCheckerService/TranslateQueryService:
  trocam constantes hardcoded gpt-4o-mini/gpt-4.1-nano por
  ProviderConfig.light_model (respeitando o provider ativo).
- ProviderConfig.DEFAULT_CODEX_MODEL agora é gpt-5.2 (reconhecido pelo
  RubyLLM; gpt-5.4 não está no catalog do gem).

Validado ponta-a-ponta: WhatsApp → Chatwoot → Jasmine → handoff Daniela
→ faq_lookup com embedding OK → resposta com preços corretos.

Docs em docs/captain-codex-oauth.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 17:42:31 -03:00
..
lifecycle feat(captain): semantic memory fixes + roleta + reclamações + analytics 2026-04-21 15:36:25 -03:00
assistant_response.rb feat: legacy features to ruby llm (#12994) 2025-12-11 14:17:28 +05:30
assistant.rb feat(captain): semantic memory fixes + roleta + reclamações + analytics 2026-04-21 15:36:25 -03:00
brand.rb chore(style): fix rubocop offenses and update typing indicators 2026-02-25 15:06:58 -03:00
codex_credential.rb fix(captain): route embeddings to legacy OpenAI + retry transient errors 2026-04-22 17:42:31 -03:00
contact_memory.rb feat(captain): semantic memory fixes + roleta + reclamações + analytics 2026-04-21 15:36:25 -03:00
conversation_insight.rb feat: Adiciona prompt orquestrador configurável para assistentes Captain com editor UI. 2026-02-27 11:57:59 -03:00
custom_tool.rb chore(style): fix rubocop offenses and update typing indicators 2026-02-25 15:06:58 -03:00
document.rb chore(style): fix rubocop offenses and update typing indicators 2026-02-25 15:06:58 -03:00
gallery_item.rb feat(units): allow one Pix unit to link to multiple inboxes (N:N) 2026-02-26 21:33:23 -03:00
lifecycle.rb feat(lifecycle): add Captain::Lifecycle::Config model 2026-04-15 01:14:19 -03:00
notification_template.rb refactor: move notification templates de units para inboxes 2026-03-01 22:17:27 -03:00
pix_charge.rb feat(retention): foundation for customer retention metrics 2026-04-22 09:50:23 -03:00
report_snapshot.rb feat(captain): improve suite photo search accuracy with AI guidance 2026-02-26 23:04:28 -03:00
reservation.rb feat(lifecycle): wire Captain::Reservation lifecycle hooks 2026-04-15 01:37:23 -03:00
scenario.rb fix(captain): route embeddings to legacy OpenAI + retry transient errors 2026-04-22 17:42:31 -03:00
unit_inbox.rb feat(captain): improve suite photo search accuracy with AI guidance 2026-02-26 23:04:28 -03:00
unit.rb feat(lifecycle): add concierge_* accessors to Captain::Unit 2026-04-15 01:23:40 -03:00