Files
melgarafaelandClaude Opus 5.5 f9515909ae fix(webhooks): occurred_at segue sendo a hora do envio; a hora do fato vai em happened_at
O #1830 trocou o sentido do occurred_at do corpo do webhook de saída: de
hora do envio (new Date().toISOString(), montado a cada execução) para hora
do fato (event_log.created_at). É campo de contrato público, e o próprio
fragmento admitia que receptor que recusa requisição velha por ele passaria
a recusar entregas legítimas (Reenviar, automação adiada) — quebra silenciosa
numa minor.

- occurred_at volta a ser exatamente o de antes do #1830;
- campo NOVO happened_at, com a hora do fato (horaDoFato(created_at));
- delivery_id, X-Webhook-*, X-Deskcomm-Signature e o t da assinatura não
  mudam (o t já era Date.now() por tentativa, nunca o occurred_at);
- vetor de referência recalculado em Python (hmac da stdlib) com o corpo novo;
- guia, fragmento e testes atualizados; o caso do envio adiado e o do
  Reenviar pelo motor+rota provam occurred_at ≈ agora e happened_at =
  event.created_at. Sabotado (occurred_at = hora do fato): 2 vermelhos.

Ajuste sobre o #1830 de @in100tiva.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 00:47:18 -03:00
..