Aller au contenu principal

UI des Paramètres

La page Paramètres (icône engrenage dans l'en-tête, visible des utilisateurs disposant de la permission settings:read) est l'éditeur in-app pour chaque fichier TOML par section. Chaque type de configuration dispose d'un éditeur dédié — un formulaire piloté par schéma généré à partir des modèles Pydantic que le backend utilise pour charger le fichier. Un éditeur Monaco brut figure sur chaque onglet comme échappatoire quand le formulaire d'un éditeur ne présente pas le champ dont vous avez besoin.

Chaque enregistrement écrit le TOML sur disque, puis déclenche un rechargement côté serveur — le changement est actif dans le même onglet du navigateur sans redémarrage.


Vue d'ensemble

Paramètres — un éditeur par type de configurationONGLETSPoolsConnecteursDictionnaireÉcransMenusTableaux de bordGraphiquesJobs+ Technique+ TOML brutÉDITEUR POOLSdefaultsqlite+aiosqlite:///liberty.dbconnectécrmpostgresql+asyncpg://crm@db/crmconnectéjdedwardsoracle+oracledb://jde@orcl:1521/PDB1hors ligne+ Nouveau poolTester la connexionEnregistrer et recharger

La colonne des éditeurs à gauche est affichée repliée ; chaque entrée ouvre un panneau de détail à droite (la capture montre l'éditeur Pools).


Les éditeurs

La page Paramètres présente neuf éditeurs plus le tableau de bord technique et l'échappatoire TOML brute :

OngletÉditePermission
Poolsconnectors.toml → blocs [pools.*] — URLs JDBC, dialectes, tailles de pool, identifiants.settings:pools
Connecteursconnectors.toml → blocs [connectors.*] — requêtes SQL, endpoints HTTP, auth API.settings:connectors
Dictionnairedictionary.toml — métadonnées de colonne : libellés, formats, énumérations, lookups, validation.settings:dictionary
Menusmenus.toml — arborescences du menu latéral par app, dossiers, feuilles et gardes de permission.settings:menus
Écransscreens.toml — grilles, dialogues, onglets, conditions par champ, colonnes d'audit.settings:screens
Tableaux de borddashboards.toml — mises en page stat / bar / line / pie / grid.settings:dashboards
Graphiquescharts.toml — config wrapper Recharts référencée par les tableaux de bord.settings:charts
Jobsplugins/*/jobs.toml — catalogue de jobs Nomaflow par app.settings:jobs
TechniqueLecture seule — stats de pool en direct, verrous d'enregistrement, exécutions de jobs en cours, événements socket récents.settings:technical
TOML brutUn éditeur Monaco par fichier. Charge le fichier tel quel, l'enregistre tel quel. Chemin de dernier recours quand un éditeur manque d'un champ.settings:raw

Les codes de permission sont les chaînes canoniques utilisées par le moteur de rôles — voir Authentification → Rôles et permissions pour savoir comment les accorder.


Comment fonctionne un éditeur

Chaque éditeur suit la même forme :

  1. Vue liste — chaque entrée de la section TOML sous-jacente en tant que ligne.
  2. Panneau de détail — l'entrée sous forme de formulaire piloté par schéma (un champ par attribut Pydantic) plus des onglets secondaires quand le modèle possède des objets imbriqués.
  3. Validation — chaque entrée est contrôlée contre le modèle Pydantic ; une valeur invalide met le champ en rouge et désactive le bouton Enregistrer.
  4. Tester (SQL / HTTP / API uniquement) — exécute la requête ou l'endpoint contre le pool actif et affiche les 50 premières lignes.
  5. Enregistrer et recharger — écrit le TOML sur disque et déclenche un rechargement côté serveur. Le toast de succès porte le chemin du fichier affecté.

Aperçu en direct des champs imbriqués

Pour les configurations à lignes imbriquées (les colonnes d'un écran, les feuilles d'un menu, les étapes d'un job), le panneau de détail utilise une liste glisser-déposer avec des éditeurs en ligne. L'ordre du TOML est préservé exactement tel que l'opérateur l'arrange — le framework ne re-trie pas les entrées à l'enregistrement.

Références inline

Le champ Pool d'un connecteur est une liste déroulante des pools actuellement définis. Le champ Connecteur d'un écran liste chaque connecteur. Le champ Écran d'une feuille de menu liste chaque écran de l'app sélectionnée. La suppression d'une entrée référencée est refusée — l'éditeur indique quelles configurations pointent toujours dessus, avec un lien vers chacune.


Éditeur TOML brut

L'onglet TOML brut ouvre un éditeur Monaco sur le fichier sous-jacent. Les erreurs de syntaxe sont surlignées à la volée ; le bouton Enregistrer reste désactivé tant que le fichier ne parse pas. L'éditeur est volontairement minimal — pas d'aide au renommage, pas de validation contre les modèles Pydantic — car son rôle est de débloquer un opérateur quand un éditeur manque d'un champ précis.

Une boîte de dialogue de confirmation apparaît à l'enregistrement de TOML brut si une édition via éditeur a été faite dans la même session : l'enregistrement brut écraserait le diff de l'éditeur. Choisissez Garder les modifications de l'éditeur pour annuler l'enregistrement brut, ou Utiliser le contenu brut pour rejeter les éditions de l'éditeur et persister le texte brut.


Sémantique d'enregistrement

ÉtapeEffet
Cliquer sur Enregistrer et recharger dans un éditeurLe modèle Pydantic est re-validé. En cas de succès, le TOML est ré-écrit sur disque via tomlkit (les commentaires sont préservés sur les entrées qui en avaient déjà).
Rechargement côté serveurPOST /admin/reload est invoqué avec la portée du fichier — seul le registre affecté est reconstruit. Les requêtes HTTP en cours conservent leur état courant ; les nouvelles requêtes utilisent la configuration rechargée.
Rafraîchissement de l'UILa page Paramètres re-récupère la configuration parsée ; tout autre onglet ouvert sur le même modèle (par exemple la page catalogue des Connecteurs) se rafraîchit via une diffusion Socket.IO.

Pour le contrat de rechargement exact — ce qui recharge, ce qui reste en cours, ce qui retombe sur un redémarrage — voir Rechargement à chaud.


Tableau de bord technique

L'onglet Technique est en lecture seule et fait remonter ce que fait le framework en ce moment :

PanneauContenu
Stats de poolPar pool : connexions ouvertes, inactives, en cours d'utilisation, max, temps de checkout moyen. Se rafraîchit toutes les 2 s via Socket.IO.
Verrous d'enregistrementVerrous actifs pris par le moteur d'écran (une ligne par paire (connector, key) verrouillée).
Exécutions de jobsLes 50 dernières exécutions Nomaflow avec leur état et leur durée écoulée.
Événements socketFin de file des événements récents poussés par le serveur (verrou acquis/libéré, configuration rechargée, étape de job transitionnée).

La page est restreinte aux utilisateurs portant settings:technical et est destinée au diagnostic — aucune action n'est exposée.


Adossé à une surface REST

Chaque éditeur dialogue avec un petit ensemble d'endpoints /admin/config/*. Ils sont documentés dans Référence API REST → Admin config et sont utilisables depuis curl pour le scripting :

EndpointObjectif
GET /admin/config/<section>/parsedRetourne le TOML parsé en JSON.
PUT /admin/config/<section>/parsedRemplace le TOML parsé — le serveur re-sérialise en préservant les commentaires.
POST /admin/config/<section>/rawRemplace le texte TOML brut.
POST /admin/config/connectors/{name}/test-sqlExécute une requête SQL unique et retourne ses premières lignes.
POST /admin/config/api/testExécute un endpoint HTTP et retourne la réponse.
POST /admin/config/renameRenomme une entité à travers chaque fichier TOML qui la référence.
POST /admin/reloadForce un rechargement global (sans changement de fichier).

Conseils et bonnes pratiques

  • Éditez une section à la fois. Un Enregistrer et recharger ne remplace que le registre affecté — un changement multi-sections peut laisser le système dans un état transitoire où une configuration est à jour et une autre non.
  • Utilisez l'échappatoire TOML brut avec parcimonie. Si vous y recourez souvent, ouvrez un ticket — un manque dans un éditeur mérite d'être corrigé côté framework.
  • Lancez Tester avant Enregistrer sur un connecteur SQL ou HTTP. Le framework rejette l'Enregistrer si le parseur de chaîne de connexion échoue, mais il laisse passer une requête que la base refuse à l'exécution. Le bouton Tester attrape cela plus tôt.
  • Restreignez étroitement la permission TOML brut. Les opérateurs qui n'ont besoin que d'éditer un connecteur n'ont pas besoin de pouvoir écraser tout le fichier.
  • Gardez git status propre. Chaque enregistrement dans Paramètres atterrit comme un diff dans liberty-apps ; committez avec un message clair pour que le chemin de retour arrière soit évident.