scripts/*.json pavyzdžiaiPo redagavimo ir TypeScript konteksto čia sutariame kaip tas pats kodas saugomas JSON eksporte (scripts/ kataloge). Bendras ERP objekto lauko tipų ir datų skaitymas — Tema 2. Laukai, forma, initial, output, log.*, tada — tikri repo failai su fragmentais. Išvedimas, šaltiniai ir rql — Tema 3, UI — Tema 4; pilna API linija — Tema 7.
Repozitorijos kataloge scripts/ saugomi automatizavimo apibrėžimų eksportai (JSON). Vykdomas JavaScript — lauke values.scriptContent; vartotojo forma (kai įjungta) — paramsFormSchema ir paramsFormEnabled; bandomasis kontekstas — exampleData. Tai leidžia laikyti tą pačią logiką versijų kontrolėje ir kartu su technine dokumentacija.
Žemiau — tas pats turinys, kurį anksčiau rasdavote tik gilintis į
readme.html
: sutraukta, su paaiškinimais ir kodo pavyzdžiais. Pilnos lentelės, papildomos pastabos ir „santrauka pagal failus“ toliau atnaujinamos žinyne — čia laikome vedėjo ir naujoko įėjimo sluoksnį.
initialPaleidus veiksmą iš UI, platforma suformuoja objektą initial. Dažni laukai:
initial.ids (pažymėtų įrašų ID masyvas), initial.id (vienas įrašas), initial.filterString, initial.sortString.paramsFormEnabled: true): laukai pagal paramsFormSchema — pvz. initial.departmentIn arba initial.fileName / initial.fileName.publicLink po FILEUPLOAD.initial.acceptLanguage vertimams (žr. ss-ocr-read-email JSON žinyne).Formos fragmentas (vienas failo laukas — kaip c-001):
[
{
"blockType": "FILEUPLOAD",
"meta": { "fieldName": "fileName", "accept": ".xlsx" }
}
]
Scenarijuje dažnai skaitote initial.fileName arba viešą nuorodą: initial.fileName?.publicLink ?? initial.fileName.
| Laukas | Paskirtis |
|---|---|
paramsFormSchema |
Formos blokai: blockType, meta.fieldName, required, accept, RQL getItems ir pan. |
exampleData |
JSON eilutė su pavyzdiniu initial testui, pvz. ids + departmentIn (aa260126). |
placeId |
Kur sistemoje rodomas veiksmas (clients-list, inventory-adjustments-list, …). |
triggerTypeId / cronExpression |
Trigerio tipas; 0 — dažnai rankinis / kontekstinis; suplanuotiems — CRON eilutė (žr. ss-ocr-read-email žinyne). |
UserError) ir technika (try / catch)Verslo taisyklė (niekas nepažymėta, trūksta privalomo lauko) — throw new UserError("…"): vartotojui aiški žinutė, be stack trace „baimės“.
if (initial?.ids?.length < 1) {
throw new UserError("Nepažymėtas nei vienas dokumentas");
}
Techninė klaida aplink mutate, rql, fetchData — tipinis šablonas:
try {
const result = await mutate("updateClient", { /* … */ });
} catch (error) {
await log.error("Klaida: " + (error?.message ?? error));
throw error;
}
Cikle per dokumentus vienam nepavykus — galima kaupti failed ir tęsti (continue) — žr. aa260126 repo faile. c-001 naudoja logException(tag, exception) su message / stack / name serializacija į log.error.
Antipavyzdys iš repo:
catch (execption)neatitinkaexceptionkintamojo vardo — tikroji klaida gali būti paslėpta. Laikykitės vieno vardo (errorarbaexception) visame faile.
outputPabaigoje priskiriate output (objektas) — matoma UI ir istorijoje. Tipiniai laukai iš šio projekto pavyzdžių:
message — trumpas tekstas vartotojui (pvz. c-001: „Veiksmas atliktas“).created / struktūrizuota santrauka — kas sukurta (aa260126).failed, failedCount — dalinis nesėkmės atvejis.executionStatus (SUCCESS / WARNING / CANCELED), documentsCount — žr. Automatizavimo scenarijų API.log.* ir kada rašyti| Situacija | Ką daryti | Pavyzdys faile |
|---|---|---|
| Sėkmingas žingsnis | await log.info(…) su santrauka |
aa260126 po sėkmingo mutate |
| Diagnostika / payload | log.trace (atsargiai gamyboje) |
Įvesties objektai prieš sunkią operaciją |
| Įspėjimas, bet ne stabdymas | log.warn |
ss-ocr-read-email |
| Klaida | log.error su kontekstu (docRef, functionName, …) |
aa260126, c-001 per logException |
Jei API dokumente log.* yra asinchroniniai, saugiau await log.info(…), kad įrašas spėtų užsirašyti prieš baigiant sesiją.
scripts/*.json| Failas | Ką pamatysite |
|---|---|
c-001 |
FILEUPLOAD, fetchData, Excel, lygiagretumas, logException, output.message |
aa260126 |
initial.ids, forma departmentIn, UserError, ciklas, mutate, output su santrauka |
jm16750 |
initial.fileName.publicLink, eilutės, output su dideliu JSON (atsargiai gamyboje) |
ss-ocr-read-email |
CRON, parametrai, try/catch el. paštui, vertimų helperiai |
Pilnas žinynas (scripts/readme.html) — visos pastabos, papildomos lentelės ir nuorodos į docs/ bei 24 verslo scenarijus.
scripts/)Čia naudojami eksportuoti apibrėžimai (JSON): vykdomas kodas — values.scriptContent, forma — paramsFormSchema, bandymui — exampleData. Teoriją, lenteles ir bendrus šablonus žr. skyriuje 1; pilną indeksuotą žinyną —
scripts/readme.html
.
c-001 · klientai iš „Excel“ — initial.fileName, fetchData, rql, dataParser.excelSheetToJson, lygiagretus eilučių apdorojimas.aa260126 · pajamavimas → išlaidavimas — sąrašo initial.ids, UserError, mutate, output.const fileDataResponse = await fetchData(undefined, {
url: initial.fileName,
method: "GET",
raw: false,
});
const clientsFileData = await dataParser.excelSheetToJson(
fileDataResponse.body,
0,
5
);
const ids = initial?.ids;
if (initial?.ids?.length
scriptContent, initial, UserError, output, log.* — skyrius 1; išplėtimas —
scripts/readme.html
.c-001 ir aa260126 — tipiniai šablonai failui iš sąrašo ir sąrašo pažymėjimams.Atverkite vieną iš nuorodų į JSON ir IDE raskite scriptContent — trumpai paaiškinkite kolegai vieną matomą šabloną (fetchData arba UserError).
c-001 arba aa260126); tada žinyne
readme.html
peržvelkite tą patį failą pagal „santrauką pagal failus“.exampleData, kuris atitinka initial bandyme.