NOTAS SOBRE ALERTAS DE QUEDA
Teste seu relay com um stream de quedas gravado
Salve as linhas data: de uma sessão ao vivo, reproduza-as pelo seu relay a partir de um arquivo local e veja filtro, deduplicação e formato funcionando.
Um relay de alertas de queda é difícil de testar ao vivo, porque o stream só fala quando um preço cai. A correção é gravar uma sessão real e reproduzi-la: um pequeno servidor local pinga as linhas salvas no seu relay em velocidade realista, e você assiste ao filtro, ao armazenamento de deduplicação e ao formato da mensagem funcionando sob demanda, quantas vezes precisar.
Grave uma vez, guarde para sempre
O stream é texto puro, o que torna a gravação trivial. Enquanto seu leitor está conectado, desvie cada linha bruta para um arquivo: o objeto de controle que abre a sessão, depois cada linha data: conforme chega. Uma hora movimentada rende mais material de teste do que uma semana esperando a queda certa.
Guarde o arquivo verbatim, exceto o tempo. O ponto da gravação é que seu relay não consegue distingui-la do stream ao vivo, então não a formate bonito, não a reordene, e não conserte os alertas que parecem errados. Os estranhos são os úteis.
Reproduza localmente
Um servidor de reprodução tem vinte linhas: lê o arquivo, escreve cada linha com um pequeno atraso, flush. Aponte seu relay para o endereço local em vez da URL do stream e inicie-o. Tudo a jusante da conexão, o parsing, a regra de limiar, a checagem de deduplicação, o formatador, a fila do webhook, agora roda contra eventos reais.
import time
def replay(path, out, delay=0.05):
with open(path) as f:
for line in f:
out.write(line)
out.flush()
time.sleep(delay)
É aqui que moram também os ensaios de falha. Trunque uma linha no meio de um array JSON para ensaiar um frame quebrado. Duplique um lote para checar as chaves de deduplicação do guia de deduplicação. Envie o mesmo alerta duas vezes com um intervalo para confirmar que o cooldown ainda vale.
O que verificar
Três checagens cobrem a maioria dos bugs de relay. O tratamento de frames: um objeto solto é mensagem de controle e deve ser pulado, e todo array faz parse limpo, seguindo o formato de frames do guia de configuração SSE, verificado em 2026-10-01. O caminho da regra: cada alerta sobrevivente passa pelo seu limiar exatamente uma vez, sem duplicatas depois de um lote duplicado. A saída: a mensagem mostra a partida, o mercado, os dois preços e o preço justo, dispostos como o guia de relay formata.
Rode o lado do webhook contra um canal de teste ou uma URL capturadora de requisições, nunca o canal de produção que seus leitores acompanham.
Quando a reprodução discorda do ao vivo
Se o relay funciona na gravação e falha ao vivo, a diferença está na conexão, não nos eventos: autenticação, a titularidade de stream do plano, ou o comportamento de reconexão. Isso estreita a busca para a metade de conexão do guia de configuração, que é exatamente o que uma boa gravação te compra.
Grave o stream uma vez, reproduza para sempre. O feed ao vivo é para produção; o arquivo é para prova.