Mokymų šablonas VS15 — PDF iš ataskaitos + išsiuntimas el. paštu

Mokymų šablonas VS15 — PDF iš ataskaitos + išsiuntimas el. paštu

Šis failas yra mokymų sablonas, ne gamybinis paruoštas JSON. Tikslas — parodyti logikos seką Rivile ERP Automation kontekste: duomenys / ataskaita → PDF (ar binary) → el. pašto siuntimas. Konkrečius API vardus (mutate, rql, ataskaitos paleidimo endpointus, el. pašto siuntimo funkcijas) turi patvirtinti produkto dokumentacija ir testinė aplinka.

Susiję pavyzdžiai šiame kataloge:


1. Verslo seka (ką daro scenarijus)

  1. Suplanuotas paleidimas (pvz. penktadienis 17:00) arba rankinis mygtukas.
  2. Surenkami parametrai: įmonė, laikotarpis, el. pašto gavėjai (gali būti paramsFormSchema arba parametras iš parameterValues).
  3. Sugeneruojama ataskaita arba dokumentas produkto mechanizmu, kuris grąžina PDF baitų srautą arba laikiną nuorodą į failą.
  4. Sukuriamas el. laiškas su priedu (application/pdf) arba su nuoroda į užduotyje išsaugotą failą.
  5. Siunčiama per organizacijos el. pašto integraciją (vienas centralizuotas kelias — ne hardcodinti SMTP slaptažodžius scenarijuje).
  6. output.message ir log.info su santrauka; klaidos — log.error + kontroliuotas pranešimas.

2. Kodo fragmentai (JavaScript Automation pseudokodas)

2.1. Įėjimas ir validacija

// CRON arba triggerTypeId pagal produktą
if (!companyId) {
  throw new UserError("Nenurodyta įmonė");
}
const recipients = await resolveRecipients(companyId); // RQL arba parametrai
if (!recipients?.length) {
  throw new UserError("Nėra gavėjų");
}

2.2. Ataskaitos / PDF gavimas (vietos žymeklis produkto API)

// Pakeiskite į tikrą produkto kvietimą: pvz. report run → job → fetch binary
// const pdfBytes = await runReportAndGetPdf({ reportCode: "...", from, to, companyId });
// Jei produktas grąžina URL į jau sugeneruotą PDF:
// const res = await fetchData(undefined, { url: publicPdfUrl, method: "GET", raw: true });
// const pdfBytes = res.body;
await log.info("PDF generavimas: pradžia");

2.3. El. laiško siuntimas (vietos žymeklis)

// Pakeiskite į tikrą platformos el. pašto API (vienas palaikomas būdas)
// await sendEmail({
//   to: recipients,
//   subject: `Savaitinė suvestinė ${formatDate(friday)}`,
//   bodyHtml: "<p>Žr. priedą.</p>",
//   attachments: [{ filename: "suvestine.pdf", mimeType: "application/pdf", content: pdfBytes }],
// });
await log.info("El. paštas: siuntimas užbaigtas");
output = { message: "PDF išsiųstas" };

2.4. Ribos (privalomai priminti mokyme)

  • Sesijos laikas (pvz. 15 min) ir atmintis (2 GB) — didelė ataskaita PDF gali užimti daug RAM; didelėms apimtims naudoti foninę užduotį + nuorodą laiške vietoj priedo.
  • Ciklo apsauga — scenarijus neturi vėl kviepti savęs be galo.

3. Ryšys su suplanuoto el. pašto pavyzdžiu

El. pašto nuskaitymo apibrėžime matote:

  • cronExpression — kaip suplanuoti VS15 ir VS18;
  • el. pašto dėžutės skaitymą — ne PDF siuntimą, bet sesijos ir klaidų šabloną (AUTHENTICATIONFAILED ir kt.).

Mokyme parodykite simetriją: įėjimas (IMAP) vs išėjimas (SMTP / siuntimo API) — abu reikalauja parametrų saugojimo ne kode.


4. Tolesnis žingsnis produkto komandai

Įtraukti vieną gamybai paruoštą automatizavimo apibrėžimą (JSON eksportą) į šį katalogą su anonimizuotais parametrais, kai produkto komanda patvirtins galutinius API identifikatorius.