Files
COMERCIAL-GTI/src/outreach/scheduler.mjs
T
Gustavo eaaf7af659 Add WABA outreach automation (Z-PRO integration)
Per-product message templates, official/não-oficial channel selection,
manual per-number sending, and a 20-minute internal scheduler for the
existing automatic outreach batch — all pre-existing local work being
committed as-is.
2026-08-03 13:14:09 -03:00

30 lines
1.1 KiB
JavaScript

import { runOutreachBatch } from './run.mjs';
const CICLO_MS = 20 * 60 * 1000;
// Timer interno no processo do servidor: nao depende de agendador do sistema
// operacional (Task Scheduler/cron), entao funciona identico local (Windows)
// ou dentro de um container Docker apos a migracao — so precisa do servidor
// estar de pe, o que ja e verdade hoje. runOutreachBatch e idempotente e sai
// cedo quando desligado/fora de horario/limite batido, entao rodar a cada
// 20 min e seguro sem lock ou fila.
export function startOutreachScheduler({ db, log = () => {} }) {
const ciclo = () => {
runOutreachBatch({ db, log }).catch((error) => {
log(`outreach: erro inesperado no ciclo automatico: ${error.message}`);
});
};
// roda um primeiro ciclo pouco depois do boot (idempotente/seguro), sem
// esperar os 20 min inteiros para o primeiro lote do dia.
const primeiro = setTimeout(ciclo, 30 * 1000);
primeiro.unref();
const timer = setInterval(ciclo, CICLO_MS);
timer.unref();
return () => {
clearTimeout(primeiro);
clearInterval(timer);
};
}