Projeto

Geral

Perfil

Ações

Sprints #907

Aberta

Documentaçã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

Adicionado por Rodrigo Admin 3 meses atrás. Atualizado 25 dias atrás.

Situação:
Testing
Prioridade:
medio
Atribuído para:
Categoria:
-
Início:
20/05/2026
Data prevista:
22/05/2026 (28 dias atrasado)
% Terminado:

0%

Tempo estimado:
12:00 h

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:

  1. Permitir criar mais de um bot do mesmo bot template.
  2. Adicionar página bot details com métricas e histórico de conversas do datatables do n8n puxando dados através de api.
  3. Adicionar os roles dos usuários (RBAC) para acessar telas/dados/bots e campo para seleção do usuário responsável pelo bot.
  4. 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.
  5. Criação de cronjob para exportação dos dados de execução do n8n para a tabela de
Ações #1

Atualizado por Rodrigo Admin2 meses

  • Situação alterado de Backlog para Developing
  • Atribuído para ajustado para Rodrigo Admin
  • Tarefa mãe alterado de #905 para #901
Ações #2

Atualizado por Rodrigo Admin2 meses · Editado

  • Título alterado de Sprint 15 — Atividades de backend para Sprint 15 — Atividades Devops Docker e remocao das tabelas sem uso
Ações #3

Atualizado por Rodrigo Adminaproximadamente 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
Ações #4

Atualizado por Rodrigo Adminaproximadamente 2 meses

  • Descrição atualizado(a) (diff)
Ações #5

Atualizado por Rodrigo Adminaproximadamente 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
Ações #6

Atualizado por Rodrigo Adminaproximadamente 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
Ações #7

Atualizado por Rodrigo Adminaproximadamente 1 mês

  • Descrição atualizado(a) (diff)
  • Categoria ajustado para Frontend
Ações #8

Atualizado por Rodrigo Adminaproximadamente 1 mês

  • Descrição atualizado(a) (diff)
Ações #9

Atualizado por Rodrigo Adminaproximadamente 1 mês

  • Descrição atualizado(a) (diff)
Ações #10

Atualizado por Rodrigo Adminaproximadamente 1 mês

  • Descrição atualizado(a) (diff)
Ações #11

Atualizado por Rodrigo Admin25 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
Ações #12

Atualizado por Rodrigo Admin25 dias

  • Descrição atualizado(a) (diff)

🛠️ Revisão Geral de Atividades Implementadas

  1. 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.
  2. 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).
  3. 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.
  4. 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']).
  5. 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.
  6. 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.

Ações

Exportar para Atom PDF