Catalogue des filtres

◆ Ingénieur IA

Les filtres permettent à l’utilisateur de restreindre les données affichées dans un dashboard. Huit types existent. Tous partagent un socle de champs communs et un même principe : une valeur neutre (« All » / « Tous ») ne doit appliquer aucune condition — le front envoie [] et l’API remplace par 1=1.

Champs communs

Requis pour tous les types :

Champ

Rôle

filterId

Identifiant unique (chaîne de chiffres).

field

Colonne ciblée par la condition.

label

Libellé affiché.

type

Un des huit types ci-dessous.

values

Dictionnaire des valeurs / requête d’options.

table

Table source des options.

Optionnels (valeurs par défaut indiquées) :

Champ

Défaut

Rôle

db

postgre

Base de données (postgre / mongo).

query

Requête personnalisée de chargement des options (sinon construite depuis table/field/<FILTER>).

exclude

false

Si true, condition != ou NOT IN.

disableFilterQuery

false

Bloque les requêtes des charts si ce filtre est vide.

queryFields / queryConnector

Champs multiples de la condition et connecteur (AND / OR).

filterParents / requiredParents

Dépendances hiérarchiques entre filtres (parent → enfant).

considerOtherFilters

Le chargement des options tient compte des autres filtres actifs.

helpMarkdown

Texte d’aide en Markdown affiché via une icône info (assaini côté front).

Note

Le champ helpMarkdown est un contrat de configuration/UI, pas un paramètre SQL. Absent, null ou vide → aucune icône d’aide. Le type hidden n’affiche jamais d’icône.

Les huit types

select

Liste déroulante à sélection unique. Côté API : field = 'value' ou 1=1 si valeur neutre. Marketplace récent : pas d’entrée « Tous » dans la liste ; une première option peut être appliquée par défaut.

filtre select

Rendu du filtre select.

selectWithSearch

Liste déroulante à sélection unique avec champ de recherche (debounce 150 ms, filtrage côté client, pagination « + N autres… »). Comportement SQL identique à select.

filtre selectWithSearch

Rendu du filtre selectWithSearch.

multi

Sélection multiple au niveau du schéma et de l’API (plusieurs valeurs → IN (...)). Le Marketplace ne rend pas de bloc dédié pour multi : l’UI multiple est en pratique gérée par multi-basic.

filtre multi

Rendu du filtre multi.

multi-basic

Sélection multiple avec interface dédiée : chips, option « All » / « Tous », recherche avec support du ; pour ajouter plusieurs tokens, bouton clear. API : plusieurs valeurs → IN (...) ; aucune ou « All » → 1=1. Le champ values.value (array) peut définir des valeurs par défaut.

filtre multi-basic

Rendu du filtre multi-basic.

date

Plage de dates (start / end). API : field >= 'start' AND field <= 'end'. Marketplace : mat-date-range-input avec reset et picker. Les options ne sont pas rechargées par l’API.

filtre date

Rendu du filtre date.

hidden

Filtre invisible : pas d’affichage dans l’UI. La valeur est fixée par la configuration et incluse dans les selected_options. Logique API identique à select.

filtre hidden

Rendu (absence d’affichage) du filtre hidden.

llmdocuments

Recherche sémantique / RAG : le texte saisi est transformé en vecteur, et la condition générée est un ORDER BY par similarité (field <=> 'vector'), pas une clause WHERE. Marketplace : barre de recherche (input + Enter) ; valeur vide → pas de filtre.

filtre llmdocuments

Rendu du filtre llmdocuments.

Exemple complet

- filterId: "71"
  field: metier
  label: Métiers
  type: selectWithSearch
  table: table_result
  values:
    query: "SELECT DISTINCT metier AS value FROM <project_id> WHERE <FILTER>"
  helpMarkdown: |
    **Définition :**
    Liste des métiers rattachés au périmètre sélectionné.

Dépendances hiérarchiques

Un filtre enfant peut dépendre d’un ou plusieurs parents via filterParents et requiredParents : tant que les parents requis ne sont pas renseignés, l’enfant reste inactif. Le chargement des options de l’enfant injecte alors les valeurs des parents dans son <FILTER>.

- filterId: "4"
  field: brandref
  label: Marque
  type: multi-basic
  table: products
- filterId: "5"
  field: nameref
  label: Produit
  type: multi-basic
  table: products
  filterParents: ["4"]
  requiredParents: ["4"]