@wondai/n8n-nodes-nucleo 0.6.3 → 0.6.4
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.
- package/README.md +5 -0
- package/dist/nodes/Nucleo/Nucleo.node.js +22 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -66,6 +66,11 @@ alguma linha não traz `produto_id`/`alias` e `quantidade` positiva. É uma prot
|
|
|
66
66
|
o Núcleo continua sendo a autoridade final das regras, mas o workflow não envia pedido vazio por
|
|
67
67
|
erro de tool schema.
|
|
68
68
|
|
|
69
|
+
A partir da v0.6.4, `Pedido Criar` e `Pedido Alterar` aceitam `Cobranças Comerciais (JSON)`.
|
|
70
|
+
Use para adicionais pagos vindos de `Contexto -> commercial_rules`, por exemplo
|
|
71
|
+
`[{"tipo":"paid_addon","nome":"Confetes","valor":35,"origem":"commercial_rules"}]`.
|
|
72
|
+
Essas linhas entram no valor a cobrar, mas nao viram produto de catalogo nem pagamento.
|
|
73
|
+
|
|
69
74
|
**Disponibilidade na Rede** ("tem na outra loja?") é exposta como **tool** do AI Agent, mas com regra
|
|
70
75
|
estrita no prompt: **usar SÓ quando o cliente pedir explicitamente outra unidade**. Passe o `produto_id`
|
|
71
76
|
já resolvido (ou uma `consulta` curta). A loja que pergunta vem do **vínculo do token** (a IA não
|
|
@@ -603,6 +603,14 @@ class Nucleo {
|
|
|
603
603
|
description: "Opcional. Desconto concedido em reais (ex.: 5). Abate do valor a cobrar e do troco. 0/vazio = sem desconto.",
|
|
604
604
|
displayOptions: { show: { resource: ["pedido"], operation: ["criar"] } },
|
|
605
605
|
},
|
|
606
|
+
{
|
|
607
|
+
displayName: "Cobranças Comerciais (JSON)",
|
|
608
|
+
name: "cobrancas",
|
|
609
|
+
type: "json",
|
|
610
|
+
default: "[]",
|
|
611
|
+
description: 'Opcional. Array de cobranças comerciais que entram no valor a cobrar sem virar produto: [{"tipo":"paid_addon","nome":"Confetes","valor":35,"origem":"commercial_rules","operational_config_revision_id":"...","snapshot":{"label":"Confetes - R$35,00"}}]. Use quando vier de Contexto Loja/commercial_rules.',
|
|
612
|
+
displayOptions: { show: { resource: ["pedido"], operation: ["criar"] } },
|
|
613
|
+
},
|
|
606
614
|
{
|
|
607
615
|
displayName: "Loja (unit_id)",
|
|
608
616
|
name: "unitId",
|
|
@@ -754,6 +762,14 @@ class Nucleo {
|
|
|
754
762
|
description: "Redefine o desconto (recalcula o valor a cobrar e o pagamento pendente). Ex.: 5. Vazio = não altera o desconto. Use 0 para zerar.",
|
|
755
763
|
displayOptions: { show: { resource: ["pedido"], operation: ["alterar"] } },
|
|
756
764
|
},
|
|
765
|
+
{
|
|
766
|
+
displayName: "Cobranças Comerciais (JSON)",
|
|
767
|
+
name: "cobrancasNovo",
|
|
768
|
+
type: "json",
|
|
769
|
+
default: "[]",
|
|
770
|
+
description: 'Opcional. Substitui as cobranças comerciais do pedido. Envie [] para limpar. Ex.: [{"tipo":"paid_addon","nome":"Confetes","valor":35,"origem":"commercial_rules"}].',
|
|
771
|
+
displayOptions: { show: { resource: ["pedido"], operation: ["alterar"] } },
|
|
772
|
+
},
|
|
757
773
|
{
|
|
758
774
|
displayName: "Motivo",
|
|
759
775
|
name: "motivo",
|
|
@@ -1294,6 +1310,7 @@ class Nucleo {
|
|
|
1294
1310
|
const trocoPara = Number(this.getNodeParameter("trocoPara", i, 0));
|
|
1295
1311
|
const taxaEntrega = Number(this.getNodeParameter("taxaEntrega", i, 0));
|
|
1296
1312
|
const desconto = Number(this.getNodeParameter("desconto", i, 0));
|
|
1313
|
+
const cobrancas = asArray(this.getNodeParameter("cobrancas", i, "[]"));
|
|
1297
1314
|
const unitId = this.getNodeParameter("unitId", i, "").trim();
|
|
1298
1315
|
idempotencyKey =
|
|
1299
1316
|
this.getNodeParameter("idempotencyKey", i, "").trim() || (0, node_crypto_1.randomUUID)();
|
|
@@ -1320,6 +1337,8 @@ class Nucleo {
|
|
|
1320
1337
|
b.taxa_entrega = taxaEntrega;
|
|
1321
1338
|
if (Number.isFinite(desconto) && desconto > 0)
|
|
1322
1339
|
b.desconto = desconto;
|
|
1340
|
+
if (cobrancas.length)
|
|
1341
|
+
b.cobrancas = cobrancas;
|
|
1323
1342
|
if (unitId)
|
|
1324
1343
|
b.unit_id = unitId;
|
|
1325
1344
|
method = "POST";
|
|
@@ -1342,6 +1361,7 @@ class Nucleo {
|
|
|
1342
1361
|
const trocoParaNovo = Number(this.getNodeParameter("trocoParaNovo", i, 0));
|
|
1343
1362
|
const taxaEntregaNova = this.getNodeParameter("taxaEntregaNova", i, "").trim();
|
|
1344
1363
|
const descontoNovo = this.getNodeParameter("descontoNovo", i, "").trim();
|
|
1364
|
+
const cobrancasNovo = asArray(this.getNodeParameter("cobrancasNovo", i, "[]"));
|
|
1345
1365
|
const b = {};
|
|
1346
1366
|
if (observacoes.trim())
|
|
1347
1367
|
b.observacoes = observacoes.trim();
|
|
@@ -1377,6 +1397,8 @@ class Nucleo {
|
|
|
1377
1397
|
if (descontoNovo !== "" && Number.isFinite(Number(descontoNovo))) {
|
|
1378
1398
|
b.desconto = Number(descontoNovo);
|
|
1379
1399
|
}
|
|
1400
|
+
if (cobrancasNovo.length)
|
|
1401
|
+
b.cobrancas = cobrancasNovo;
|
|
1380
1402
|
// Idempotência (opcional): mesma chave num retry → backend não reaplica a alteração.
|
|
1381
1403
|
idempotencyKey =
|
|
1382
1404
|
this.getNodeParameter("idempotencyKey", i, "").trim() || undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wondai/n8n-nodes-nucleo",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.4",
|
|
4
4
|
"description": "Node n8n para o Núcleo Wondai — atendimento de IA multi-vertical (gate liga/desliga, cliente/paciente, catálogo fuzzy, pedidos [padaria], procedimento/agenda/agendamento [odonto], contexto operacional, telemetria) com assinatura HMAC v1. Tenant e vertical vêm do token (a parede, ADR-013/038).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"n8n-community-node-package",
|