@wondai/n8n-nodes-nucleo 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -214,7 +214,7 @@ class Nucleo {
|
|
|
214
214
|
name: "Alterar",
|
|
215
215
|
value: "alterar",
|
|
216
216
|
action: "Alterar pedido",
|
|
217
|
-
description: "Altera data/observações/itens (adicionar,
|
|
217
|
+
description: "Altera data/observações/itens. Itens por PRODUTO (adicionar soma, ajustar +/-, definir, remover produto) ou por id de item (compat).",
|
|
218
218
|
},
|
|
219
219
|
{
|
|
220
220
|
name: "Cancelar",
|
|
@@ -351,8 +351,8 @@ class Nucleo {
|
|
|
351
351
|
name: "idempotencyKey",
|
|
352
352
|
type: "string",
|
|
353
353
|
default: "",
|
|
354
|
-
description: "Opcional.
|
|
355
|
-
displayOptions: { show: { resource: ["pedido"], operation: ["criar"] } },
|
|
354
|
+
description: "Opcional. Para criar: vazio = gerada automaticamente. Para alterar/cancelar: use a MESMA chave (ex.: messageID do WhatsApp) num retry para não reaplicar a operação.",
|
|
355
|
+
displayOptions: { show: { resource: ["pedido"], operation: ["criar", "alterar", "cancelar"] } },
|
|
356
356
|
},
|
|
357
357
|
// ----------------------------------------------------------------- pedido:alterar / cancelar
|
|
358
358
|
{
|
|
@@ -404,6 +404,30 @@ class Nucleo {
|
|
|
404
404
|
description: 'Muda a quantidade de itens já existentes: [{"item_id":"...","quantidade":4}]. Os IDs vêm do Detalhar. Trocar item = remover + adicionar. Vazio = não altera.',
|
|
405
405
|
displayOptions: { show: { resource: ["pedido"], operation: ["alterar"] } },
|
|
406
406
|
},
|
|
407
|
+
{
|
|
408
|
+
displayName: "Ajustar Itens por Produto (JSON)",
|
|
409
|
+
name: "ajustarItens",
|
|
410
|
+
type: "json",
|
|
411
|
+
default: "[]",
|
|
412
|
+
description: 'Ajuste relativo POR PRODUTO (o cliente não sabe id de item): [{"produto_id":"...","quantidade_delta":7}] soma; -5 subtrai; resultado ≤ 0 remove a linha. produto_id vem do Catálogo Resolver. Vazio = não ajusta.',
|
|
413
|
+
displayOptions: { show: { resource: ["pedido"], operation: ["alterar"] } },
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
displayName: "Definir Itens por Produto (JSON)",
|
|
417
|
+
name: "definirItens",
|
|
418
|
+
type: "json",
|
|
419
|
+
default: "[]",
|
|
420
|
+
description: 'Quantidade absoluta POR PRODUTO: [{"produto_id":"...","quantidade":5}] deixa a linha com 5; 0 remove. produto_id vem do Catálogo Resolver. Vazio = não define.',
|
|
421
|
+
displayOptions: { show: { resource: ["pedido"], operation: ["alterar"] } },
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
displayName: "Remover Produtos (produto_ids)",
|
|
425
|
+
name: "removerProdutoIds",
|
|
426
|
+
type: "string",
|
|
427
|
+
default: "",
|
|
428
|
+
description: "produto_ids a remover do pedido (todas as linhas do produto), separados por vírgula ou JSON array. Use para 'tirar os X' e para a troca. produto_id vem do Catálogo Resolver.",
|
|
429
|
+
displayOptions: { show: { resource: ["pedido"], operation: ["alterar"] } },
|
|
430
|
+
},
|
|
407
431
|
{
|
|
408
432
|
displayName: "Motivo",
|
|
409
433
|
name: "motivo",
|
|
@@ -453,6 +477,14 @@ class Nucleo {
|
|
|
453
477
|
description: "Opcional. UUID de pedido gerado na conversa (validado contra o tenant).",
|
|
454
478
|
displayOptions: { show: { resource: ["conversa"], operation: ["registrar"] } },
|
|
455
479
|
},
|
|
480
|
+
{
|
|
481
|
+
displayName: "Idempotency Key",
|
|
482
|
+
name: "convIdempotencyKey",
|
|
483
|
+
type: "string",
|
|
484
|
+
default: "",
|
|
485
|
+
description: "Opcional. Use a MESMA chave (ex.: messageID do WhatsApp) num retry para não registrar a conversa duas vezes.",
|
|
486
|
+
displayOptions: { show: { resource: ["conversa"], operation: ["registrar"] } },
|
|
487
|
+
},
|
|
456
488
|
],
|
|
457
489
|
};
|
|
458
490
|
}
|
|
@@ -523,6 +555,9 @@ class Nucleo {
|
|
|
523
555
|
const adicionar = asArray(this.getNodeParameter("adicionarItens", i, "[]"));
|
|
524
556
|
const remover = parseIds(this.getNodeParameter("removerItemIds", i, ""));
|
|
525
557
|
const alterar = asArray(this.getNodeParameter("alterarItens", i, "[]"));
|
|
558
|
+
const ajustar = asArray(this.getNodeParameter("ajustarItens", i, "[]"));
|
|
559
|
+
const definir = asArray(this.getNodeParameter("definirItens", i, "[]"));
|
|
560
|
+
const removerProdutos = parseIds(this.getNodeParameter("removerProdutoIds", i, ""));
|
|
526
561
|
const b = {};
|
|
527
562
|
if (observacoes.trim())
|
|
528
563
|
b.observacoes = observacoes.trim();
|
|
@@ -534,6 +569,15 @@ class Nucleo {
|
|
|
534
569
|
b.remover_item_ids = remover;
|
|
535
570
|
if (alterar.length)
|
|
536
571
|
b.alterar_itens = alterar;
|
|
572
|
+
if (ajustar.length)
|
|
573
|
+
b.ajustar_itens = ajustar;
|
|
574
|
+
if (definir.length)
|
|
575
|
+
b.definir_itens = definir;
|
|
576
|
+
if (removerProdutos.length)
|
|
577
|
+
b.remover_produto_ids = removerProdutos;
|
|
578
|
+
// Idempotência (opcional): mesma chave num retry → backend não reaplica a alteração.
|
|
579
|
+
idempotencyKey =
|
|
580
|
+
this.getNodeParameter("idempotencyKey", i, "").trim() || undefined;
|
|
537
581
|
method = "PATCH";
|
|
538
582
|
path = `/api/v1/agent/pedido/${encodeURIComponent(pedidoId)}`;
|
|
539
583
|
bodyObj = b;
|
|
@@ -541,6 +585,8 @@ class Nucleo {
|
|
|
541
585
|
else if (resource === "pedido" && operation === "cancelar") {
|
|
542
586
|
const pedidoId = this.getNodeParameter("pedidoId", i).trim();
|
|
543
587
|
const motivo = this.getNodeParameter("motivo", i, "").trim();
|
|
588
|
+
idempotencyKey =
|
|
589
|
+
this.getNodeParameter("idempotencyKey", i, "").trim() || undefined;
|
|
544
590
|
method = "POST";
|
|
545
591
|
path = `/api/v1/agent/pedido/${encodeURIComponent(pedidoId)}/cancelar`;
|
|
546
592
|
bodyObj = motivo ? { motivo } : {};
|
|
@@ -555,6 +601,8 @@ class Nucleo {
|
|
|
555
601
|
b.telefone = convTelefone;
|
|
556
602
|
if (convPedidoId)
|
|
557
603
|
b.pedido_id = convPedidoId;
|
|
604
|
+
idempotencyKey =
|
|
605
|
+
this.getNodeParameter("convIdempotencyKey", i, "").trim() || undefined;
|
|
558
606
|
method = "POST";
|
|
559
607
|
path = "/api/v1/agent/conversa/fechar";
|
|
560
608
|
bodyObj = b;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wondai/n8n-nodes-nucleo",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"description": "Node n8n para o Núcleo Wondai — atendimento de IA (cliente, catálogo fuzzy, pedidos) com assinatura HMAC v1. Tenant vem do token (a parede, ADR-013).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"n8n-community-node-package",
|