data-primals-engine 1.6.1 → 1.6.2
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 +73 -42
- package/client/package-lock.json +524 -5
- package/client/package.json +2 -1
- package/client/src/App.scss +14 -1
- package/client/src/Dashboard.jsx +4 -0
- package/client/src/DataLayout.jsx +85 -20
- package/client/src/DataLayout.scss +32 -6
- package/client/src/DataTable.jsx +18 -11
- package/client/src/ModelCreator.jsx +686 -683
- package/client/src/ModelImporter.jsx +1 -1
- package/client/src/ViewSwitcher.jsx +1 -1
- package/client/src/WorkflowEditor.jsx +317 -0
- package/client/src/WorkflowEditor.scss +16 -0
- package/package.json +22 -19
- package/src/client.js +4 -0
- package/src/defaultModels.js +5 -2
- package/src/i18n.js +35 -3
- package/src/modules/assistant/assistant.js +38 -56
- package/src/modules/assistant/providers.js +38 -0
- package/src/modules/data/data.history.js +2 -5
- package/src/modules/data/data.operations.js +3496 -3484
- package/src/modules/workflow.js +3 -6
- package/src/packs.js +239 -24
- package/test/assistant.test.js +207 -0
- package/test/config.test.js +41 -0
- package/test/data.history.integration.test.js +4 -4
package/src/modules/workflow.js
CHANGED
|
@@ -17,8 +17,8 @@ import {isConditionMet} from "../filter.js";
|
|
|
17
17
|
import { services } from '../services/index.js';
|
|
18
18
|
import {getEnv, getSmtpConfig} from "./user.js";
|
|
19
19
|
import {getHost} from "../constants.js";
|
|
20
|
-
import {providers} from "./assistant/constants.js";
|
|
21
|
-
import {getAIProvider} from "./assistant/
|
|
20
|
+
import { providers } from "./assistant/constants.js";
|
|
21
|
+
import { getAIProvider } from "./assistant/providers.js";
|
|
22
22
|
import {parseSafeJSON, safeAssignObject} from "../core.js";
|
|
23
23
|
import {Config} from "../config.js";
|
|
24
24
|
|
|
@@ -1380,10 +1380,7 @@ export async function triggerWorkflows(triggerData, user, eventType) {
|
|
|
1380
1380
|
}
|
|
1381
1381
|
}
|
|
1382
1382
|
|
|
1383
|
-
return
|
|
1384
|
-
await trigger(triggerData, user, eventType);
|
|
1385
|
-
resolve();
|
|
1386
|
-
}, 0));
|
|
1383
|
+
return trigger(triggerData, user, eventType);
|
|
1387
1384
|
}
|
|
1388
1385
|
/**
|
|
1389
1386
|
* Processes a workflowRun instance step-by-step.
|
package/src/packs.js
CHANGED
|
@@ -132,6 +132,7 @@ The core of this pack is a smart workflow that avoids overloading your server. I
|
|
|
132
132
|
"workflowAction": [
|
|
133
133
|
{
|
|
134
134
|
"name": "Set Campaign to 'in_progress'",
|
|
135
|
+
"workflow": { "$link": { "name": "Campaign Emailing Workflow", "_model": "workflow" } },
|
|
135
136
|
"type": "UpdateData",
|
|
136
137
|
"targetModel": "campaign",
|
|
137
138
|
"targetSelector": { "_id": "{triggerData._id}" },
|
|
@@ -139,6 +140,7 @@ The core of this pack is a smart workflow that avoids overloading your server. I
|
|
|
139
140
|
},
|
|
140
141
|
{
|
|
141
142
|
"name": "Get Next Recipient Chunk",
|
|
143
|
+
"workflow": { "$link": { "name": "Campaign Emailing Workflow", "_model": "workflow" } },
|
|
142
144
|
"type": "ExecuteScript",
|
|
143
145
|
"script": `
|
|
144
146
|
const chunkSize = 10; // Process 10 recipients per run
|
|
@@ -174,7 +176,8 @@ return { chunk }; // This chunk is passed to the next action via context.result
|
|
|
174
176
|
"type": "SendEmail",
|
|
175
177
|
"emailRecipients": ["{context.result.chunk}"],
|
|
176
178
|
"emailSubject": "{triggerData.subject}",
|
|
177
|
-
"emailContent": "{triggerData.content}"
|
|
179
|
+
"emailContent": "{triggerData.content}",
|
|
180
|
+
"workflow": { "$link": { "name": "Campaign Emailing Workflow", "_model": "workflow" } }
|
|
178
181
|
},
|
|
179
182
|
{
|
|
180
183
|
"name": "Update Processed Recipients",
|
|
@@ -201,14 +204,16 @@ await db.update(
|
|
|
201
204
|
|
|
202
205
|
// Return the original chunk for the condition check step
|
|
203
206
|
return { processedChunk: context.result.chunk };
|
|
204
|
-
|
|
207
|
+
`,
|
|
208
|
+
"workflow": { "$link": { "name": "Campaign Emailing Workflow", "_model": "workflow" } }
|
|
205
209
|
},
|
|
206
210
|
{
|
|
207
211
|
"name": "Set Campaign to 'finished'",
|
|
208
212
|
"type": "UpdateData",
|
|
209
213
|
"targetModel": "campaign",
|
|
210
214
|
"targetSelector": { "_id": "{triggerData._id}" },
|
|
211
|
-
"fieldsToUpdate": { "status": "finished" }
|
|
215
|
+
"fieldsToUpdate": { "status": "finished" },
|
|
216
|
+
"workflow": { "$link": { "name": "Campaign Emailing Workflow", "_model": "workflow" } }
|
|
212
217
|
}
|
|
213
218
|
],
|
|
214
219
|
"workflowStep": [
|
|
@@ -348,8 +353,8 @@ This pack sets up an automated ecosystem for your store:
|
|
|
348
353
|
"env":envSmtp,
|
|
349
354
|
"taxonomy": [
|
|
350
355
|
{ "name": "E-commerce", "type": "category" },
|
|
351
|
-
{ "name": "Clothes", "type": "category", "parent": { "$link": { "name": "E-commerce" } } },
|
|
352
|
-
{ "name": "Electronics", "type": "category", "parent": { "$link": { "name": "E-commerce" } } }
|
|
356
|
+
{ "name": "Clothes", "type": "category", "parent": { "$link": { "name": "E-commerce", "_model": "taxonomy"} } },
|
|
357
|
+
{ "name": "Electronics", "type": "category", "parent": { "$link": { "name": "E-commerce", "_model": "taxonomy"} } }
|
|
353
358
|
],
|
|
354
359
|
"brand": [
|
|
355
360
|
{ "name": "Brand A" },
|
|
@@ -531,13 +536,14 @@ This pack sets up an automated ecosystem for your store:
|
|
|
531
536
|
"startStep": { "$link": { "name": "Send Shipment Email Step", "_model": "workflowStep" } }
|
|
532
537
|
}],
|
|
533
538
|
"workflowAction": [
|
|
534
|
-
{ "name": "Update order status to 'processing'", "type": "UpdateData", "targetModel": "order", "targetSelector": { "_id": { $toObjectId: "{triggerData._id}" }}, "fieldsToUpdate": { "status": "processing" } },
|
|
535
|
-
{ "name": "Create Shipment Record", "type": "CreateData",
|
|
539
|
+
{ "name": "Update order status to 'processing'", "workflow": { "$link": { "name": "Order Fulfillment", "_model": "workflow" } }, "type": "UpdateData", "targetModel": "order", "targetSelector": { "_id": { $toObjectId: "{triggerData._id}" }}, "fieldsToUpdate": { "status": "processing" } },
|
|
540
|
+
{ "name": "Create Shipment Record", "workflow": { "$link": { "name": "Order Fulfillment", "_model": "workflow" } }, "type": "CreateData",
|
|
536
541
|
"targetModel": "shipment",
|
|
537
542
|
"dataToCreate": { "order": "{triggerData._id}", "status": "preparing" } },
|
|
538
|
-
{ "name": "Update order status to 'shipped'", "type": "UpdateData", "targetModel": "order", "targetSelector": { "_id": { $toObjectId: "{triggerData._id}" }}, "fieldsToUpdate": { "status": "shipped" } },
|
|
543
|
+
{ "name": "Update order status to 'shipped'", "workflow": { "$link": { "name": "Order Fulfillment", "_model": "workflow" } }, "type": "UpdateData", "targetModel": "order", "targetSelector": { "_id": { $toObjectId: "{triggerData._id}" }}, "fieldsToUpdate": { "status": "shipped" } },
|
|
539
544
|
{
|
|
540
545
|
name: 'Delete queries older than 30 days',
|
|
546
|
+
"workflow": { "$link": { "name": "Data purging", "_model": "workflow" } },
|
|
541
547
|
type: 'DeleteData',
|
|
542
548
|
targetModel: 'request',
|
|
543
549
|
targetSelector: {
|
|
@@ -546,6 +552,7 @@ This pack sets up an automated ecosystem for your store:
|
|
|
546
552
|
},
|
|
547
553
|
{
|
|
548
554
|
"name": "Send Shipping Notification Email",
|
|
555
|
+
"workflow": { "$link": { "name": "Shipment Notification", "_model": "workflow" } },
|
|
549
556
|
"type": "SendEmail",
|
|
550
557
|
// C'est ici que la magie opère !
|
|
551
558
|
"emailRecipients": ["{triggerData.order.customer.contact.email}"],
|
|
@@ -636,7 +643,170 @@ This pack sets up an automated ecosystem for your store:
|
|
|
636
643
|
{ "lang": { "$link": { "code": "fr", "_model": "lang" } }, "key": "Data purging", "value": "Purge des données" },
|
|
637
644
|
{ "lang": { "$link": { "code": "fr", "_model": "lang" } }, "key": "Daily data purge", "value": "Purge des données quotidienne" },
|
|
638
645
|
{ "lang": { "$link": { "code": "fr", "_model": "lang" } }, "key": "Purge execution", "value": "Exécution de la purge des données" }
|
|
639
|
-
|
|
646
|
+
,
|
|
647
|
+
{ "lang": { "$link": { "code": "fr", "_model": "lang" } }, "key": "model_product", "value": "Produits" },
|
|
648
|
+
{ "lang": { "$link": { "code": "fr", "_model": "lang" } }, "key": "model_productVariant", "value": "Variantes de produit" },
|
|
649
|
+
{ "lang": { "$link": { "code": "fr", "_model": "lang" } }, "key": "model_brand", "value": "Marques" },
|
|
650
|
+
{ "lang": { "$link": { "code": "fr", "_model": "lang" } }, "key": "model_order", "value": "Commandes" },
|
|
651
|
+
{ "lang": { "$link": { "code": "fr", "_model": "lang" } }, "key": "model_shipment", "value": "Expéditions" },
|
|
652
|
+
{ "lang": { "$link": { "code": "fr", "_model": "lang" } }, "key": "model_review", "value": "Avis" },
|
|
653
|
+
{ "lang": { "$link": { "code": "fr", "_model": "lang" } }, "key": "model_cart", "value": "Paniers" },
|
|
654
|
+
{ "lang": { "$link": { "code": "fr", "_model": "lang" } }, "key": "model_cartItem", "value": "Articles de panier" },
|
|
655
|
+
{ "lang": { "$link": { "code": "fr", "_model": "lang" } }, "key": "model_discount", "value": "Réductions" },
|
|
656
|
+
{ "lang": { "$link": { "code": "fr", "_model": "lang" } }, "key": "model_return", "value": "Retours" }
|
|
657
|
+
],
|
|
658
|
+
},
|
|
659
|
+
"en": {
|
|
660
|
+
"lang": [{"name": "English", "code": "en"}],
|
|
661
|
+
"translation": [
|
|
662
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "Send Shipping Confirmation", "value": "Send Shipping Confirmation" },
|
|
663
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "ORGANIC_COTTON_TSHIRT_TITLE", "value": "Organic Cotton T-Shirt - Comfort and Style" },
|
|
664
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "ORGANIC_COTTON_TSHIRT_DESC", "value": "Discover our 100% organic cotton unisex t-shirt. Ideal for a casual and sustainable style." },
|
|
665
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "Order Fulfillment", "value": "Order Fulfillment" },
|
|
666
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "New order created", "value": "New order created" },
|
|
667
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "Validate Order", "value": "Validate Order" },
|
|
668
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "Prepare Shipment", "value": "Prepare Shipment" },
|
|
669
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "Ship Order", "value": "Ship Order" },
|
|
670
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "Update order status to 'processing'", "value": "Update order status to 'processing'" },
|
|
671
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "Create Shipment Record", "value": "Create Shipment Record" },
|
|
672
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "Update order status to 'shipped'", "value": "Update order status to 'shipped'" },
|
|
673
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "Total Revenue", "value": "Total Revenue" },
|
|
674
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "Total Orders", "value": "Total Orders" },
|
|
675
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "Average Order Value", "value": "Average Order Value" },
|
|
676
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "Low Stock Warning", "value": "Low Stock Warning" },
|
|
677
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "New Negative Review", "value": "New Negative Review" },
|
|
678
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "High-Value Order Alert", "value": "High-Value Order Alert" },
|
|
679
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "New Return Request", "value": "New Return Request" },
|
|
680
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "Delete queries older than 30 days", "value": "Delete queries older than 30 days" },
|
|
681
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "Data purging", "value": "Data purging" },
|
|
682
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "Daily data purge", "value": "Daily data purge" },
|
|
683
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "Purge execution", "value": "Purge execution" }
|
|
684
|
+
,
|
|
685
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_product", "value": "Products" },
|
|
686
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_productVariant", "value": "Product Variants" },
|
|
687
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_brand", "value": "Brands" },
|
|
688
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_order", "value": "Orders" },
|
|
689
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_shipment", "value": "Shipments" },
|
|
690
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_review", "value": "Reviews" },
|
|
691
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_cart", "value": "Carts" },
|
|
692
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_cartItem", "value": "Cart Items" },
|
|
693
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_discount", "value": "Discounts" },
|
|
694
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_return", "value": "Returns" }
|
|
695
|
+
]
|
|
696
|
+
},
|
|
697
|
+
"es": {
|
|
698
|
+
"lang": [{"name": "Español", "code": "es"}],
|
|
699
|
+
"translation": [
|
|
700
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "Send Shipping Confirmation", "value": "Enviar confirmación de envío" },
|
|
701
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "ORGANIC_COTTON_TSHIRT_TITLE", "value": "Camiseta de Algodón Orgánico - Comodidad y Estilo" },
|
|
702
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "ORGANIC_COTTON_TSHIRT_DESC", "value": "Descubre nuestra camiseta unisex 100% algodón orgánico. Ideal para un estilo casual y sostenible." },
|
|
703
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "Order Fulfillment", "value": "Procesamiento de Pedidos" },
|
|
704
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "New order created", "value": "Nuevo pedido creado" },
|
|
705
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "Validate Order", "value": "Validar Pedido" },
|
|
706
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "Prepare Shipment", "value": "Preparar Envío" },
|
|
707
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "Ship Order", "value": "Enviar Pedido" },
|
|
708
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "Update order status to 'processing'", "value": "Actualizar estado del pedido a 'en proceso'" },
|
|
709
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "Create Shipment Record", "value": "Crear registro de envío" },
|
|
710
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "Update order status to 'shipped'", "value": "Actualizar estado del pedido a 'enviado'" },
|
|
711
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "Total Revenue", "value": "Ingresos Totales" },
|
|
712
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "Total Orders", "value": "Pedidos Totales" },
|
|
713
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "Average Order Value", "value": "Valor Promedio del Pedido" },
|
|
714
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "Low Stock Warning", "value": "Alerta de Stock Bajo" },
|
|
715
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "New Negative Review", "value": "Nueva Reseña Negativa" },
|
|
716
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "High-Value Order Alert", "value": "Alerta de Pedido de Alto Valor" },
|
|
717
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "New Return Request", "value": "Nueva Solicitud de Devolución" },
|
|
718
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "Delete queries older than 30 days", "value": "Eliminar consultas de más de 30 días" },
|
|
719
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "Data purging", "value": "Purga de datos" },
|
|
720
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "Daily data purge", "value": "Purga de datos diaria" },
|
|
721
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "Purge execution", "value": "Ejecución de purga" }
|
|
722
|
+
,
|
|
723
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "model_product", "value": "Productos" },
|
|
724
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "model_productVariant", "value": "Variantes de producto" },
|
|
725
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "model_brand", "value": "Marcas" },
|
|
726
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "model_order", "value": "Pedidos" },
|
|
727
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "model_shipment", "value": "Envíos" },
|
|
728
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "model_review", "value": "Reseñas" },
|
|
729
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "model_cart", "value": "Carritos" },
|
|
730
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "model_cartItem", "value": "Artículos del carrito" },
|
|
731
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "model_discount", "value": "Descuentos" },
|
|
732
|
+
{ "lang": { "$link": { "code": "es", "_model": "lang" } }, "key": "model_return", "value": "Devoluciones" }
|
|
733
|
+
]
|
|
734
|
+
},
|
|
735
|
+
"de": {
|
|
736
|
+
"lang": [{"name": "Deutsch", "code": "de"}],
|
|
737
|
+
"translation": [
|
|
738
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "Send Shipping Confirmation", "value": "Versandbestätigung senden" },
|
|
739
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "ORGANIC_COTTON_TSHIRT_TITLE", "value": "Bio-Baumwoll-T-Shirt - Komfort und Stil" },
|
|
740
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "ORGANIC_COTTON_TSHIRT_DESC", "value": "Entdecken Sie unser Unisex-T-Shirt aus 100 % Bio-Baumwolle. Ideal für einen lässigen und nachhaltigen Stil." },
|
|
741
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "Order Fulfillment", "value": "Bestellabwicklung" },
|
|
742
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "New order created", "value": "Neue Bestellung erstellt" },
|
|
743
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "Validate Order", "value": "Bestellung validieren" },
|
|
744
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "Prepare Shipment", "value": "Versand vorbereiten" },
|
|
745
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "Ship Order", "value": "Bestellung versenden" },
|
|
746
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "Update order status to 'processing'", "value": "Bestellstatus auf 'in Bearbeitung' aktualisieren" },
|
|
747
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "Create Shipment Record", "value": "Versanddatensatz erstellen" },
|
|
748
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "Update order status to 'shipped'", "value": "Bestellstatus auf 'versandt' aktualisieren" },
|
|
749
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "Total Revenue", "value": "Gesamtumsatz" },
|
|
750
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "Total Orders", "value": "Anzahl der Bestellungen" },
|
|
751
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "Average Order Value", "value": "Durchschnittlicher Bestellwert" },
|
|
752
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "Low Stock Warning", "value": "Warnung bei niedrigem Lagerbestand" },
|
|
753
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "New Negative Review", "value": "Neue negative Bewertung" },
|
|
754
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "High-Value Order Alert", "value": "Warnung bei hochwertiger Bestellung" },
|
|
755
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "New Return Request", "value": "Neue Rücksendeanfrage" },
|
|
756
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "Delete queries older than 30 days", "value": "Anfragen löschen, die älter als 30 Tage sind" },
|
|
757
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "Data purging", "value": "Datenbereinigung" },
|
|
758
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "Daily data purge", "value": "Tägliche Datenbereinigung" },
|
|
759
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "Purge execution", "value": "Bereinigung durchführen" }
|
|
760
|
+
,
|
|
761
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "model_product", "value": "Produkte" },
|
|
762
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "model_productVariant", "value": "Produktvarianten" },
|
|
763
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "model_brand", "value": "Marken" },
|
|
764
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "model_order", "value": "Bestellungen" },
|
|
765
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "model_shipment", "value": "Sendungen" },
|
|
766
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "model_review", "value": "Bewertungen" },
|
|
767
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "model_cart", "value": "Warenkörbe" },
|
|
768
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "model_cartItem", "value": "Warenkorbartikel" },
|
|
769
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "model_discount", "value": "Rabatte" },
|
|
770
|
+
{ "lang": { "$link": { "code": "de", "_model": "lang" } }, "key": "model_return", "value": "Rücksendungen" }
|
|
771
|
+
]
|
|
772
|
+
},
|
|
773
|
+
"it": {
|
|
774
|
+
"lang": [{"name": "Italiano", "code": "it"}],
|
|
775
|
+
"translation": [
|
|
776
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "Send Shipping Confirmation", "value": "Invia conferma di spedizione" },
|
|
777
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "ORGANIC_COTTON_TSHIRT_TITLE", "value": "T-shirt in Cotone Biologico - Comfort e Stile" },
|
|
778
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "ORGANIC_COTTON_TSHIRT_DESC", "value": "Scopri la nostra t-shirt unisex in 100% cotone biologico. Ideale per uno stile casual e sostenibile." },
|
|
779
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "Order Fulfillment", "value": "Evasione Ordine" },
|
|
780
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "New order created", "value": "Nuovo ordine creato" },
|
|
781
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "Validate Order", "value": "Convalida Ordine" },
|
|
782
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "Prepare Shipment", "value": "Prepara Spedizione" },
|
|
783
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "Ship Order", "value": "Spedisci Ordine" },
|
|
784
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "Update order status to 'processing'", "value": "Aggiorna stato ordine a 'in elaborazione'" },
|
|
785
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "Create Shipment Record", "value": "Crea record di spedizione" },
|
|
786
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "Update order status to 'shipped'", "value": "Aggiorna stato ordine a 'spedito'" },
|
|
787
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "Total Revenue", "value": "Entrate Totali" },
|
|
788
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "Total Orders", "value": "Ordini Totali" },
|
|
789
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "Average Order Value", "value": "Valore Medio Ordine" },
|
|
790
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "Low Stock Warning", "value": "Avviso Scorte Basse" },
|
|
791
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "New Negative Review", "value": "Nuova Recensione Negativa" },
|
|
792
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "High-Value Order Alert", "value": "Avviso Ordine di Alto Valore" },
|
|
793
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "New Return Request", "value": "Nuova Richiesta di Reso" },
|
|
794
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "Delete queries older than 30 days", "value": "Elimina query più vecchie di 30 giorni" },
|
|
795
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "Data purging", "value": "Pulizia dati" },
|
|
796
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "Daily data purge", "value": "Pulizia dati giornaliera" },
|
|
797
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "Purge execution", "value": "Esecuzione pulizia" }
|
|
798
|
+
,
|
|
799
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "model_product", "value": "Prodotti" },
|
|
800
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "model_productVariant", "value": "Varianti di prodotto" },
|
|
801
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "model_brand", "value": "Marche" },
|
|
802
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "model_order", "value": "Ordini" },
|
|
803
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "model_shipment", "value": "Spedizioni" },
|
|
804
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "model_review", "value": "Recensioni" },
|
|
805
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "model_cart", "value": "Carrelli" },
|
|
806
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "model_cartItem", "value": "Articoli del carrello" },
|
|
807
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "model_discount", "value": "Sconti" },
|
|
808
|
+
{ "lang": { "$link": { "code": "it", "_model": "lang" } }, "key": "model_return", "value": "Resi" }
|
|
809
|
+
]
|
|
640
810
|
}
|
|
641
811
|
}
|
|
642
812
|
},
|
|
@@ -683,8 +853,9 @@ This pack doesn't provide a full-fledged website out of the box. Instead, it lay
|
|
|
683
853
|
name: c,
|
|
684
854
|
type: 'category',
|
|
685
855
|
parent: {
|
|
686
|
-
"$
|
|
687
|
-
"name": "Website"
|
|
856
|
+
"$link": {
|
|
857
|
+
"name": "Website",
|
|
858
|
+
"_model": "taxonomy"
|
|
688
859
|
}
|
|
689
860
|
}
|
|
690
861
|
})), ...tags.map(t =>({
|
|
@@ -717,9 +888,23 @@ This pack doesn't provide a full-fledged website out of the box. Instead, it lay
|
|
|
717
888
|
"lang": [{
|
|
718
889
|
"name": "Français",
|
|
719
890
|
"code": "fr"
|
|
720
|
-
}]
|
|
891
|
+
}]
|
|
892
|
+
},
|
|
893
|
+
"en": {
|
|
894
|
+
"lang": [{"name": "English", "code": "en"}],
|
|
721
895
|
"translation": [
|
|
722
|
-
{ "lang": { "$link": { "$eq": ["$code", "fr"]}, "_model": "lang"}, "key": "Visitor alerts", "value": "Alertes visiteurs" }
|
|
896
|
+
{ "lang": { "$link": { "$eq": ["$code", "fr"]}, "_model": "lang"}, "key": "Visitor alerts", "value": "Alertes visiteurs" },
|
|
897
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_content", "value": "Content" },
|
|
898
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_webpage", "value": "Web Pages" },
|
|
899
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_message", "value": "Messages" },
|
|
900
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_channel", "value": "Channels" },
|
|
901
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_taxonomy", "value": "Taxonomy" },
|
|
902
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_lang", "value": "Languages" },
|
|
903
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_user", "value": "Users" },
|
|
904
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_role", "value": "Roles" },
|
|
905
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_permission", "value": "Permissions" },
|
|
906
|
+
{ "lang": { "$link": { "code": "en", "_model": "lang" } }, "key": "model_kpi", "value": "KPIs" }
|
|
907
|
+
|
|
723
908
|
]
|
|
724
909
|
}
|
|
725
910
|
}
|
|
@@ -834,8 +1019,8 @@ The CRM pack connects your contacts, deals, and interactions in one place. By lo
|
|
|
834
1019
|
{ "name": "Pipeline des ventes", "chartConfigs": [ { "title": "Opportunités par étape", "model": "deal", "type": "bar", "xAxis": "status", "yAxis": { "field": "_id", "aggregation": "count" } } ] }
|
|
835
1020
|
]
|
|
836
1021
|
}],
|
|
837
|
-
"workflow": [{ "name": "Suivi post-rendez-vous", "startStep": { "$link": { "name": "Création de la tâche", "_model": "workflowStep" } }}],
|
|
838
|
-
"workflowAction": [{ "name": "Créer une tâche de suivi", "type": "CreateData", "targetModel": "task", "dataToCreate": { "title": "Faire le suivi du rendez-vous: {triggerData.subject}", "dueDate": "{$add: [\"$$NOW\", 2 * 24 * 60 * 60 * 1000]}", "status": "À faire", "relatedDeal": "{triggerData.deal}" } }],
|
|
1022
|
+
"workflow": [{ "name": "Suivi post-rendez-vous", "startStep": { "$link": { "name": "Création de la tâche", "_model": "workflowStep" } } }],
|
|
1023
|
+
"workflowAction": [{ "name": "Créer une tâche de suivi", "workflow": { "$link": { "name": "Suivi post-rendez-vous", "_model": "workflow" } }, "type": "CreateData", "targetModel": "task", "dataToCreate": { "title": "Faire le suivi du rendez-vous: {triggerData.subject}", "dueDate": "{$add: [\"$$NOW\", 2 * 24 * 60 * 60 * 1000]}", "status": "À faire", "relatedDeal": "{triggerData.deal}" } }],
|
|
839
1024
|
"workflowStep": [{ "name": "Création de la tâche", "workflow": { "$link": { "name": "Suivi post-rendez-vous", "_model": "workflow" } }, "actions": { "$link": { "name": "Créer une tâche de suivi", "_model":"workflowAction" } }, "isTerminal": true }],
|
|
840
1025
|
"workflowTrigger": [{ "name": "Après un rendez-vous client", "type": "manual", "workflow": { "$link": { "name": "Suivi post-rendez-vous", "_model": "workflow" } }, "onEvent": "DataAdded", "targetModel": "interaction", "dataFilter": { "$eq": ["$type", "Rendez-vous"] }, "isActive": true }]
|
|
841
1026
|
},
|
|
@@ -1390,7 +1575,15 @@ The CRM pack connects your contacts, deals, and interactions in one place. By lo
|
|
|
1390
1575
|
{ "lang": { "$link": { "code": "fa", "_model": "lang" } }, "key": "model_deal", "value": "فرصتها" },
|
|
1391
1576
|
{ "lang": { "$link": { "code": "fa", "_model": "lang" } }, "key": "model_description_deal", "value": "نمایانگر یک فرصت تجاری با یک مخاطب یا شرکت است." },
|
|
1392
1577
|
{ "lang": { "$link": { "code": "fa", "_model": "lang" } }, "key": "model_interaction", "value": "تعاملات" },
|
|
1393
|
-
{ "lang": { "$link": { "code": "fa", "_model": "lang" } }, "key": "model_description_interaction", "value": "نمایانگر یک تعامل (تماس، ایمیل، جلسه) با یک مخاطب یا شرکت است." }
|
|
1578
|
+
{ "lang": { "$link": { "code": "fa", "_model": "lang" } }, "key": "model_description_interaction", "value": "نمایانگر یک تعامل (تماس، ایمیل، جلسه) با یک مخاطب یا شرکت است." },
|
|
1579
|
+
{ "lang": { "$link": { "code": "fa", "_model": "lang" } }, "key": "model_StripeCustomer", "value": "مشتریان استرایپ" },
|
|
1580
|
+
{ "lang": { "$link": { "code": "fa", "_model": "lang" } }, "key": "model_StripeSubscription", "value": "اشتراکهای استرایپ" },
|
|
1581
|
+
{ "lang": { "$link": { "code": "fa", "_model": "lang" } }, "key": "model_StripePlan", "value": "طرحهای استرایپ" },
|
|
1582
|
+
{ "lang": { "$link": { "code": "fa", "_model": "lang" } }, "key": "model_StripePayment", "value": "پرداختهای استرایپ" },
|
|
1583
|
+
{ "lang": { "$link": { "code": "fa", "_model": "lang" } }, "key": "model_StripeInvoice", "value": "فاکتورهای استرایپ" },
|
|
1584
|
+
{ "lang": { "$link": { "code": "fa", "_model": "lang" } }, "key": "model_StripeRefund", "value": "بازپرداختهای استرایپ" },
|
|
1585
|
+
{ "lang": { "$link": { "code": "fa", "_model": "lang" } }, "key": "model_StripePrice", "value": "قیمتهای استرایپ" }
|
|
1586
|
+
|
|
1394
1587
|
]
|
|
1395
1588
|
}
|
|
1396
1589
|
}
|
|
@@ -1428,6 +1621,7 @@ The magic happens automatically in the background:
|
|
|
1428
1621
|
"workflowAction": [
|
|
1429
1622
|
{
|
|
1430
1623
|
"name": "Generate SEO Description from Product (OpenAI API)",
|
|
1624
|
+
"workflow": { "$link": { "name": "Generate product description", "_model": "workflow" } },
|
|
1431
1625
|
"type": "GenerateAIContent",
|
|
1432
1626
|
"aiProvider": "OpenAI",
|
|
1433
1627
|
"aiModel": "gpt-4o-mini",
|
|
@@ -1435,6 +1629,7 @@ The magic happens automatically in the background:
|
|
|
1435
1629
|
},
|
|
1436
1630
|
{
|
|
1437
1631
|
"name": "Generate SEO Description from Product (Google API)",
|
|
1632
|
+
"workflow": { "$link": { "name": "Generate product description", "_model": "workflow" }},
|
|
1438
1633
|
"type": "GenerateAIContent",
|
|
1439
1634
|
"aiProvider": "Google",
|
|
1440
1635
|
"aiModel": "gemini-2.0-flash",
|
|
@@ -1442,6 +1637,7 @@ The magic happens automatically in the background:
|
|
|
1442
1637
|
},
|
|
1443
1638
|
{
|
|
1444
1639
|
"name": "Update Product with AI Description",
|
|
1640
|
+
"workflow": { "$link": { "name": "Generate product description", "_model": "workflow" } },
|
|
1445
1641
|
"type": "UpdateData",
|
|
1446
1642
|
"targetModel": "product",
|
|
1447
1643
|
"targetSelector": {"$eq": ["$name", "{triggerData.name}"]},
|
|
@@ -1474,7 +1670,15 @@ The magic happens automatically in the background:
|
|
|
1474
1670
|
}],
|
|
1475
1671
|
"env": Object.values(providers).map(m => ({
|
|
1476
1672
|
name: m.key,
|
|
1477
|
-
value: "demo"
|
|
1673
|
+
value: "demo",
|
|
1674
|
+
"data": {
|
|
1675
|
+
"fr": {
|
|
1676
|
+
"translation": [
|
|
1677
|
+
{ "lang": { "$link": { "code": "fr", "_model": "lang" } }, "key": "model_workflow", "value": "Workflows" },
|
|
1678
|
+
{ "lang": { "$link": { "code": "fr", "_model": "lang" } }, "key": "model_workflowAction", "value": "Actions de workflow" }
|
|
1679
|
+
]
|
|
1680
|
+
}
|
|
1681
|
+
}
|
|
1478
1682
|
}))
|
|
1479
1683
|
}
|
|
1480
1684
|
}
|
|
@@ -4487,7 +4691,8 @@ return { status: 200, body: { message: "Workflow started", runId: result.runId }
|
|
|
4487
4691
|
Update Payment Method
|
|
4488
4692
|
</a>
|
|
4489
4693
|
<p>If you believe this is an error, please contact our support team.</p>
|
|
4490
|
-
|
|
4694
|
+
`,
|
|
4695
|
+
"workflow": { "$link": { "name": "Subscription Lifecycle Management", "_model": "workflow" } }
|
|
4491
4696
|
},
|
|
4492
4697
|
{
|
|
4493
4698
|
"name": "Send Subscription Welcome",
|
|
@@ -4504,7 +4709,8 @@ return { status: 200, body: { message: "Workflow started", runId: result.runId }
|
|
|
4504
4709
|
<li>Next billing date: {context.subscription.currentPeriodEnd}</li>
|
|
4505
4710
|
</ul>
|
|
4506
4711
|
<p>If you have any questions, please don't hesitate to contact our support team.</p>
|
|
4507
|
-
|
|
4712
|
+
`,
|
|
4713
|
+
"workflow": { "$link": { "name": "Subscription Lifecycle Management", "_model": "workflow" } }
|
|
4508
4714
|
},
|
|
4509
4715
|
{
|
|
4510
4716
|
"name": "Process Invoice Payment",
|
|
@@ -4561,11 +4767,14 @@ if (invoice.status === 'paid') {
|
|
|
4561
4767
|
}
|
|
4562
4768
|
|
|
4563
4769
|
return { success: true };
|
|
4564
|
-
|
|
4770
|
+
`,
|
|
4771
|
+
"workflow": { "$link": { "name": "Payment Reconciliation", "_model": "workflow" } }
|
|
4772
|
+
|
|
4565
4773
|
},
|
|
4566
4774
|
{
|
|
4567
4775
|
"name": "Send Invoice Email",
|
|
4568
4776
|
"description": "Envoie la facture par email au client.",
|
|
4777
|
+
"workflow": { "$link": { "name": "Payment Reconciliation", "_model": "workflow" } },
|
|
4569
4778
|
"type": "SendEmail",
|
|
4570
4779
|
"emailRecipients": ["{triggerData.customer_email}"],
|
|
4571
4780
|
"emailSubject": "Your invoice is ready",
|
|
@@ -4580,6 +4789,7 @@ return { success: true };
|
|
|
4580
4789
|
{
|
|
4581
4790
|
"name": "Stripe: Create Customer",
|
|
4582
4791
|
"description": "Creates a new customer in Stripe. Expects 'email' and 'name' in the triggerData.",
|
|
4792
|
+
"workflow": { "$link": { "name": "Subscription Lifecycle Management", "_model": "workflow" } },
|
|
4583
4793
|
"type": "HttpRequest",
|
|
4584
4794
|
"method": "POST",
|
|
4585
4795
|
"url": "https://api.stripe.com/v1/customers",
|
|
@@ -4592,7 +4802,8 @@ return { success: true };
|
|
|
4592
4802
|
"type": "HttpRequest",
|
|
4593
4803
|
"method": "GET",
|
|
4594
4804
|
"url": "https://api.stripe.com/v1/payment_intents/{triggerData.event.id}",
|
|
4595
|
-
"headers": { "Authorization": "Bearer {env.STRIPE_SECRET_KEY}" }
|
|
4805
|
+
"headers": { "Authorization": "Bearer {env.STRIPE_SECRET_KEY}" },
|
|
4806
|
+
"workflow": { "$link": { "name": "Payment Reconciliation", "_model": "workflow" } }
|
|
4596
4807
|
},
|
|
4597
4808
|
{
|
|
4598
4809
|
"name": "Stripe Service: Verify Webhook",
|
|
@@ -4600,7 +4811,8 @@ return { success: true };
|
|
|
4600
4811
|
"type": "ExecuteServiceFunction",
|
|
4601
4812
|
"serviceName": "stripe",
|
|
4602
4813
|
"functionName": "verifyWebhookSignature",
|
|
4603
|
-
"args": ["{triggerData.request.headers}", "{triggerData.request.rawBody}"]
|
|
4814
|
+
"args": ["{triggerData.request.headers}", "{triggerData.request.rawBody}"],
|
|
4815
|
+
"workflow": { "$link": { "name": "Process Stripe Webhook Events", "_model": "workflow" } }
|
|
4604
4816
|
},
|
|
4605
4817
|
{
|
|
4606
4818
|
"name": "Stripe: Create Checkout Session (Payment)",
|
|
@@ -4623,7 +4835,7 @@ return { success: true };
|
|
|
4623
4835
|
"success_url": "{triggerData.successUrl}",
|
|
4624
4836
|
"cancel_url": "{triggerData.cancelUrl}",
|
|
4625
4837
|
"customer_email": "{triggerData.customerEmail}",
|
|
4626
|
-
"metadata": "{triggerData.metadata}"
|
|
4838
|
+
"metadata": "{triggerData.metadata}",
|
|
4627
4839
|
}
|
|
4628
4840
|
},
|
|
4629
4841
|
{
|
|
@@ -4648,6 +4860,7 @@ return { success: true };
|
|
|
4648
4860
|
"type": "SendEmail",
|
|
4649
4861
|
"emailRecipients": ["{context.httpResponse.receipt_email}"],
|
|
4650
4862
|
"emailSubject": "Your Payment Receipt",
|
|
4863
|
+
"workflow": { "$link": { "name": "Payment Reconciliation", "_model": "workflow" } },
|
|
4651
4864
|
"emailContent": `
|
|
4652
4865
|
<h1>Thank you for your payment!</h1>
|
|
4653
4866
|
<p>We've received your payment of {context.httpResponse.amount / 100} {context.httpResponse.currency.toUpperCase()}.</p>
|
|
@@ -4658,6 +4871,7 @@ return { success: true };
|
|
|
4658
4871
|
},
|
|
4659
4872
|
{
|
|
4660
4873
|
"name": "Process Refund",
|
|
4874
|
+
"workflow": { "$link": { "name": "Payment Reconciliation", "_model": "workflow" } },
|
|
4661
4875
|
"description": "Handles refund creation and updates order status.",
|
|
4662
4876
|
"type": "ExecuteScript",
|
|
4663
4877
|
"script": `
|
|
@@ -4703,7 +4917,8 @@ return { success: true };
|
|
|
4703
4917
|
"script": `
|
|
4704
4918
|
logger.warn('Unhandled Stripe Event Received: Type=' + context.triggerData.event.type + ', ID=' + context.triggerData.event.id);
|
|
4705
4919
|
return { success: true, message: 'Event logged as unhandled.' };
|
|
4706
|
-
|
|
4920
|
+
`,
|
|
4921
|
+
"workflow": { "$link": { "name": "Process Stripe Webhook Events", "_model": "workflow" } }
|
|
4707
4922
|
},
|
|
4708
4923
|
{
|
|
4709
4924
|
"name": "Stripe: Create Customer Portal Session",
|