Automação

Cron — tarefas agendadas

Cron — tarefas agendadas

Agende ações pra rodar em horários específicos: notificações diárias, backups semanais, relatórios mensais.

3 tipos de action

1. Webhook — fetch HTTP

await Bea.cron.create({
  expression: "0 9 * * 1",    // toda segunda às 9h
  name: "Resumo semanal",
  action: {
    type: "webhook",
    url: "https://hooks.slack.com/services/T00/B00/XXX",
    method: "POST",
    body: { text: "Bom dia! Hora de revisar metas." }
  }
});

2. Email — envia via plataforma

await Bea.cron.create({
  expression: "0 8 * * *",    // todo dia às 8h
  name: "Lembrete diário",
  action: {
    type: "email",
    to: "gerente@empresa.com",
    subject: "Bom dia",
    html: "<p>Confira os pedidos do dia.</p>"
  }
});

3. Workflow — multi-step (ler API → filtrar → notificar)

Ver doc dedicado: Workflows multi-step.

Cron expressions

5 campos: minuto hora dia-mes mes dia-semana

ExemploSignificado
0 9 * * *Todo dia às 9h
*/30 * * * *A cada 30 min
0 9 * * 1Toda segunda às 9h
0 0 1 * *Todo dia 1 do mês à meia-noite
0 18 * * 5Toda sexta às 18h

Listar / pausar / deletar

const tasks = await Bea.cron.list();
// → [{ id, name, cronExpression, isActive, lastRunAt, nextRunAt, lastError }]

await Bea.cron.toggle(taskId);   // pausa/retoma
await Bea.cron.remove(taskId);   // deleta

Limites

  • Execução com timeout 10s por webhook
  • Retry: não automático (se falhar, fica pra próxima execução)
  • Logs: lastError no objeto da task tem o último erro

Segurança

⚠️ Apps NÃO podem rodar código JS arbitrário em cron — apenas as 3 actions declarativas. Isso evita exploração tipo crypto miner.

Se precisar de lógica complexa, use workflow (ainda declarativo) ou faça o webhook bater num endpoint externo seu (Cloudflare Worker, Lambda) que processa.