Tableau de bord IT
Le Tableau de bord IT est la vue opérationnelle de NomaUBL destinée aux équipes techniques — une page unique qui regroupe 14 widgets couvrant la JVM, la base de données, le système de fichiers, le pipeline de traitement, le planificateur et un flux en direct des traitements en cours. Il complète le tableau de bord métier : le public métier voit les volumes de factures et les délais d'aller-retour PA, l'équipe IT voit la pression heap, les événements START / END pilotés par le planificateur et l'usage disque.
Chaque rafraîchissement appelle quatre endpoints back-end en parallèle — /api/system, /api/dashboard/tech, /api/dashboard/log-tail, /api/dashboard/config-check — pour que la page se charge en un seul aller-retour et reste légère pour la base.
La page fonctionne quel que soit le système source — JD Edwards, SAP, NetSuite ou ERP personnalisé. Les widgets lisent des métriques niveau hôte et le journal de traitement de NomaUBL ; le format source est transparent à ce stade.
Le Tableau de bord IT est une nouvelle page. Le widget Planificateur, qui se trouvait sur le tableau de bord métier, a migré ici. L'ActivityTracker en mémoire introduit dans la même version alimente la carte Sessions actives quand l'authentification est désactivée.
Accès à la page
- Barre latérale → Documentation → Tableau de bord IT.
- La page se rend même sans authentification — le bloc Santé système renvoie la JVM, le build, l'OS et le mode PA quel que soit l'état de l'auth. Les widgets adossés à la base affichent Non configurée tant qu'aucun connecteur n'est en place.
Vue d'ensemble
La grille utilise align-items: stretch et chaque carte grandit avec flex: 1 à l'intérieur de son span de colonnes — les cartes d'une même rangée alignent leur bord bas, indépendamment de la hauteur de leur contenu.
Disposition
La grille à 12 colonnes est organisée en huit rangées :
| Rangée | Disposition | Widgets |
|---|---|---|
| 1 | 8 + 4 | Santé système · Raccourcis |
| 2 | 4 + 4 + 4 | Échec d'envoi · Courbe d'erreurs · 14j · Taux de relance · 14j |
| 3 | 4 + 4 + 4 | Planificateur · Débit · 14j · Sessions / Clients actifs |
| 4 | 4 + 8 | JVM · threads + GC · Système de fichiers |
| 5 | 8 + 4 | (réservé) · Temps de traitement par modèle · 14j |
| 6 | 12 | Traitements en cours · direct |
| 7 | 12 | Vérification de configuration |
| 8 | 5 + 7 | Tables de base · Erreurs récentes |
Un bouton Rafraîchir dans l'en-tête de la page relance les quatre endpoints en parallèle.
La carte Échec d'envoi est arrivée en 2026.06.03, en même temps que la page Reprise auto dans les Paramètres — la relance manuelle en un clic sur le tableau de bord et le passage planifié de nuit utilisent le même chemin de relance sous-jacent.
Widgets
Santé système (rangée 1, span 8)
Métriques JVM, base et hôte. Les valeurs les plus surveillées sont colorées :
| Métrique | Source | Règles de teinte |
|---|---|---|
| Java | Runtime.version() | neutre. |
| Heap | MemoryMXBean.getHeapMemoryUsage() | vert < 60 %, orange < 85 %, rouge ≥ 85 %. |
| Uptime | RuntimeMXBean.getUptime() | neutre, formaté en Xj Yh / Xh Ym. |
| Cœurs CPU | Runtime.availableProcessors() | neutre. |
| Base | dialect.ping() | vert < 100 ms, orange < 500 ms, rouge au-delà ou en cas d'erreur. |
| Schéma | configuration db-nomaubl | neutre. |
| OS | os.name + os.arch | neutre. |
| Mode PA | indicateur paUseMock | vert sur Live, orange sur Mock. |
Le sous-titre de la carte affiche, à droite, la version du build et la date du build issues de nomaubl-version.properties.
Raccourcis (rangée 1, span 4)
Liste statique de raccourcis — les pages les plus utilisées par l'opérateur IT. Chaque lien utilise le même mécanisme onNavigate que la barre latérale et ouvre directement la page cible. Cibles par défaut : Paramètres, Journal de traitement, Versions de fichiers, Références croisées.
Échec d'envoi (ligne 2, largeur 4) (2026.06.03)
Une seule carte en grand chiffre qui indique combien de factures sont actuellement en Échec d'envoi (statut 9904). Quand le compteur n'est pas à zéro, un bouton Tout renvoyer (N) sous le chiffre rejoue chaque facture concernée vers la Plateforme Agréée. Le clic ouvre la fenêtre de progression partagée — compteurs en direct, bouton Annuler et bouton Continuer en arrière-plan qui masque la fenêtre pendant que le traitement se poursuit côté serveur. Le renvoi est limité à 100 ms par appel pour que la PA reste dans son enveloppe de débit.
| Élément | Comportement |
|---|---|
| Compteur | Total en direct — rafraîchi par le bouton Rafraîchir de la page et à chaque montage du tableau de bord. Affiché en rouge quand il n'est pas à zéro. |
| Bouton Tout renvoyer (N) | Désactivé quand le compteur est à zéro. Un clic rejoue chaque facture au statut 9904 ; la fenêtre de progression s'ouvre. |
| Fenêtre de progression | Compteurs en direct (traitées / réussies / échecs), bouton Annuler et bouton Continuer en arrière-plan — même composant que pour chaque traitement long de la plateforme. |
| Limitation de débit | 100 ms entre deux appels — fixé dans le code, non paramétrable ici par l'opérateur. La planification Reprise auto propose sa propre limite pour l'équivalent planifié. |
Le bouton manuel sert à un renvoi ponctuel en pleine journée (une coupure PA passagère qui s'est résolue, un petit lot à relancer tout de suite). Pour des relances de nuit sans supervision, planifier une ligne sur la page Reprise auto — même chemin de code, sans intervention d'un opérateur.
Planificateur (rangée 3, span 4)
Liste tous les jobs actifs du planificateur :
- Jobs intégrés —
retrieve-statuses,notif-purge,clean-archive, etc. — pilotés par les intervalles de polling deBackgroundScheduler. fetch-allpar modèle — une ligne par modèle avec un job d'extraction / synchronisation programmé.- Passages Reprise auto par ligne (2026.06.03) — une ligne par entrée enregistrée sur la page Reprise auto, avec l'heure planifiée et la liste des statuts ciblés en guise de cadence.
Chaque ligne affiche le nom du job, la cadence, et une pastille de statut (vert actif, bleu prévu sous peu, orange en pause). Le sous-titre indique le décompte des jobs actifs.
Courbe d'erreurs · 14j (rangée 2, span 4)
Sparkline sur 14 jours des événements d'erreur enregistrés dans F564237 (niveau ERROR ou FATAL). Le survol d'un point révèle la date et le compte ; le sous-titre indique la moyenne quotidienne et le total cumulé du jour.
Taux de relance · 14j (rangée 2, span 4)
Un seul grand chiffre : ratio des runs ayant abouti après une ou plusieurs relances sur le total des runs des 14 derniers jours. Le sous-titre donne les valeurs absolues et la variation par rapport à la fenêtre précédente de 14 jours (vert quand le taux baisse, orange quand il monte).
JVM · threads + GC (rangée 3, span 4)
Carte complémentaire de Santé système pour un diagnostic JVM plus poussé :
- Threads — nombre courant + pic.
- Threads démon — démons en cours.
- GC — nom du collecteur + temps total passé en GC.
- Classes chargées — compteur du class-loader, utile pour repérer une fuite metaspace.
Débit · 14j (rangée 3, span 4)
Histogramme journalier des documents traités sur les 14 derniers jours. Cliquer sur une barre ouvre Journal de traitement pré-filtré sur ce jour — chemin direct entre « la barre du jour est courte » et « voyons ce qui a vraiment tourné ».
Sessions / Clients actifs · 15 min (rangée 3, span 4)
Deux modes :
- Auth activée — titre Sessions actives. Liste chaque session présente dans
F564252dont leSSETDTIMest dans la dernière heure. - Auth désactivée — titre Clients actifs · 15 min. Liste chaque IP touchée par
WebServer.handle()dans les 15 dernières minutes, source :ActivityTrackeren mémoire (aucune ligneF564252n'existe quand l'auth est coupée).
Dans les deux cas, chaque ligne affiche IP / utilisateur, l'horodatage du dernier accès et le compteur de hits.
Système de fichiers (rangée 4, span 8)
Pour chaque chemin configuré (appHome, processHome, dirInput, singleOutput, burstOutput, dirArchive, dirError) :
- Espace libre / total sur le volume sous-jacent.
- Nombre de fichiers d'un parcours récursif du chemin, plafonné à 5000 fichiers pour rester rapide.
Les valeurs de chemin contenant des jokers d'exécution (%TEMPLATE%, %FILE_NAME%) sont tronquées au premier joker rencontré ; le rapport porte alors sur le répertoire le plus profond existant par sa forme au-dessus. dirOutput est exclu : il est toujours couvert par processHome.
Temps de traitement par modèle · 14j (rangée 4, span 4)
Temps moyen de traitement de bout en bout par modèle, en secondes, sur les 14 derniers jours. La carte charge les événements START / END de F564237 à plat et les apparie côté Java sur (FEWDS1|FEUPMJ) — la précédente version utilisait une auto-jointure SQL avec un FETMPL ambigu et une arithmétique e.FEUPMT - s.FEUPMT incorrecte ; ce point est corrigé.
Décomposition par étape quand debugProfile est actif (2026.05.9)
Quand le commutateur debugProfile sur le modèle global est à Y, chaque exécution écrit une ligne par étape du pipeline dans F564237 — analyse d'en-tête, analyse des lignes, validation, émission UBL, envoi PA. La carte Temps de traitement par modèle les fait remonter sous forme de décomposition empilée sous les totaux par modèle — une étape lente se repère d'un coup d'œil sans plonger dans le journal d'exécution.
Le flux Traitements en cours en dessous balise aussi les lignes avec le nom de l'étape, ce qui permet de trier un lot lent en direct. Laisser debugProfile à N en production ; passer à Y le temps d'un lot pour analyser un pipeline lent — les lignes additionnelles gonflent vite F564237 sous charge.
Traitements en cours · direct (rangée 5, span 12)
Flux en direct des jobs qui démarrent et se terminent — la plupart sont lancés par le planificateur en arrière-plan. Le widget interroge F564237 toutes les 5 secondes avec un curseur incrémental since= ; chaque ligne porte un badge de méthode coloré :
| Badge | Signification |
|---|---|
| START (vert) | Un job vient de démarrer — fetch-all, retrieve-statuses, un traitement entrant, etc. |
| END (bleu) | Le END correspondant à un START précédent, avec la durée écoulée quand elle est disponible. |
| ERROR (rouge) | Une erreur émise pendant le job — les mots-clés ERROR, FATAL, FAILED reclassent toute ligne en rouge, même quand sa méthode était START ou END. |
| INFO (atténué) | Toute autre ligne écrite par le journal d'exécution pendant le job. |
Chaque ligne affiche le badge, le modèle + le mode + le fichier source quand ils sont présents, le message et l'horodatage. Une pastille verte pulsante apparaît à côté du titre quand un événement a été observé dans les 30 dernières secondes (un traitement est en cours) ; elle bascule en gris quand le flux est inactif depuis plus longtemps.
Le flux est dédupliqué sur FEUKID — la même ligne ne peut donc pas apparaître deux fois entre deux sondages, même en cas de décalage d'horloge. Un bouton Pause / Reprendre à droite du titre fige le sondage : utile pour lire une ligne longue sans la voir défiler.
La liste défilante est plafonnée aux 100 derniers événements ; les lignes plus anciennes sortent par le bas à mesure que de nouvelles arrivent. Pour une analyse approfondie, utiliser la page Journal de traitement, qui conserve l'historique complet avec les vues groupées par job.
Vérification de configuration (rangée 6, span 12)
Valide la configuration orientée connecteur utilisée aujourd'hui par l'application. Les anomalies sont listées par zone avec une sévérité (rouge erreur, orange avertissement, bleu information). La vérification couvre :
| Zone | Valide |
|---|---|
| Connecteur PA | baseUrl ; authType ; identifiants selon le type d'auth — OAUTH2 (clientId/secret/endpoint token), BASIC (utilisateur/mot de passe), BEARER (token) ; présence d'un endpoint nommé import (avertissement si import-status manque). |
| e-Directory | baseUrl et endpoint directory-check quand checkDirectory=Y. |
| e-Reporting | issuerSiren, frequency, flux quand sendToPA=Y. |
Les anciennes vérifications sur paApiBaseUrl / paApiUsername / ublXsdPath / ublSchematronPath ont disparu — ces propriétés n'existent plus dans le schéma connecteur. Les ressources de validation (XSD / Schematron) sont embarquées dans le JAR.
Une vérification propre s'affiche en ✔ 0 anomalie en vert ; sinon la carte liste les anomalies par ordre de sévérité.
Tables de base (rangée 7, span 5)
Nombre de lignes par table NomaUBL — factures (F564231), cycle de vie (F564235), validation (F564236), journal d'exécution (F564237), notifications (F564253), e-Reporting (F564260–F564262), auth (F564250–F564252, F564254). Utile pour repérer une croissance inattendue (par exemple une table de notifications qui devrait avoir quelques centaines de lignes mais en a des millions).
Erreurs récentes (rangée 7, span 7)
Les 8 derniers événements de F564237 filtrés sur level IN ('ERROR', 'FATAL'). Chaque ligne affiche le badge de niveau, le code de cycle de vie et le triplet, le message et un horodatage relatif (il y a 2 min, il y a 1 h). Cliquer sur une ligne ouvre l'entrée correspondante dans Journal de traitement, où se trouvent la stack complète et les options de relance.
Fenêtre de progression partagée
Ajoutée en 2026.06.03. Chaque traitement long de la plateforme — Tout renvoyer depuis cette page, le passage Reprise auto, l'export Vue détaillée sur Erreurs d'intégration, les futurs ré-imports en masse — ouvre la même fenêtre modale. Un seul composant, un seul jeu d'habitudes.
La fenêtre reste ouverte par défaut tant que le traitement tourne ; la fermer est une action volontaire.
| Élément | Rôle |
|---|---|
| Barre de progression | Compteur visuel traitées-sur-total. Mise à jour environ toutes les 250 ms à mesure que le serveur pousse des incréments. |
| Compteurs en direct | Trois nombres : Traitées (total touché jusqu'ici), Réussies, Échecs. Chaque compteur est cliquable quand il n'est pas à zéro et ouvre un petit panneau avec les triplets de factures concernés — un échec sur la facture 12345 / RI / 00070 se trouve donc à un clic de son entrée de journal. |
| Annuler | Arrête proprement le traitement entre deux factures. Les factures déjà traitées conservent leur nouvel état ; les autres ne sont pas touchées. Le bouton est remplacé par Annulé (grisé) quand le signal est pris en compte. |
| Continuer en arrière-plan | Masque la fenêtre sans arrêter le traitement. Le travail se poursuit côté serveur ; une petite bannière persistante en haut de la page affiche le compteur et un lien Voir la progression. Cliquer sur le lien rouvre la fenêtre à tout moment. |
| Terminé | Remplace Annuler / Continuer en arrière-plan à la fin du traitement. Une ligne de résumé affiche total / réussies / échecs et la durée écoulée. |
Plusieurs traitements peuvent coexister — chacun obtient sa bannière une fois envoyé en arrière-plan. Fermer l'onglet du navigateur n'annule pas le travail ; l'exécution côté serveur continue. Rouvrir la page fait réapparaître la bannière jusqu'à la fin du traitement.
Rafraîchissement des widgets
Le bouton Rafraîchir (ou le montage de la page) appelle quatre endpoints en parallèle :
| Endpoint | Alimente |
|---|---|
GET /api/system | Santé système, JVM · threads + GC, Système de fichiers |
GET /api/dashboard/tech | Débit, Courbe d'erreurs, Taux de relance, Temps par modèle, Sessions actives, Tables de base, Erreurs récentes |
GET /api/dashboard/log-tail | Traitements en cours · direct (incrémental, sondage 5 s avec since=) |
GET /api/dashboard/config-check | Vérification de configuration |
La carte Planificateur consomme l'endpoint existant GET /api/scheduler/status, ce qui permet de partager les données déjà chargées par le tableau de bord métier lors d'une navigation dans la même session. Chaque appel échoue indépendamment — une base mal configurée renvoie Non configurée sur la carte de données sans casser Santé système ou le journal en direct.
Conseils & bonnes pratiques
- Surveiller Heap, ping base et espace disque. Trois signaux d'alerte précoce — la dérive du heap avant un OOM, la latence base avant un blocage, le volume archive avant la saturation disque.
- Le flux Traitements en cours vaut mieux que
tail -f. Il montre les jobs du planificateur qui démarrent et se terminent en direct, les erreurs ressortent en rouge, et le flux résiste à une déconnexion SSH. À garder ouvert pendant une mise en production ou un import en lot — la plupart des régressions y apparaissent en quelques secondes, et la pastille verte pulsante indique si quelque chose tourne réellement à cet instant. - La vérification de configuration doit toujours être verte. Un nombre d'anomalies non nul après un déploiement est le chemin le plus rapide vers « qu'est-ce qui a changé ? ». À lancer sur chaque environnement après chaque édition de configuration.
- Erreurs récentes plutôt que Tables de base. En triage d'incident, le flux des erreurs récentes est plus dense au pixel ; la carte des tables sert au suivi de tendance sur plusieurs jours.
- Une liste Clients actifs vide ne signifie pas que personne n'utilise l'application. Avec l'auth activée, les sessions de plus d'une heure tombent de la liste — la base les conserve dans le cycle de vie. La carte montre qui est là maintenant, pas qui était là ce matin.
- Les pics de Temps par modèle vont avec les creux de Débit. Quand une grande barre bleue dans Débit est suivie d'un modèle lent le lendemain, la file remonte — l'équipe IT peut anticiper en ajustant la cadence du planificateur.