Historique d'exécution
Chaque déclenchement de chaque tâche laisse une trace. La page Exécutions et le panneau Détail d'exécution permettent aux opérateurs d'inspecter cette trace — ce qui s'est déclenché, à quel moment, avec quels paramètres, quelle étape a réussi, laquelle a échoué, ce que dit le journal.
Cette page couvre les deux surfaces et les actions qu'elles proposent.
Où vivent les exécutions
Une exécution est accessible depuis plusieurs endroits :
| Depuis | Ce sur quoi cliquer |
|---|---|
| La carte du catalogue de tâches. | Le badge d'état coloré qui suit l'identifiant de tâche (par exemple SUCCEEDED) — ouvre l'exécution qui l'a produit. |
| La vue Planification. | Une pastille dans le calendrier — ne fonctionne que pour les déclenchements déjà survenus. |
| URL directe. | /nomaflow/runs/<run-id> si l'identifiant est connu (issu d'une notification, d'un collègue, d'une ligne de journal). |
Le badge de dernière exécution affiché par le catalogue pointe toujours vers l'exécution la plus récente. Pour remonter plus loin, suivez le lien depuis la page Détail d'exécution ou utilisez le modèle d'URL ci-dessus avec l'identifiant plus ancien.
La page Détail d'exécution
La page se découpe en trois zones : en-tête, chronologie des étapes, flux de journal.
L'en-tête
| Élément | Signification |
|---|---|
| Identifiant de tâche · identifiant d'exécution | En haut à gauche. Cliquer sur l'identifiant de tâche ouvre la carte du catalogue ; cliquer sur l'identifiant d'exécution le copie. |
| Badge d'état | QUEUED / RUNNING / SUCCEEDED / FAILED / CANCELED. En direct pour les exécutions en cours. |
| Déclenché par | cron, user:<name>, api, cli. La piste d'audit. |
| Démarré / Terminé | Horodatages dans le fuseau du navigateur (UTC au survol). Pour les exécutions en cours, seul Démarré apparaît. |
| Niveau de journal | INFO ou DEBUG pour cette exécution. Utile lors d'un diagnostic — une exécution DEBUG se lit autrement qu'une exécution INFO. |
| Cliché des paramètres | JSON dépliable montrant les paramètres fusionnés + op_kwargs tels que l'exécution les a réellement vus. La réponse d'audit à « qu'a reçu cette exécution ». |
L'en-tête propose deux actions : ✕ Annuler (visible uniquement quand l'exécution est RUNNING) et ↻ Rejouer (visible uniquement sur une exécution terminée).
La chronologie des étapes
La colonne de gauche liste chaque étape dans l'ordre. Chaque ligne affiche :
| Élément | Signification |
|---|---|
| Pastille d'état (●) | Vert = SUCCEEDED, bleu (pulsant) = RUNNING, rouge = FAILED, gris = en attente ou CANCELED. |
| Nom | Nom d'étape en monospace. |
| Type | Survol de la ligne pour voir le type (sql_query, python, …). |
| Durée | Secondes ou millisecondes, renseignées à la fin de l'étape. |
Cliquer sur une ligne d'étape filtre le journal pour n'afficher que les émissions de cette étape — précieux dans les exécutions longues où le journal global devient bruyant.
La pastille évolue en direct au fur et à mesure que l'exécuteur progresse à travers les étapes. Aucun rafraîchissement manuel n'est nécessaire — la page s'abonne à la room Socket.IO de l'exécution.
États d'étape
| État | Quand |
|---|---|
pending | L'exécuteur n'a pas encore atteint cette étape. |
RUNNING | L'exécuteur est dans cette étape. |
SUCCEEDED | L'étape s'est terminée sans lever d'exception. |
FAILED | L'étape a levé une exception (après les nouvelles tentatives, le cas échéant). |
CANCELED | L'opérateur a cliqué sur ✕ Annuler, ou l'étape a été désactivée (raison skipped: disabled), ou une défaillance amont a stoppé l'exécution avant cette étape. |
Cliquer sur une étape FAILED déplie la ligne pour afficher le message d'exception et la trace.
Le journal en direct
La colonne de droite est le flux de journal de l'exécution. Chaque ligne porte :
| Élément | Format |
|---|---|
| Horodatage | HH:MM:SS.mmm dans le fuseau du navigateur. |
| Niveau | INFO / WARNING / ERROR. Codé par couleur. |
| Message | Le texte transmis à ctx.log.info(…) ou émis par le framework. |
Les frontières d'étape sont émises comme des lignes INFO :
02:30:01.295 INFO step F0004 · SUCCEEDED · 1.2 s
02:30:01.298 INFO step F0005 · type=sql_copy · mode=overwrite
Le journal devient ainsi auto-explicatif — il se lit de haut en bas et raconte le déroulé de l'exécution sans qu'il soit nécessaire de consulter la chronologie.
Diffusion en direct
Pendant qu'une exécution est en cours :
- Une pulsation verte à côté de « JOURNAL EN DIRECT · diffusion » indique que le WebSocket est connecté.
- Les lignes s'ajoutent en temps réel au fur et à mesure de leur émission.
- La vue défile automatiquement vers le bas — un défilement vers le haut suspend ce défilement automatique jusqu'au retour en bas.
Après la fin de l'exécution
Le journal est persisté dans l'historique d'exécution et reconstruit depuis la base lors d'un rechargement de page. La diffusion en direct s'arrête ; le même contenu reste lisible. La rétention est de 90 jours par défaut (paramétrable dans Administration).
Filtrage et recherche
| Action | Comment |
|---|---|
| Filtrer sur une étape | Cliquer sur la ligne de l'étape dans la colonne de gauche. |
| N'afficher que WARNING / ERROR | Basculer la pastille de niveau au-dessus du journal. |
| Trouver une expression précise | Ctrl/Cmd+F dans le navigateur (le journal est du texte brut). |
| Passer en DEBUG | Relancer la tâche avec log_level = DEBUG dans la fenêtre Exécuter avec paramètres. |
✕ Annuler
Visible tant que l'exécution est RUNNING. Le clic envoie un signal d'annulation :
| Type d'étape | Comportement à l'annulation |
|---|---|
sql_query / sql_copy | Connexion base de données fermée ; la transaction est annulée. |
python | Tâche asyncio annulée ; les appels await en cours lèvent CancelledError. Une étape qui ne rend pas la main ne s'arrête qu'à son prochain point de contrôle. |
http | Requête réseau interrompue. |
ldap_sync | Connexion LDAP fermée. |
Les étapes restantes ne s'exécutent pas. L'état de l'exécution passe à CANCELED. Le journal enregistre run cancelled by user:<name> comme dernière ligne.
L'annulation est au mieux pour les étapes Python qui bouclent sans rendre la main à la boucle d'événements — voir Diagnostic pour le motif coopératif.
↻ Rejouer
Visible sur les exécutions terminées. Le clic ouvre une fenêtre Rejouer pré-remplie avec le cliché des paramètres de l'exécution d'origine — même forme que la fenêtre Exécuter avec paramètres :
| Champ | Pré-rempli avec |
|---|---|
log_level | Le niveau de l'exécution d'origine. |
| Paramètres partagés | Les paramètres fusionnés de l'exécution d'origine. |
op_kwargs par étape | Les kwargs par étape de l'exécution d'origine. |
enabled par étape | L'état d'activation de l'exécution d'origine. |
L'opérateur peut tout ajuster (cas typiques : changer target_connector de production vers un bac à sable, ou désactiver les étapes 1 à 5 pour rejouer uniquement la fin). La validation déclenche une nouvelle exécution — l'originale reste intacte.
Cas d'usage :
| Motif | Ajustement Rejouer |
|---|---|
| « Relancer la même tâche avec les mêmes paramètres » | Valider sans modification. |
| « Rejouer uniquement l'étape qui a échoué » | Désactiver les étapes en amont ; laisser celle-ci active. |
| « Tester sur la pré-production » | Modifier target_connector. |
| « Investiguer avec le SQL complet » | Passer le niveau de journal en DEBUG. |
Filtrer les exécutions (la vue catalogue Exécutions)
Une page « liste de toutes les exécutions » est accessible depuis le catalogue de tâches en cliquant sur le nom d'une tâche — elle ouvre la liste des exécutions de la tâche, triée du plus récent au plus ancien. Chaque ligne affiche :
| Colonne | Quoi |
|---|---|
| Identifiant d'exécution | Cliquer pour ouvrir le Détail d'exécution. |
| État | Badge coloré. |
| Déclenché par | cron, user:…, api. |
| Démarré / Durée | Horodatage local + temps total de l'exécution. |
| Résumé des étapes | « 7 / 7 ✓ » ou « 4 / 7 — échec à F9202 ». |
Elle sert à :
- Comparer les durées d'une exécution à l'autre (un ralentissement progressif dans un ETL).
- Retrouver la dernière exécution réussie avant une régression.
- Auditer les déclenchements manuels de la semaine écoulée.
Le catalogue Exécutions est par tâche — il n'existe pas aujourd'hui de vue globale « toutes les exécutions de toutes les tâches » ; le regroupement par tâche correspond à l'usage réel des opérateurs.
Pour la suite
- Diagnostic — quand une exécution échoue ou se fige, comment en trouver la cause.
- Notifications — recevoir une alerte en cas d'échec plutôt que d'actualiser la page.
- Administration — rétention, verrou du planificateur, comportement au redémarrage.