Mapa de conexiones
Los recuadros agrupan las piezas que viven en un mismo repositorio.Qué conecta cada repositorio
VANTS-BUS
VANTS-BUS es un Worker de Cloudflare (vants-bus) disponible en https://vants-bus.vants.workers.dev. Recibe los eventos que publican los proyectos, los guarda en Neon y los entrega a quien los pida. Los eventos no se modifican y se conservan 30 días; sus tablas están en Bus de eventos. Estos repositorios contienen los clientes del bus, no el código del Worker vants-bus.
Cada evento tiene un id (evt_ más un ULID, ordenable), un type, el source (el proyecto que lo publicó), la fecha ts y los datos en data.
Dónde corre cada pieza
El diagrama agrupa las piezas según dónde se ejecutan y muestra en qué tablas escribe cada una. Todas las tablas están en una sola base de datos de Neon; VantsBasededatos crea una rama por cada PR para probar las migraciones. Enmain, la web todavía no lee vants_feed.
Proyectos conectados
Cada proyecto se identifica con su nombre en la cabeceraX-VANTS-Project y firma con su propio secreto.
Todos se configuran con
VANTS_BUS_URL y VANTS_BUS_SECRET. Si faltan, la conexión con el bus queda apagada y el resto del proyecto funciona igual.
Quién publica y quién consume cada evento
El contrato tiene 12 tipos de evento, definidos en la constanteEVENTS de cada cliente. El diagrama y la tabla indican qué código los publica y los consume hoy. Además de los consumidores de la tabla, vants-consumer-playvants copia todos los tipos a vants_feed.
En el diagrama, el color de cada tipo indica quién lo consume: azul, flask-agents y VANTS HUB; verde, solo flask-agents; amarillo, solo VANTS HUB, y gris, nadie todavía.
El Worker
vants publica desde vants-server/worker.js con el cliente de vants-bus/, y la API de torneos de VANTSNET publica desde src/lib/bus/. Los dos envían sin bloquear la respuesta y quedan apagados si falta su secreto. El ejemplo snippet-worker.js sigue en vants-bus/ como referencia.
Datos de los eventos publicados
En los eventos de partidos,
game va en minúsculas y csgo se convierte en cs2. La correspondencia con los webhooks de FACEIT está en vants-faceit-webhook.
Recorrido de un resultado
- Pasos 1 a 5. vants-faceit-webhook guarda el webhook en Neon, responde
200a FACEIT y publicamatch.finisheden segundo plano. Si FACEIT repite el webhook, no se publica dos veces. Si el bus falla, lo intenta hasta 3 veces; si aun así no lo consigue, libera elevent_idpara que un nuevo envío de FACEIT pueda publicarlo. - Pasos 6 a 12. VANTS HUB muestra una notificación por cada evento. flask-agents redacta el resumen (
Resultado verificado: <equipo A> <marcador> - <marcador> <equipo B>) y lo publica comopost.generated. - Pasos 13 a 15. Cada 15 minutos,
vants-consumer-playvantscopia los eventos nuevos avants_feed. Su cursor es elidmás alto de esa tabla, así que si una vuelta falla, la siguiente vuelve a leer los mismos eventos sin duplicarlos. La web todavía no leevants_feed.
Leer y publicar eventos
Firma de las peticiones
Cada petición al bus lleva tres cabeceras:Rutas
Clientes
Cloudflare rechaza con
403 (error 1010) los User-Agent genéricos, como el de Python-urllib. Envía uno propio, como hacen los clientes.