chatwoot-develop/progresso/2026-01-01_fix_blank_page_captain.md

38 lines
2.1 KiB
Markdown

# Nota de Progresso: Resolução de Blank Page (Tela Branca) no Captain V2
## Objetivo
Resolver a falha catastrófica de interface (blank page) que impedia a utilização das configurações do assistente Captain V2.
## Contexto
Após a introdução de campos para Multi-LLM e novas abas de "Skills", a interface começou a apresentar uma tela branca. O erro era causado por acessos a propriedades de objetos `null` no ciclo de vida inicial do Vue, antes dos dados serem hidratados pelo Vuex.
## Passos Realizados
1. **Debug de Fluxo**: Identificado que o `AssistantsIndexPage.vue` tentava dar um `.find()` em um estado do Vuex ainda não inicializado.
2. **Implementação de Null-Safety**:
- Adicionado `optional chaining` (`?.`) em templates onde `assistant.name` era acessado.
- Adicionados checks de saída antecipada (`if (!assistant) return`) em observadores (watchers) e funções de atualização de estado.
3. **Correção de Componentes**:
- O componente `SelectMenu` exigia a prop `label` em novas versões, causando crash silencioso se estivesse ausente. A prop foi restaurada com as chaves de tradução corretas.
4. **Roteamento**: Re-enquadramento das rotas no `captain.routes.js` para garantir que o `navigationPath` seja resolvido corretamente.
## Arquivos Alterados
- `app/javascript/dashboard/routes/dashboard/captain/pages/AssistantsIndexPage.vue`
- `app/javascript/dashboard/routes/dashboard/captain/assistants/settings/Settings.vue`
- `app/javascript/dashboard/components-next/captain/pageComponents/assistant/settings/AssistantBasicSettingsForm.vue`
- `app/javascript/dashboard/routes/dashboard/captain/captain.routes.js`
- `app/javascript/dashboard/i18n/locale/en/integrations.json` (Adição de chaves de tradução)
## Validação
- Navegação direta para `/captain/assistants/1/settings` agora carrega sem erros.
- Navegação via sidebar para "Skills" (Tools) funciona conforme o esperado.
- Console do browser limpo de erros de `undefined`.
## Rollback
Basta reverter os checks de segurança e a prop `label` do `SelectMenu`, embora não seja recomendado, pois a abordagem atual segue o padrão defensivo do projeto.