Projeto

Geral

Perfil

Ações

Sprints #904

Aberta

Documentação #901: ÉPICA 04: Integrações e Mensageria

Sprint 13 — Integração com LLMs e Criação das Credenciais N8N

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

Situação:
Testing
Prioridade:
medio
Atribuído para:
Categoria:
Backend
Início:
08/05/2026
Data prevista:
11/05/2026 (39 dias atrasado)
% Terminado:

100%

Tempo estimado:
12:00 h

Descrição

Endpoints da API: Utilizaremos a URL https://evolution.ftsflows.com.br diretamente no backend.
Criptografia: Mesmo em modo Stateless, as instâncias locais no n8n precisam de segurança. Utilizaremos o Header apikey dinâmico.

  1. Validar as credencias inseridas
  2. Criar credencial no N8N correspondente a LLM
Ações #1

Atualizado por Rodrigo Admin2 meses

  • Situação alterado de Backlog para Developing
Ações #2

Atualizado por Rodrigo Admin2 meses

  • Título alterado de Sprint 13 — Atividades de frontend para Sprint 13 — Integração com n8n
  • Descrição atualizado(a) (diff)
  • Categoria ajustado para Backend
  • Atribuído para ajustado para Rodrigo Admin
Ações #3

Atualizado por Rodrigo Admin2 meses

  • [Phase 1] Integração com n8n
    Endpoints da API: Utilizaremos a URL https://evolution.ftsflows.com.br diretamente no backend.
    Criptografia: Mesmo em modo Stateless, as instâncias locais no n8n precisam de segurança. Utilizaremos o Header apikey dinâmico.
    Proposed Changes (Para a Sessão Atual)
    Finalizar a modelagem de dados no backend.
    Desenvolver o driver completo para Evolution API.
Ações #4

Atualizado por Rodrigo Admin2 meses

  • Título alterado de Sprint 13 — Integração com n8n para Sprint 14 — Integração com n8n
Ações #5

Atualizado por Rodrigo Admin2 meses

  • Título alterado de Sprint 14 — Integração com n8n para Sprint 13 — Integração com LLMs e Criação das Credenciais N8N
  • Descrição atualizado(a) (diff)
Ações #6

Atualizado por Rodrigo Admin2 meses

Walkthrough — Sprint 13: Integração com LLMs e Credenciais N8N
Nesta sprint, implementamos a base para integrar serviços de IA ao FTSAssistants, garantindo segurança na persistência de chaves e automação na configuração do n8n.

Mudanças Principais
Backend (NestJS & Prisma)
Validação de Tokens: Criamos o LlmService que valida chaves da OpenAI e Anthropic em tempo real consultando seus endpoints oficiais de modelos.
Segurança: Expandimos o modelo Integration com o campo encryptedData. As chaves de API são criptografadas via AES-256-GCM antes de serem salvas no banco.
Automação N8N: O N8nService agora cria automaticamente credenciais do tipo openAiApi e anthropicApi no cofre do n8n sempre que uma integração é salva.
Endpoints:
POST /integrations/llm/test: Para testes instantâneos no frontend.
POST /integrations/llm/save: Para persistência e sincronização com n8n.
Frontend (Flutter)
IntegrationsRepository: Implementação da camada de dados para comunicação com os novos endpoints de LLM.
Bot Wizard (Passo 2):
Substituímos a lógica simulada por chamadas reais à API.
Adicionamos suporte ao provedor Anthropic.
Implementamos feedback visual de "Testando conexão" e sucesso/erro.
O salvamento da chave agora ocorre de forma transparente ao avançar no wizard.
Verificação e Testes
Testes Automatizados (Backend)
Executamos as suítes de teste unitário para garantir a integridade dos payloads e do tratamento de erros:

llm.service.spec.ts: PASS (3 testes)
n8n.service.spec.ts: PASS (9 testes, incluindo novos casos de LLM)
Demonstração Técnica
TIP

No Passo 2 do Wizard, ao selecionar "OpenAI" ou "Anthropic", o usuário pode clicar no ícone de raio (⚡) para validar sua chave. Somente chaves válidas são persistidas no sistema.

Sprint 13 concluída com sucesso. O sistema está pronto para a Sprint 14 (OAuth2/Google).

Ações #7

Atualizado por Rodrigo Adminaproximadamente 2 meses

Concluí a refatoração da integração com LLMs e a abstração das credenciais do n8n. O sistema agora é totalmente orientado a dados, permitindo adicionar novos provedores apenas via banco de dados, sem necessidade de alterações no código.

Resumo das Implementações:
Backend Dinâmico:

A LlmService agora utiliza metadados (URL, headers, método HTTP e body) cadastrados no banco para validar tokens. Isso resolveu o problema com provedores como o Grok (xAI), que exigem requisições POST.
Implementação do método syncCredential na N8nService, que abstrai a criação de credenciais no n8n de forma genérica e idempotente.
Remoção de todas as funções obsoletas (createOpenAiCredential, etc.) e limpeza do código técnico.
Melhorias no Frontend:

Correção de Bug: O token LLM agora é enviado corretamente mesmo quando o campo está com a máscara de "asteriscos" (********************).
Navegação: O wizard do bot agora realiza o scroll automático para o topo ao avançar entre os passos, garantindo foco no título da tela conforme solicitado.
Carregamento Dinâmico: A lista de provedores de LLM no wizard agora é carregada dinamicamente do backend.
Qualidade e Testes:

Backend: Cobertura de testes restaurada e ampliada, com todas as suítes passando (137 testes aprovados).
Frontend: Testes de integração atualizados para validar o novo comportamento de scroll e a persistência dos dados entre os passos.

Ações #8

Atualizado por Rodrigo Adminaproximadamente 2 meses

  • Situação alterado de Developing para Testing
Ações #9

Atualizado por Rodrigo Adminaproximadamente 2 meses

Resumo das Últimas Alterações:
Atualização dos Mocks do Prisma (PrismaService):

Adicionei o mock do método prisma.tenant.findUnique nos testes de integração: integrations.controller.spec.ts, telegram.service.spec.ts e whatsapp.service.spec.ts. Isso resolveu as falhas que ocorriam pela nova implementação de padronização do nome da credencial, que exige buscar o nome do "Tenant" dinamicamente.
Correção de Regressão nos Testes do WhatsappService:

Atualizei o teste de sincronização (syncStatus) para incluir e preencher corretamente os campos tenantId e botAssociationId no mock da base de dados.
Adicionei um await em uma promessa vazia na fila de micro-tarefas para lidar com a natureza assíncrona do bloco de código .then().catch() utilizado para consultar o Tenant e criar a credencial do n8n remotamente. Assim o Jest conseguiu aguardar a finalização da ação do N8N para fazer a assertividade correta.
Correção de Regressão nos Testes do IntegrationsController:

Atualizei a chamada simulada de saveLlmIntegration nos testes para incluir o 5º argumento, o botAssociationId. Anteriormente, esse parâmetro não estava sendo passado nos testes e acionava o TypeError em undefined.substring().
Adaptei o caso de teste que verifica se integrações concorrentes foram desativadas para refletir a nova lista exata, que passou a incluir o anthropic (além de openai e gemini).
Com estas adequações, a cobertura dos testes no Backend e a suite do Jest agora devem estar sendo concluídas com sucesso. O comportamento no fluxo do painel frontend deve seguir estável conforme planejado!

Ações #10

Atualizado por Rodrigo Admin29 dias

  • % Terminado alterado de 0 para 100
Ações

Exportar para Atom PDF