Aller au contenu

Navigation Runtime

Status: OBSOLETE Superseded by:

  • ../frontend/projections.md
  • ../projections/overview.md
  • ../adapters/wordpress.md

Do not use this document as the current source of truth.

Objective

Definir comment le frontend consomme la navigation publique.

Ce document repond a une seule question strategique :

Comment le frontend consomme-t-il la navigation publique ?

Il ne definit ni la taxonomie publique elle-meme, ni les routes, ni le style visuel.

Historical status

Version : v0.1

Status : historical design draft

Source of Truth

  • Public Navigation Tree definit l'arbre public officiel.
  • Le runtime ne doit jamais inventer une categorie.
  • Toute evolution de navigation doit modifier la documentation avant le code, les seeds, la base ou le cache.

Current State

L'audit confirme deux comportements distincts :

  • le catalogue public consomme deja ccx_navigation_taxonomy_v1 et ccx_catalog_nav_cache_v1 ;
  • le header et la homepage contiennent encore une navigation statique dans le theme.

Preuves principales :

  • ../../wordpress/wp-content/themes/ccx/header.php définit les univers et sous-liens en dur ;
  • ../../wordpress/wp-content/themes/ccx/front-page.php expose encore des cartes de navigation statiques ;
  • ../../plugins/ccx-feeds-industrial/includes/frontend/catalog-router.php construit déjà les chemins catalogue depuis ccx_navigation_taxonomy_v1 ;
  • ../../plugins/ccx-feeds-industrial/includes/governance/catalog-taxonomy/nav-cache.php construit déjà un cache de navigation à partir des offres et de la taxonomie.

Le frontend public n'a donc pas encore un modele unique de navigation.

Executable Model

La chaine cible est :

Public Navigation Tree
-> Navigation Taxonomy
-> Navigation Projection
-> Frontend Consumers

Chaque niveau a une responsabilite unique :

  • Public Navigation Tree gouverne l'arbre public.
  • Navigation Taxonomy traduit cet arbre en structure executable.
  • Navigation Projection fournit un modele lisible, stable et rapide a consommer.
  • Frontend Consumers rendent la navigation sans redefinir les categories.

Le theme devient un renderer.

Le frontend ne doit plus connaitre explicitement :

  • Smartphones ;
  • Informatique ;
  • Gaming ;
  • Photo & Video ;
  • Electromenager ;
  • TV & Audio ;
  • ni aucune autre categorie publique.

Executable Source

La source executable cible est une projection publique de navigation.

Cette projection peut etre servie depuis PHP, base et cache, mais elle doit respecter les principes suivants :

  • une seule forme de lecture pour tous les consommateurs ;
  • aucune logique metier dans le theme ;
  • aucune lecture directe de ccx_offers_norm_v2 depuis les templates ;
  • aucune categorie definie en HTML statique.

Les briques deja presentes et reutilisables sont :

  • ccx_navigation_taxonomy_v1 comme structure de navigation publique executable ;
  • ccx_catalog_nav_cache_v1 comme acceleration de lecture ;
  • les helpers de resolution et de slug du catalogue frontend.

La projection de navigation doit fournir une structure stable et consommable sans logique supplementaire.

Champs minimums :

  • title
  • slug
  • level
  • parent
  • children
  • is_active
  • sort_order
  • product_count si disponible
  • canonical_url

Contraintes de projection :

  • elle represente uniquement la navigation publique validee ;
  • elle respecte la profondeur maximale de trois niveaux ;
  • elle ne derive jamais de categories marques, technologies, capacites ou etats d'offre ;
  • elle reste lisible sans jointure metier cote theme ;
  • elle peut etre mise en cache sans modifier sa structure publique.

Consumers

Les consommateurs frontend autorises sont :

  • Header / mega menu
  • Homepage
  • Footer
  • Breadcrumbs
  • Sitemap
  • Search landing pages, plus tard

Chaque consommateur lit la projection.

Aucun consommateur ne definit ses propres categories.

Consequences par consommateur :

  • le header rend les univers, categories et sous-categories depuis la projection ;
  • la homepage lit la meme projection pour exposer des points d'entree conformes ;
  • le footer n'expose qu'une navigation derivee de cette meme source ;
  • les breadcrumbs suivent la hiérarchie publique, pas une structure locale au template ;
  • le sitemap public derive de la meme representation ;
  • les futures pages de recherche ne peuvent pas introduire une arborescence parallele.

Performance Rules

  • aucune requete lourde n'est autorisee dans le header ;
  • la lecture frontend doit passer par une projection ou un cache adapte ;
  • un consommateur ne doit pas reconstruire la navigation depuis les offres ;
  • la projection doit etre exploitable en lecture directe ;
  • le rendu du header doit rester compatible avec un chargement sur toutes les pages publiques.

Fallback Rules

Si la projection est indisponible :

  • le site doit rester navigable ;
  • le fallback doit etre compact ;
  • le fallback doit pointer uniquement vers les neuf univers canoniques ;
  • le fallback ne doit contenir aucune sous-categorie legacy ;
  • le fallback doit rester conforme a Public Navigation Tree, jamais a un ancien header statique.

Le fallback est une mesure de continuite.

Il ne devient jamais la source de verite.

Prohibited Patterns

Sont interdits :

  • les categories codees en dur dans header.php ;
  • le HTML de mega-menu dependant d'univers specifiques ;
  • la duplication de categories entre header, homepage, footer et breadcrumbs ;
  • la lecture directe de ccx_offers_norm_v2 depuis le theme ;
  • la logique metier dans le theme ;
  • les categories de marque, technologie, capacite ou etat d'offre ;
  • toute structure frontend qui contourne la projection publique.

Migration Plan

BC-049.1

  • documenter le runtime de navigation publique.

BC-049.2

  • creer le provider ou la projection de navigation publique.

BC-049.3

  • remplacer le mega-menu statique par un renderer generique.

BC-049.4

  • aligner homepage, footer, breadcrumbs et sitemap sur la meme projection.

BC-049.5

  • supprimer les reliquats statiques restants.

Certification Criteria

BC-049.1 est certifiable si :

  • le frontend lit un seul modele de navigation publique ;
  • aucun consommateur ne definit ses propres categories ;
  • le header peut devenir conforme a Public Navigation Tree sans redefinir l'arbre ;
  • la homepage peut lire la meme projection ;
  • les breadcrumbs peuvent lire la meme projection ;
  • le sitemap peut lire la meme projection ;
  • la documentation gouverne ;
  • le runtime implemente.

See Also