Skip to main content
Voir en Markdown

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 :

app.yaml
systemSources:
  - name: runs
    endpoint: /api/admin/automations/runs
  - name: failed-runs
    endpoint: /api/admin/automations/runs
    query:
      status: failed

Les composants référencent ensuite le nom :

app.yaml
- type: data-table
  dataSource:
    systemSource: runs

Proprié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 :

app.yaml
systemSources:
  - name: open-tickets
    endpoint: /api/admin/tickets
    query:
      status: open
  - name: closed-tickets
    endpoint: /api/admin/tickets
    query:
      status: closed

Chacune 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 :

app.yaml
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 name doit ê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.

Pages connexes

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.

Construit avec Sovrium