pnclPULSEObtener acceso a la API

NOTAS SOBRE ALERTAS DE CAÍDA

Dirige cada alerta de caída al canal correcto

Un stream, muchos destinos. Pon una tabla de rutas entre tu filtro y tus webhooks para que cada deporte y severidad caiga en su propio canal.

Un relé de alertas de caída no tiene que enviarlo todo a un solo lugar. Entre el filtro de umbral y el webhook va una tabla de rutas: un pequeño mapa de deporte y severidad a canal, para que las caídas de fútbol lleguen a los lectores de fútbol y solo los movimientos más grandes llamen al canal urgente. Un proceso, un stream, muchos destinos.

Dónde va el enrutador

El orden importa: filtra primero, deduplica segundo, enruta tercero, envía al final. El filtrado descarta las alertas que nunca quisiste. La deduplicación, con las claves y cooldowns de la guía de deduplicación, colapsa repeticiones del mismo precio cayendo. Solo entonces el enrutado decide a dónde va la superviviente, y una cola por canal la entrega al trabajador del webhook.

Ese último salto merece su propia cola por destino. La guía de relé ya mantiene el POST del webhook fuera del bucle de lectura; con varios canales, la misma regla aplica por canal, para que un destino estrangulado no retrase a los demás.

Enruta por deporte primero

La alerta lleva deporte y liga en campos simples, que es todo lo que un enrutador necesita. La mayoría de los lectores quiere un canal por deporte que sigue, no un feed de todo:

ROUTES = {
    ("Soccer", "normal"): SOCCER_WEBHOOK,
    ("Tennis", "normal"): TENNIS_WEBHOOK,
}
DEFAULT = GENERAL_WEBHOOK

def pick_webhook(alert, level):
    return ROUTES.get((alert["sport"], level), DEFAULT)

El enrutado por liga funciona igual cuando un canal se interesa por una sola competición. Mantén la tabla pequeña: cada fila es una promesa de que alguien lee lo que cae ahí.

Luego por severidad

El segundo eje es el tamaño del movimiento. El stream envía precios, así que el propio relé calcula el porcentaje: la bajada dividida entre el precio antiguo, como documenta la guía de alertas de caída. Dos niveles bastan para la mayoría de montajes: todo lo que esté en o sobre tu umbral va al canal normal, y una segunda barra más alta, digamos 8% donde 5% es el suelo, también se refleja a un canal urgente que menos gente sigue de cerca.

Resiste los niveles más finos. Tres bandas por deporte son una tabla de rutas que nadie lee, y una caída lo bastante grande para importar se lee claramente en dos niveles.

Respeta el ritmo de cada canal

Cada webhook tiene su propio límite de publicación, y las plataformas responden a una ráfaga con un 429 y una cabecera Retry-After propios, como cubren las reglas de reintento de la guía de relé. Con colas por canal, honrar esa cabecera pausa solo el canal que la envió. Los límites de las plataformas de chat, no el stream, marcan tu techo de publicación en una jornada cargada.

Dos ajustes de la guía de relé absorben la mayoría de las ráfagas antes de que el enrutado importe: publica un mensaje por evento en lugar de uno por resultado, y mantén un cooldown por selección para que un precio que sigue cayendo no publique cada pocos segundos.

Mide el propio enrutado

Registra la ruta que tomó cada alerta, no solo el envío. Un recuento semanal por canal te dice qué filas de la tabla se ganan su lugar: un canal que recibe cuarenta alertas al día y se lee dos veces es un problema de filtro, no un éxito de enrutado. Sube su umbral o fusiónalo de vuelta en el canal general.

Filtra, deduplica, enruta, envía. El stream entrega los movimientos; la tabla decide quién se entera de ellos.