diff --git a/n8n/deployed/coordenador-glpi-v2.n8n.json b/n8n/deployed/coordenador-glpi-v2.n8n.json index 507e24f..cdaa57c 100644 --- a/n8n/deployed/coordenador-glpi-v2.n8n.json +++ b/n8n/deployed/coordenador-glpi-v2.n8n.json @@ -715,7 +715,8 @@ } ] } - } + }, + "alwaysOutputData": true }, { "id": "code-guard-envio-slack", diff --git a/n8n/workflow.template.json b/n8n/workflow.template.json index 2d74125..6bd4d86 100644 --- a/n8n/workflow.template.json +++ b/n8n/workflow.template.json @@ -715,7 +715,8 @@ } ] } - } + }, + "alwaysOutputData": true }, { "id": "code-guard-envio-slack", diff --git a/tools/build-workflow.test.js b/tools/build-workflow.test.js index 70542b2..1292e74 100644 --- a/tools/build-workflow.test.js +++ b/tools/build-workflow.test.js @@ -157,6 +157,17 @@ test('guard de envio roda antes do Slack e existe IF de decisao', () => { assert.equal(ifConn.main[1][0].node, 'Code - Pular Envio Slack'); }); +test('Data Table - Buscar Envios Recentes tem alwaysOutputData=true (bug real: 0 linhas -- caso normal do dia a dia -- parava o branch de envio inteiro)', () => { + // Regressao: rodou de verdade contra o DEV -- a tabela de envios estava vazia (nenhum envio + // ja aconteceu, o caso NORMAL de todo dia), o node "get" devolveu 0 itens, e o n8n nao + // executa nenhum node downstream quando o node anterior produz 0 itens. Isso significa que + // Code - Guard de Envio Slack, o IF, o Slack real, tudo -- nunca rodava em um dia comum. + // alwaysOutputData:true garante pelo menos 1 item de saida mesmo com 0 linhas encontradas. + const wf = buildWorkflow(); + const node = wf.nodes.find((n) => n.name === 'Data Table - Buscar Envios Recentes'); + assert.equal(node.alwaysOutputData, true, 'sem isso, um dia sem envios anteriores nunca chega a avaliar se deve enviar'); +}); + test('nodes n8n-nodes-base.dataTable usam valores de operation validos (bug real: "getRows" nao existe, e "get")', () => { // Regressao: n8n_manage_datatable (a ferramenta MCP) usa a acao "getRows", mas o node // nativo n8n-nodes-base.dataTable usa o valor de parametro "get" -- nomes parecidos,