Krok Najit nebo zalozit kontakt a druhy vstup vlastniho skriptu
Chybelo k tomu, aby sla postavit cela cesta objednavka -> faktura. - Novy skript idoklad.upsert-contact: dohleda odberatele podle ICO nebo e-mailu, a kdyz neni, zalozi ho a vrati nove ID. Vystup `created` rekne, co se stalo, takze na to jde navazat podminkou. Proc jeden krok a ne dvojice ve vetvich podminky: vetev nepridava nic do sekvence za podminkou, protoze nemusela probehnout. ID odberatele by za podminkou nebylo k dispozici, i kdyz ho ve skutecnosti daji obe vetve. Zaklada se az kdyz hledani nic nenaslo - opacne poradi by pri kazde objednavce vyrobilo dalsiho odberatele se stejnym ICO. - Krok Vlastni skript ma druhy vstup "Co pridat ke vstupu". Skript casto potrebuje krome hlavniho objektu jednu hodnotu z predchoziho kroku, typicky ID odberatele. Prijde v input.extra, aby se hlavni data nemichala s tim, co jsme doplnili my. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
e4779caf82
commit
13c0c03ed4
@@ -1762,6 +1762,15 @@ export const services: Service[] = [
|
||||
required: true,
|
||||
hint: 'Objekt, který skript dostane jako input. Třeba {{_body}}.',
|
||||
},
|
||||
{
|
||||
id: 'extra',
|
||||
label: 'Co přidat ke vstupu',
|
||||
kind: 'json',
|
||||
required: false,
|
||||
hint:
|
||||
'Hodnoty z předchozích kroků, například ' +
|
||||
'{"partnerId": "{{st_kontakt.contactId}}"}. Skript je najde v input.extra.',
|
||||
},
|
||||
],
|
||||
outputFields: [
|
||||
{ id: 'transform.result', name: 'result', type: 'object', required: true },
|
||||
|
||||
@@ -544,7 +544,16 @@ const handlers: Record<string, Handler> = {
|
||||
}
|
||||
|
||||
const source = inputs.source ? safeJson(inputs.source) : {};
|
||||
const result = runSandbox(script.code, source);
|
||||
|
||||
/*
|
||||
* Skript casto potrebuje krome hlavniho objektu i jednu hodnotu
|
||||
* z predchoziho kroku - typicky ID odberatele. Prijde v `input.extra`,
|
||||
* aby se hlavni data nemichala s tim, co jsme doplnili my.
|
||||
*/
|
||||
const extra = inputs.extra?.trim() ? safeJson(inputs.extra) : undefined;
|
||||
const payload = extra === undefined ? source : { ...source, extra };
|
||||
|
||||
const result = runSandbox(script.code, payload);
|
||||
noteRun(script.id, script.tenantId, result.ok);
|
||||
|
||||
if (!result.ok) {
|
||||
@@ -552,7 +561,7 @@ const handlers: Record<string, Handler> = {
|
||||
ok: false,
|
||||
summary: `${script.name}: ${result.error?.split('\n')[0] ?? 'chyba'}`,
|
||||
// Cely vstup i chyba. Bez vstupu se chyba v prevodu hleda naslepo.
|
||||
detail: JSON.stringify({ vstup: source, chyba: result.error }, null, 2),
|
||||
detail: JSON.stringify({ vstup: payload, chyba: result.error }, null, 2),
|
||||
outputs: {},
|
||||
};
|
||||
}
|
||||
@@ -560,7 +569,7 @@ const handlers: Record<string, Handler> = {
|
||||
return {
|
||||
ok: true,
|
||||
summary: `${script.name}: hotovo za ${result.durationMs} ms`,
|
||||
detail: JSON.stringify({ vstup: source, vystup: result.value }, null, 2),
|
||||
detail: JSON.stringify({ vstup: payload, vystup: result.value }, null, 2),
|
||||
outputs: { result: result.value },
|
||||
};
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user