iachat/enterprise/app/services/captain
Rodribm10 21f5fcce6a fix(retention): cohort endpoint 500 — Pundit policy + SQL binding
Dois bugs que faziam o cohort retornar 500 e a página de Retenção mostrar
"Falha ao carregar cohort":

1. `Captain::AssistantPolicy` não tinha `cohort?` → Pundit batia em
   NoMethodError no `check_authorization`. Adicionado como leitura pública
   da assistente, igual `show?`/`playground?`.

2. `RetentionCohortService#cohort_activity` chamava `exec_query(sql, name, [@account.id])`
   passando array de valores onde a API espera bind objects. A SQL ainda
   interpolava `account_id = $1` direto na string (sem placeholder ligado).
   Migrado pra `ActiveRecord::Base.sanitize_sql_array` com `?`, igual ao
   resto da base. Mantém parametrização e remove acoplamento com posicional.

Validado em prod via hot-patch (USR2): GET retention/cohort agora 200 com
3 cohorts.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 12:46:20 -03:00
..
assistant fix(captain): wrap runner.run in Timeout to guard HTTP hangs 2026-04-19 11:40:59 -03:00
codex fix(captain): translate response_format to text.format on Codex proxy 2026-04-22 22:47:09 -03:00
contact_memories fix(captain): route embeddings to legacy OpenAI + retry transient errors 2026-04-22 17:42:31 -03:00
contact_stats feat(retention): foundation for customer retention metrics 2026-04-22 09:50:23 -03:00
copilot feat: Migrate ruby llm captain (#12981) 2025-12-04 18:26:10 +05:30
inter chore(style): fix rubocop offenses and update typing indicators 2026-02-25 15:06:58 -03:00
lifecycle feat(lifecycle): add Dispatcher service with guards→render→send pipeline 2026-04-15 01:53:01 -03:00
llm fix(captain): route embeddings to legacy OpenAI + retry transient errors 2026-04-22 17:42:31 -03:00
notifications feat: sistema de notificações de reserva com templates configuráveis 2026-03-01 21:53:11 -03:00
onboarding feat: legacy features to ruby llm (#12994) 2025-12-11 14:17:28 +05:30
payments feat(captain): semantic memory fixes + roleta + reclamações + analytics 2026-04-21 15:36:25 -03:00
reports fix(retention): cohort endpoint 500 — Pundit policy + SQL binding 2026-04-26 12:46:20 -03:00
reservations chore(style): fix rubocop offenses and update typing indicators 2026-02-25 15:06:58 -03:00
roleta feat(captain): semantic memory fixes + roleta + reclamações + analytics 2026-04-21 15:36:25 -03:00
tools fix(captain): pre-reservation semantics + no duplicate pix links 2026-04-22 04:19:39 -03:00
open_ai_message_builder_service.rb feat(ai): implement dynamic debounce with sidekiq and concurrency locking with redis 2026-03-01 02:04:55 -03:00
tool_registry_service.rb feat: Update UI for Copilot (#11561) 2025-06-02 22:02:03 -05:00