chatwoot-develop/progresso/2026-01-06_fix_date_context_captain.md

41 lines
2.1 KiB
Markdown

# Fix: Injeção de Data no Contexto do Captain
## Objetivo
Corrigir a incapacidade do agente "Capitão" (e seus cenários) de saber a data atual, o que levava a respostas incorretas sobre o dia da semana ou a data corrente.
## Contexto
O usuário relatou que o Capitão não sabia que dia era hoje (pensava ser quinta-feira quando era terça). A análise revelou que os prompts de sistema (System Prompts) e templates Liquid não recebiam nenhuma informação temporal.
## Passos Realizados
1. **Captain::Assistant (Agent V2)**:
* Arquivo: `enterprise/app/models/captain/assistant.rb`
* Mudança: Adicionado `current_date` ao método `prompt_context`, formatado como `Time.zone.today.strftime('%A, %B %d, %Y')`.
2. **Captain::Scenario (Agent V2)**:
* Arquivo: `enterprise/app/models/captain/scenario.rb`
* Mudança: Adicionado `current_date` ao método `prompt_context`.
3. **Templates Liquid**:
* Arquivos: `enterprise/lib/captain/prompts/assistant.liquid`, `enterprise/lib/captain/prompts/scenario.liquid`
* Mudança: Adicionada a linha `Today is {{ current_date }}.` na seção "Current Context".
4. **Copilot Chat Service**:
* Arquivo: `enterprise/app/services/captain/copilot/chat_service.rb`
* Mudança: Injeção de uma mensagem de sistema adicional contendo `Today is ...` no método `build_messages`.
5. **Assistant Chat Service (Legacy/Alternative)**:
* Arquivo: `enterprise/app/services/captain/llm/assistant_chat_service.rb`
* Mudança: Injeção de uma mensagem de sistema adicional contendo `Today is ...` na inicialização do serviço.
## Código/Arquivos Alterados
- `enterprise/app/models/captain/assistant.rb`
- `enterprise/app/models/captain/scenario.rb`
- `enterprise/lib/captain/prompts/assistant.liquid`
- `enterprise/lib/captain/prompts/scenario.liquid`
- `enterprise/app/services/captain/copilot/chat_service.rb`
- `enterprise/app/services/captain/llm/assistant_chat_service.rb`
## Como Validar
Interagir com o agente Capitão (em modo Copilot ou Autônomo) e perguntar "Que dia é hoje?". O agente deve responder com a data correta baseada no servidor (Time.zone.today).