Sprints #907
AbertaDocumentação #901: ÉPICA 04: Integrações e Mensageria
Sprint 16 — Ajustes para permitir Multi bots, bot details com histórico do datatables e cronjob para exportação de execuções, RBAC e ajustes nos gráficos
0%
Descrição
Visão Geral das Etapas de Desenvolvimento:¶
Ajuste nos Modelos de Domínio (bot_model.dart): Mapear os campos name e description na classe BotAssociationModel para que possamos ler o nome e descrição customizados de cada instância (ex: "WhatsApp Suporte", "WhatsApp Vendas") criados a partir do mesmo template.
Implementação de Abas no Catálogo (bot_catalog_view.dart): Adicionar um DefaultTabController e dividir a interface em duas abas:
Modelos Disponíveis: Exibe a lista global de templates (bots). O botão principal criará uma nova instância independente (iniciando o wizard com association: null).
Meus Bots: Exibe as instâncias criadas e configuradas (bot_associations), cada uma mostrando seu nome customizado, o modelo no qual é baseada, o badge de status e os botões de edição, visualização de métricas e desativação.
Garantia de Regras de Constraints do Flutter: Revisar o código para evitar crashes de layout (como o limite de tamanho de botões dentro de Row e de propagação de constraints em listas).
Tarefas:¶
- Permitir criar mais de um bot do mesmo bot template.
- Adicionar página bot details com métricas e histórico de conversas do datatables do n8n puxando dados através de api.
- Adicionar os roles dos usuários (RBAC) para acessar telas/dados/bots e campo para seleção do usuário responsável pelo bot.
- Alteração do gráfico de histórico de execução para ajustar dias/horas no eixo X e exibir popup com informações de quantidade de execução no pontos metrificados.
- Criação de cronjob para exportação dos dados de execução do n8n para a tabela de
Atualizado por Rodrigo Admin há 2 meses
- Situação alterado de Backlog para Developing
- Atribuído para ajustado para Rodrigo Admin
- Tarefa mãe alterado de #905 para #901
Atualizado por Rodrigo Admin há 2 meses
· Editado
- Título alterado de Sprint 15 — Atividades de backend para Sprint 15 — Atividades Devops Docker e remocao das tabelas sem uso
Atualizado por Rodrigo Admin há aproximadamente 2 meses
- Título alterado de Sprint 15 — Atividades Devops Docker e remocao das tabelas sem uso para Sprint 15 — Atividades Devops Docker, Automation Tests e Remocao das tabelas/funcionalidades descontinuadas
Atualizado por Rodrigo Admin há aproximadamente 2 meses
- Título alterado de Sprint 15 — Atividades Devops Docker, Automation Tests e Remocao das tabelas/funcionalidades descontinuadas para Sprint 16 — Atividades Devops Docker, Automation Tests e Remocao das tabelas/funcionalidades descontinuadas
Atualizado por Rodrigo Admin há aproximadamente 1 mês
- Título alterado de Sprint 16 — Atividades Devops Docker, Automation Tests e Remocao das tabelas/funcionalidades descontinuadas para Sprint 16 — Permitir criar mais de um bot do mesmo bot template e tarefas de limpeza/tests/deploy
- Data prevista alterado de 15/05/2026 para 22/05/2026
- Início alterado de 14/05/2026 para 20/05/2026
Atualizado por Rodrigo Admin há aproximadamente 1 mês
- Descrição atualizado(a) (diff)
- Categoria ajustado para Frontend
Atualizado por Rodrigo Admin há 25 dias
- Título alterado de Sprint 16 — Permitir criar mais de um bot do mesmo bot template e tarefas de limpeza/tests/deploy para Sprint 16 — Ajustes para permitir Multi bots, bot details com histórico do datatables e cronjob para exportação de execuções, RBAC e ajustes nos gráficos
- Descrição atualizado(a) (diff)
- Categoria excluído (
Frontend) - Situação alterado de Developing para Testing
- Prioridade alterado de alto para medio
Atualizado por Rodrigo Admin há 25 dias
- Descrição atualizado(a) (diff)
🛠️ Revisão Geral de Atividades Implementadas
- Controle de Acesso Baseado em Regras (RBAC) e Segurança
Backend (schema.prisma e bots.service.ts):
Estruturação e persistência do campo botUserId na tabela bot_associations para vincular bots específicos a usuários com o papel USER.
Regras de restrição estritas: usuários com papel USER só conseguem listar, visualizar e operar bots cujas associações correspondam ao seu respectivo botUserId. Administradores (ADMIN) e Gerentes (MANAGER) mantêm acesso global.
Frontend (bot_catalog_view.dart):
Ocultação de botões de gerenciamento avançado (como "Configurar", "Excluir/Desativar") para usuários com papel USER, deixando-os visíveis apenas para papéis administrativos. - Caixa de Seleção para Associação de Usuários no Wizard (Passo 1)
Design e Interface Premium:
Inclusão de um DropdownButtonFormField estilizado dentro do cartão glassmórfico de "Identificação da Instância" (Passo 1 do Wizard), posicionado logo abaixo dos campos de Nome e Descrição do Bot.
Filtro de Papéis:
Exibição estrita de contas com papel USER (pois administradores e gerentes já possuem acesso completo global a todos os bots e não necessitam de mapeamento individual).
Prevenção de Erros de API (403 Forbidden):
Implementação de uma verificação reativa da sessão via AuthBloc. Se o usuário logado for USER, o sistema não realiza a chamada ao endpoint GET /users (que retornaria erro 403 por restrições de permissão do backend) e oculta completamente o select box da interface, garantindo uma navegação limpa.
Persistência de Dados:
Atualização dos DTOs no backend e lógica no frontend (Bloc, Repository, Handler) para repassar e persistir o valor selecionado do botUserId tanto na criação (POST /bots/associate) quanto na edição (PATCH /bots/associate/:id). - Linearização e Correção do Gráfico de Execuções (bot_detail_view.dart)
Correção de Sintaxe:
Resolução de um erro de compilação devido a um parêntese ) ausente na declaração de BoxDecoration do container de estado vazio.
Linearização do Eixo X:
Refatoração do componente _ExecutionHistoryChart para mapear de forma uniforme a linha do tempo do gráfico.
O gráfico agora calcula o menor e o maior horário do histórico recebido (com intervalo mínimo de 6 horas para evitar quebras de divisão por zero) e pré-popula todas as horas intermediárias sem execuções com o valor 0. Isso garante um espaçamento horizontal uniforme no gráfico de linha e uma leitura de dados visualmente precisa. - Correção do Nome do Bot no Dashboard ("Bot Removido")
O Problema:
Quando uma associação não possuía um nome personalizado definido, o painel de atividades recentes exibia a string genérica "Bot Removido", mesmo o modelo do bot estando ativo.
Solução:
Confirmação de que o serviço do backend (bots.service.ts) inclui a relação bot na consulta de métricas de execuções recentes.
Ajuste em dashboard_view.dart para priorizar o nome personalizado da associação e, caso esteja vazio ou nulo, realizar o fallback automático para o nome original do modelo (association['bot']['name']). - Limpeza de Avisos de Compilação (Warnings e Depreciações)
Substituição do .withOpacity:
Substituição de todas as chamadas ao método depreciado .withOpacity(...) pela nova propriedade recomendada pelo Flutter .withValues(alpha: ...) em 11 arquivos do projeto, garantindo compatibilidade com as versões mais recentes do SDK.
Resolução de use_build_context_synchronously:
Tratamento de chamadas assíncronas no Wizard e caixas de emparelhamento (WhatsApp/Telegram) adicionando proteções if (!mounted) return; e armazenando estados de navegação (NavigatorState) localmente antes de retornos assíncronos. - Correção das Suítes de Testes de Integração e Unidade
Mapeamento de Injeção de Dependências:
Resolução do erro Could not find the correct Provider que ocorria durante os testes automatizados do Wizard (bot_setup_flow_test.dart).
Definição e injeção do mock MockUserRepository nos provedores do ambiente de teste, retornando dados vazios com sucesso de forma isolada.
📊 Resultados de Verificação
Ambas as etapas de validação estática e dinâmica na aplicação frontend passam com sucesso:
Análise Estática (flutter analyze):
0 Erros de Compilação.
Todos os avisos de deprecabilidade e concorrência assíncrona criados pelas nossas implementações foram resolvidos.
Testes Automatizados (flutter test):
Todos os 63 testes de unidade, widgets e fluxos de integração passam com 100% de sucesso:
bash
00:09 +63: All tests passed!
As modificações de código correspondentes a este plano de trabalho estão salvas e documentadas em detalhes no arquivo de registro
walkthrough.md.