Aller au contenu principal

Context Engine

Statut

Document de cadrage architecture — v1.0 — créé le 2026-06-27.

Rôle

Le Context Engine résout le contexte de consultation avant tout affichage.

Il répond à une question simple :

quel est le bon point de vue pour afficher le contenu utile à cet instant ?

Responsabilités cibles

  • identifier le type de contexte ;
  • déterminer les identifiants structurants ;
  • produire une base territoriale commune ;
  • préparer les permissions et actions utiles à l'UI ;
  • exposer un objet de contexte lisible par le Wall Engine ;
  • permettre aux autres briques, notamment la recherche, de réutiliser la même logique.

Entrées possibles

Le Context Engine peut recevoir comme signaux :

  • la route ;
  • l'état de session ;
  • l'utilisateur connecté ;
  • un acteur ;
  • une organisation ;
  • une sélection de communes ;
  • une position géographique ;
  • une intention issue de la recherche.

Types de contextes visés

Le Context Engine doit pouvoir résoudre au minimum :

  • commune
  • personal
  • actor
  • organization
  • territory
  • search

Sortie attendue

La sortie cible est un WallContext minimal et stable, indépendant de l'interface qui le consomme.

Le Wall Engine ne doit pas reconstruire lui-même le contexte.

Règle clé

Tout contexte doit converger vers une base territoriale explicite, en priorité via communeIds[].

Cette règle permet :

  • d'unifier les filtres territoriaux ;
  • de garder une logique commune entre commune, acteur, personnel et territoire ;
  • de supporter recherche et vues multi-communes sans créer un autre moteur ;
  • d'éviter des cas spéciaux difficiles à maintenir.

Ce que le Context Engine ne doit pas faire

  • ne pas devenir un moteur de rendu ;
  • ne pas porter la navigation complète de l'interface ;
  • ne pas multiplier des schémas différents selon les pages ;
  • ne pas enfermer la logique dans dmv-workspace.

Bénéfices attendus

  • contexte homogène dans tout dmv-public ;
  • recherche plus fiable ;
  • montée en charge plus simple de nouveaux parcours ;
  • moins de duplication frontend ;
  • meilleure lisibilité produit.