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_v1etccx_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.phpdéfinit les univers et sous-liens en dur ;../../wordpress/wp-content/themes/ccx/front-page.phpexpose encore des cartes de navigation statiques ;../../plugins/ccx-feeds-industrial/includes/frontend/catalog-router.phpconstruit déjà les chemins catalogue depuisccx_navigation_taxonomy_v1;../../plugins/ccx-feeds-industrial/includes/governance/catalog-taxonomy/nav-cache.phpconstruit 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 Treegouverne l'arbre public.Navigation Taxonomytraduit cet arbre en structure executable.Navigation Projectionfournit un modele lisible, stable et rapide a consommer.Frontend Consumersrendent 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_v2depuis les templates ; - aucune categorie definie en HTML statique.
Les briques deja presentes et reutilisables sont :
ccx_navigation_taxonomy_v1comme structure de navigation publique executable ;ccx_catalog_nav_cache_v1comme acceleration de lecture ;- les helpers de resolution et de slug du catalogue frontend.
Navigation Projection¶
La projection de navigation doit fournir une structure stable et consommable sans logique supplementaire.
Champs minimums :
titlesluglevelparentchildrenis_activesort_orderproduct_countsi disponiblecanonical_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_v2depuis 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.