From edccfbde36e46b94813c1e8124a7bb9023ca19c9 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Tue, 20 May 2025 10:01:01 +0000 Subject: [PATCH] feat: Create n8n workflow on group registration Implement n8n API call to create an empty workflow when a new WhatsApp group is registered. Save the returned workflow ID to the Supabase record upon successful creation. Display success message to the user. --- src/pages/GruposWhatsApp.tsx | 12 +++++-- src/services/gruposWhatsAppService.ts | 47 +++++++++++++++++++++++---- 2 files changed, 50 insertions(+), 9 deletions(-) diff --git a/src/pages/GruposWhatsApp.tsx b/src/pages/GruposWhatsApp.tsx index 5443395..a43968a 100644 --- a/src/pages/GruposWhatsApp.tsx +++ b/src/pages/GruposWhatsApp.tsx @@ -61,9 +61,17 @@ const GruposWhatsApp = () => { const novoGrupo = await cadastrarGrupoWhatsApp(); if (novoGrupo) { + let successMessage = 'Grupo registrado com sucesso'; + + if (novoGrupo.workflow_id) { + successMessage += '. Workflow criado com sucesso no n8n!'; + } else { + successMessage += '. Siga as instruções para completar o vínculo'; + } + toast({ - title: 'Grupo registrado com sucesso', - description: 'Siga as instruções para completar o vínculo', + title: 'Sucesso', + description: successMessage, variant: 'default', }); diff --git a/src/services/gruposWhatsAppService.ts b/src/services/gruposWhatsAppService.ts index 03c38a2..cb70d37 100644 --- a/src/services/gruposWhatsAppService.ts +++ b/src/services/gruposWhatsAppService.ts @@ -33,18 +33,18 @@ export async function cadastrarGrupoWhatsApp(): Promise { console.log('Grupo WhatsApp cadastrado com sucesso:', data); - // Tentativa de clonagem do workflow do n8n + // Criar workflow no n8n try { - const grupoId = data[0].remote_jid; - const result = await cloneN8nWorkflow(normalizedEmail, grupoId); + const workflowResponse = await createWorkflowInN8n(normalizedEmail); - if (result && result.workflow_id) { - await atualizarWorkflowId(data[0].id, result.workflow_id); + if (workflowResponse && workflowResponse.id) { // Atualizar o objeto data com o workflow_id - data[0].workflow_id = result.workflow_id; + await atualizarWorkflowId(data[0].id, workflowResponse.id); + data[0].workflow_id = workflowResponse.id; + console.log('Workflow criado com sucesso no n8n:', workflowResponse.id); } } catch (n8nError) { - console.error('Erro ao clonar workflow do n8n:', n8nError); + console.error('Erro ao criar workflow no n8n:', n8nError); // Não impede a criação do grupo, apenas não adiciona o workflow_id } @@ -55,6 +55,39 @@ export async function cadastrarGrupoWhatsApp(): Promise { } } +// Função para criar um workflow no n8n +async function createWorkflowInN8n(email: string): Promise<{ id: string } | null> { + try { + console.log(`Criando workflow no n8n para o email: ${email}`); + + const response = await fetch('https://n8n.innova1001.com.br/api/v1/workflows', { + method: 'POST', + headers: { + 'X-N8N-API-KEY': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2YmM4MjQxOS0zZTk1LTRiYmMtODMwMy0xODAzZjk4YmQ4YjciLCJpc3MiOiJuOG4iLCJhdWQiOiJwdWJsaWMtYXBpIiwiaWF0IjoxNzQ3NzM0NzYyLCJleHAiOjE3NTAzMDIwMDB9.Evr_o42xLJPq1c2p5SUWo00IY85WXp8s_nqSy64V-is', + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + name: `Workflow Home Finance - ${email}`, + nodes: [], + connections: {}, + settings: {} + }) + }); + + if (!response.ok) { + throw new Error(`Erro ao criar workflow: ${response.statusText}`); + } + + const data = await response.json(); + console.log('Resposta da criação de workflow:', data); + + return data; + } catch (error) { + console.error('Erro na requisição de criação de workflow:', error); + throw error; + } +} + export async function listarGruposWhatsApp(): Promise { try { // Obter o email do usuário do localStorage