Praktika · Auditas, sauga, DI (P21–P24)
P21 · „Automation user“ audite
// CRON / scheduler — auditas fiksuoja sistemos naudotoją; paaiškinkite klientui
await log.info("CRON paleidimas: užduotis " + initial?.cronJobCode);
output = { message: "Vykdytas pagal grafiką — žr. auditą (automation user)" };
P22 · Naktiniai likučiai — atsekamumas
const correlationId = initial?.correlationId ?? ("nightly-" + Date.now());
await log.info("[" + correlationId + "] Pradžia");
const res = await rql(`SELECT id, qtyBase FROM inventoryStocks WITH companyId = ${companyId} size = 1000`);
await log.info("[" + correlationId + "] Eilučių: " + (res?.content?.length ?? 0));
output = { message: "Baigta", correlationId };
P23 · DI ir slaptų duomenų apsauga
// Scenarijuje NIEKADA nekoduokite tokenų tiesiai į tekstą; DI promptuose — tik anonimizuoti pavyzdžiai
const safeSample = { code: "DEMO-001", amount: 100 };
await log.debug("Anoniminis pavyzdys: " + JSON.stringify(safeSample));
output = { message: "Politika: be gamybinių duomenų DI" };
P24 · DI sugeneruota funkcija — checklist
async function assertApiExists() {
const allowed = ["mutate", "rql", "log.info", "fetchData", "getDataExportSchemas"];
// Tikrinimas: ar kvietimas dokumentuotas rivile-erp-automatizavimo-api.html
await log.info("Prieš merge: patikrinkite mutate pavadinimus pagal GraphQL SDL");
}
await assertApiExists();
output = { message: "Checklist įvykdytas", executionStatus: "SUCCESS" };