Ciclo de uma automação
Do comando idempotente à ocorrência concluída ou reconciliada.
1. Criação
POST /v1/automations valida a entrada, normaliza a agenda quando necessário,
cria a automação e sua primeira versão imutável. Mutações usam
Idempotency-Key.
2. Ativação
Ativar não muda imediatamente o estado desejado. O comando cria uma operação e uma mensagem de outbox. O worker publica a versão, lê a confirmação e só então marca a intenção como ativa.
sequenceDiagram
participant C as Cliente
participant A as API
participant O as Outbox
participant P as Provider
C->>A: :activate + Idempotency-Key
A-->>C: 202 Operation
O->>P: Publicar versão
O->>P: Ler confirmação
P-->>O: checksum observado
O->>A: concluir operação3. Agendamento
O scheduler lê automações elegíveis, calcula vencimentos e cria ocorrências. A
constraint (automation_id, version_id, scheduled_for) impede duplicata
lógica mesmo com schedulers concorrentes.
4. Execução
Um worker adquire lease da ocorrência e registra uma tentativa. Heartbeats
renovam o lease; cancelamento é cooperativo. Falhas elegíveis voltam como
retrying com backoff exponencial e jitter.
5. Resultado
Sucesso, falha, cancelamento, timeout ou skip são fatos terminais. Resultado ambíguo exige reconciliação; ele não autoriza repetir cegamente o efeito.