Sources système
Les composants de données se lient normalement à une table. Certains ne le font pas : une grille d'exécutions, un journal d'audit ou une liste de résultats de recherche globale lit depuis un point de terminaison de la plateforme qui n'est pas l'une de vos tables.
Vous pouvez lier un tel composant en ligne avec dataSource: { system: { endpoint: … } }. Dès l'instant où deux composants lisent le même point de terminaison, ce chemin brut est dupliqué dans votre configuration. app.systemSources déclare chaque point de terminaison une seule fois, sous un nom :
systemSources:
- name: runs
endpoint: /api/admin/automations/runs
- name: failed-runs
endpoint: /api/admin/automations/runs
query:
status: failedLes composants référencent ensuite le nom :
- type: data-table
dataSource:
systemSource: runsPropriétés d'une entrée
| Propriété | Description |
|---|---|
name |
Nom de référence utilisé par { systemSource: <name> }. En kebab-case minuscule, unique au sein du catalogue. |
endpoint |
Le point de terminaison de lecture depuis lequel récupérer les lignes (par ex. /api/admin/automations/runs). |
rowsKey |
Clé du tableau de lignes dans l'enveloppe de réponse. Vaut items par défaut. |
idKey |
Clé de l'identifiant unique de chaque ligne. Vaut id par défaut. |
totalKey |
Clé du compte total dans l'enveloppe. À défaut, le nombre de lignes renvoyées fait office de repli. |
query |
Paramètres de requête statiques fusionnés dans chaque requête vers le point de terminaison. |
Une entrée de catalogue remplace directement la forme system en ligne — un composant qui la référence lit exactement les mêmes champs qu'il aurait lus en ligne, de sorte que passer de l'une à l'autre ne change jamais le composant.
Deux sources, un point de terminaison
query est ce qui rend les sources nommées dignes d'être déclarées. Le même point de terminaison, avec des paramètres statiques différents, devient deux sources distinctes et auto-descriptives :
systemSources:
- name: open-tickets
endpoint: /api/admin/tickets
query:
status: open
- name: closed-tickets
endpoint: /api/admin/tickets
query:
status: closedChacune tient alors en un mot à l'endroit de la liaison, et le filtre vit à un seul endroit au lieu d'être redit dans chaque composant.
Quels composants en acceptent une
N'importe quel composant lié à des données : data-table, list, gallery, kanban, calendar, chart, kpi et data-timeline. Voir Composants de données pour ce que chacun rend.
Flux à curseur
Certains points de terminaison de la plateforme paginent par curseur plutôt que par numéro de page : chaque réponse porte un jeton pour les lignes situées après celles qu'elle a renvoyées, et ne rapporte aucun total. Les exécutions d'automatisations, le journal d'audit et les conversations d'agents se lisent tous ainsi — un flux encore en cours d'écriture n'a pas de décompte stable à rapporter.
Une grille liée à une telle source obtient une surface différente du pagineur numéroté :
| Source paginée par numéro | Flux à curseur |
|---|---|
| Pagineur numéroté, précédent/suivant | Une seule commande Charger plus |
| Chaque page remplace la précédente | Chaque page est ajoutée sous les lignes déjà à l'écran |
| Un total « x sur N » | Aucun total, et aucun « x sur N » |
Cela vaut même lorsque le composant déclare pagination. Un pageSize fixe toujours le nombre de lignes demandées à chaque requête, mais le pagineur qui serait normalement dessiné n'est pas rendu et aucun total n'est affiché. Ce n'est pas un manque à contourner : un point de terminaison à curseur ne rapporte jamais combien de lignes existent, donc tout « x sur N » à l'écran serait un nombre que le serveur n'a jamais envoyé — et un opérateur lit un total affiché comme un décompte.
Ajouter plutôt que remplacer découle de la même forme. Un curseur n'avance que vers l'avant : échanger la première page contre la deuxième mettrait hors de portée, pour le reste de la session, les lignes que le lecteur a déjà vues.
Changer le terme de recherche, le tri ou un filtre démarre une séquence différente : les lignes accumulées et le jeton sont donc tous deux abandonnés, et le flux repart du début. « Charger plus » reporte la recherche et le tri actifs dans la requête suivante, de sorte qu'une continuation n'élargit jamais silencieusement le flux non filtré.
Taille de page
query peut fixer la taille de page du point de terminaison lui-même :
systemSources:
- name: recent-runs
endpoint: /api/admin/automations/runs
query:
limit: '5'Un limit déclaré ainsi l'emporte sur le pagination.pageSize du composant. Le nommer sur la source, c'est l'auteur qui dit ce qu'est une page de ce point de terminaison : c'est l'énoncé le plus spécifique — et il s'applique à tous les composants liés à la source, de sorte que deux grilles lisant le même flux ne peuvent pas être en désaccord sur ce qu'elles demandent.
Omettez limit et le pageSize du composant est utilisé à la place.
Validation
- Le catalogue doit déclarer au moins une source lorsqu'il est présent.
- Chaque
namedoit être unique — un doublon rendrait une référence ambiguë. - Chaque référence
{ systemSource: <name> }doit pointer vers une entrée déclarée.
Les trois sont vérifiées au décodage de la configuration : sovrium validate attrape donc une référence mal orthographiée hors ligne, avant que l'application ne démarre.
Les sources système sont en lecture seule. Elles récupèrent des lignes pour l'affichage. Les écritures passent par l'API des enregistrements ou par une automatisation — voir CRUD et upsert.
Pages connexes
- Liaison de données — le module
dataSource, la liaison à une table et la formesystemen ligne. - Composants de données — les composants qui consomment une source.
- Présentation des pages — la place d'un composant lié dans l'arbre de la page.
- Référence API — les points de terminaison qu'une source système peut lire.
- Tableau de bord d'administration — la console opérateur construite à partir de ces liaisons.
Dernière mise à jour 1 septembre 2026
Cette documentation a été rédigée avec de l'IA : des erreurs ou du contenu obsolète sont donc possibles. Sovrium est en bêta. Les contributions et corrections sont les bienvenues.