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 sept rangées :
| Rangée | Disposition | Widgets |
|---|---|---|
| 1 | 8 + 4 | Santé système · Raccourcis |
| 2 | 4 + 4 + 4 | Planificateur · Courbe d'erreurs · 14j · Taux de relance · 14j |
| 3 | 4 + 4 + 4 | JVM · threads + GC · Débit · 14j · Sessions / Clients actifs |
| 4 | 8 + 4 | Système de fichiers · Temps de traitement par modèle · 14j |
| 5 | 12 | Traitements en cours · direct |
| 6 | 12 | Vérification de configuration |
| 7 | 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.
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.
Planificateur (rangée 2, 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é.
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é.
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.
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.