Aller au contenu principal

Envois

L'écran /envois montre tout ce que SekoiaCraft a posté vers un intake, quelle qu'en soit l'origine. C'est la contrepartie globale du panneau « Derniers envois de ce message type » que porte l'onglet Aperçu : là-bas on regarde un message type, ici on regarde l'instance.

Il tient la partie « historique » de l'écran de supervision prévu au plan ; les jobs en attente sont sur File d'envoi, et les métriques de génération viendront avec les étapes qui les produisent.

Ce que la page dit​

Quatre tuiles de synthèse, calculées sur tout l'ensemble filtré et non sur la page affichée — une page de 25 lignes ne dirait rien du taux de succès des milliers d'autres :

TuileSens
EnvoisNombre total d'envois de la sélection
Taux de succèsPart des envois aboutis, et leur nombre
En échecNombre d'envois définitivement refusés
Durée moyenneMoyenne des allers-retours vers l'intake

Une courbe des envois par heure sur les dernières 24 h, empilée par issue. Les heures sans envoi y figurent à zéro : une courbe qui les sauterait ferait passer une heure creuse pour une heure d'activité. Le survol d'une colonne en détaille le contenu.

Un tableau des envois, avec pour chacun son horodatage, son issue, sa source, sa technologie, sa destination, le statut HTTP obtenu, la durée et le nombre de tentatives. Les envois en échec portent le message renvoyé par l'intake. Chaque ligne se déroule sur les messages envoyés (voir plus bas).

La source et la technologie​

La colonne Source dit ce qui a produit le lot, par une pastille colorée — le libellé est toujours écrit à côté de la couleur :

PastilleCe qui a produit le lotSuivie de
Flux normalLa journée simulée d'une communautéla communauté
Scénario de menaceUn scénario lancé sur une communauté (voir Bruit de fond pirate)le scénario · la communauté
Banc d'essaiUn essai de bancle banc
Envoi manuelLe bouton « Envoyer » de l'onglet Aperçu d'un message type—

Le nom mène à l'onglet Aujourd'hui de la communauté, à son onglet Menaces pour un scénario, ou au banc.

La colonne Technologie nomme le générateur, et le message type quand l'envoi n'en porte qu'un — un envoi de l'éditeur ; le lien mène droit à son éditeur. Un lot de banc, de communauté ou de scénario mêle plusieurs messages types d'une même technologie, et nomme la technologie seule.

Les deux survivent à ce qui les a produites : l'historique est un relevé. Un envoi dont le message type et la technologie ont été supprimés depuis affiche « Origine supprimée » ; une communauté ou un banc supprimé depuis, « Communauté supprimée » ou « Banc supprimé » — la pastille reste, parce que la nature de la source est écrite sur la ligne au départ du lot. Un lot de scénario garde le nom de sa communauté, recopié sur le relevé du lancement.

Voir ce qui est parti​

Chaque ligne se déroule sur les messages réellement postés, dans leur ordre d'envoi. C'est la contrepartie du reste du tableau : les colonnes disent qu'un envoi est parti et comment il a été reçu, le dépliage dit quoi.

Un envoi en échec conserve ses messages, et c'est là qu'ils servent le plus : ils disent ce qu'on a tenté de poster, donc pourquoi l'intake l'a rejeté.

Le plafond est un refus chiffré. Un lot peut porter jusqu'à mille messages ; cent sont conservés, et le panneau l'annonce — « les 100 premiers messages sur 1 000 ». Le nombre d'envois de la ligne, lui, reste exact : rien n'est tronqué en silence.

La profondeur est d'une journée, et elle porte sur le contenu, pas sur la ligne. Passé 24 h, le panneau dit que les messages ne sont plus conservés — l'envoi, lui, reste au relevé, avec son issue, son origine et sa durée. C'est la même règle qui fait survivre une ligne à la suppression de son message type.

Le seuil est appliqué à la lecture : un message de plus de 24 h est refusé même s'il est encore physiquement en base. Un balayage récupère l'espace en arrière-plan, mais il ne garde rien — s'il s'arrêtait, rien ne fuirait pour autant. La garantie ne dépend pas de sa bonne santé.

Ce qui est conservé, ce sont les messages, jamais l'enveloppe qui les porte à l'intake. L'intake key n'entre ni en base, ni dans une réponse.

Un envoi antérieur à cette fonctionnalité affiche « aucun message n'a été conservé » : c'est honnête, pas un défaut.

Le dépliage fonctionne sans JavaScript : le contrôle est un lien, il pose la ligne ouverte dans l'URL (?ouvert=…) et la page revient avec le panneau rendu. L'écran reste donc partageable — une URL dit ce qui est ouvert. Avec JavaScript, plusieurs lignes s'ouvrent à la fois sans recharger, et une ligne ouverte le reste quand un nouvel envoi arrive.

Ce qui attend encore​

Un lot programmé n'entre dans la liste qu'au moment où il part : la ligne est ouverte par le service d'envoi quand il poste, pas quand le lot est mis en file. Un essai lancé en cadence chronologique ou en rejeu en direct (voir Bancs d'essai) peut donc n'y rien laisser pendant des heures.

Une ligne au-dessus de la liste dit alors combien de lots attendent leur heure, et à quand vont la première et la dernière échéance. Elle est volontairement en dehors des tuiles de synthèse : celles-ci mesurent ce qui est parti, et compter un lot programmé parmi elles fausserait le taux de succès de la page. Le décompte porte sur toute la file, tous bancs confondus — le résultat d'un essai, lui, donne les chiffres de cet essai-là.

Elle porte le lien « Gérer la file », et le porte même à zéro : masquer la ligne quand rien n'attend ferait disparaître la seule porte d'entrée au moment précis où l'on vient vérifier que la file est bien vide.

Ce qui attend se voit, se déplie et se retire depuis File d'envoi — ligne par ligne, par sélection, par état ou en entier ; et la file peut y être suspendue. Le raccourci par banc reste disponible : le bouton « Annuler les envois programmés » d'un banc vide ses lots encore différés, et dit combien.

Filtrer​

Le statut, le générateur, la source et la communauté restreignent la liste, la synthèse et la courbe ensemble. Le filtre de communauté garde son flux normal comme ses scénarios de menace — le croiser avec la source pour n'en garder qu'un ; dans un pool, il isole une équipe.

Les filtres vivent dans l'URL (?status=, ?generatorId=, ?kind=, ?community=) : la page est partageable, le retour arrière fonctionne, et le formulaire reste utilisable sans JavaScript. Le lien « Suivre les envois » d'un banc arrive avec ?trial=, qui n'a pas de champ à lui mais se conserve quand on ajoute un autre filtre.

Temps réel​

La page se met à jour d'elle-même à chaque envoi terminé, sans rechargement.

Le mécanisme est volontairement modeste : api-sender annonce chaque issue définitive sur un canal Redis, api-activity en fait un flux SSE, et la page s'en sert comme d'un signal pour relire ses données. Rien de ce qui s'affiche ne vient du flux — la vérité reste en base. Une annonce perdue ne laisse donc jamais l'écran dans un état faux, et la page se remet à jour à la connexion comme à chaque reconnexion.

Les tentatives intermédiaires ne sont pas annoncées : un envoi qui aboutira au coup suivant ferait clignoter l'écran pour rien.