Scope System

Scope System

Le systeme de scope controle ou les sections reutilisables FaceFlow sont visibles et partagees.

Pour les utilisateurs techniques, le scope est l'une des regles architecturales centrales de FaceFlow. Il decide si une section reutilisable se comporte comme un actif global, un actif de famille de pages ou un actif local a une seule page.

Trois niveaux de scope

  • Site : partage sur l'ensemble du site
  • Layout : partage sur les Pages qui utilisent le meme Layout
  • Page : local a une seule Page

Modele mental technique

Pensez le scope comme un contrat de visibilite et d'impact de changement attache a une instance de section reutilisable.

Conceptuellement :

{
  "component": "announcement-strip",
  "scope": "site"
}

Le champ important n'est pas la forme exacte de stockage. La regle importante est que le scope determine l'ampleur de reutilisation de cette instance et jusqu'ou une edition ulterieure se propagera.

Pourquoi le scope compte

Le scope evite que la reutilisation tourne au chaos.

Sans regles de scope, les equipes :

  • dupliquent le meme bloc partout
  • sur-partagent un bloc qui aurait du rester local
  • perdent la trace des changements qui affectent quelles Pages

Le scope rend ces frontieres explicites.

Modele mental

Scope site
  -> affecte toutes les Pages concernees sur le site

Scope layout
  -> affecte les Pages qui partagent un Layout

Scope page
  -> affecte une seule Page

Ce n'est pas une preference de contenu. C'est une regle d'impact de changement.

Exemple de mapping d'instances

Un assemblage simplifie de Page peut ressembler a ceci :

Layout: docs-shell

Scope site:
  announcement-strip

Scope layout:
  docs-sidebar
  docs-subnav

Scope page:
  release-notes-cta
  migration-faq

Ce seul diagramme explique deux faits techniques importants :

  • toutes les sections reutilisables ne sont pas partagees au meme niveau
  • la revue de changement doit prendre en compte le scope avant qu'une edition soit approuvee

Exemples de scope

Scope site

A utiliser lorsqu'une section doit se comporter comme un actif a l'echelle du site.

Exemples :

  • barre d'annonce globale
  • bandeau de support partage dans la navigation
  • bandeau de confiance utilise sur tout le site

Scope layout

A utiliser lorsqu'une section appartient a une famille de pages.

Exemples :

  • sidebar docs utilisee uniquement dans les pages de documentation
  • sous-navigation partagee pour une section de service
  • rail de support partage pour une famille de layout

Scope page

A utiliser lorsque la section est unique a une seule Page.

Exemples :

  • hero ponctuel de campagne
  • bandeau CTA local
  • FAQ ou bloc de preuve specifique a une page

Exemple de rayon d'impact

Le meme type de section peut etre valide a differents scopes selon l'intention :

announcement-strip au scope Site
  -> le changement affecte toutes les Pages concernees

announcement-strip au scope Layout
  -> le changement affecte une famille de pages

announcement-strip au scope Page
  -> le changement affecte une seule Page

C'est pourquoi le scope doit etre choisi selon le rayon d'impact souhaite, pas selon le confort de l'editeur.

Regle de decision

Posez une question :

Si je change cette section, quelles Pages doivent changer avec elle ?

Si la reponse est :

  • "toutes les Pages concernees" -> Site
  • "les Pages de cette famille" -> Layout
  • "seulement cette Page" -> Page

Exemple de composition

Scope site:
  global-announcement

Scope layout:
  docs-sidebar

Scope page:
  pricing-faq

Ce modele garde la reutilisation intentionnelle et rend l'impact des changements previsible.

Conseils architecturaux

Utilisez le scope pour repondre a ces questions techniques :

  • ou cette instance doit-elle etre decouvrable ?
  • combien de Pages doivent heriter des futures editions ?
  • qui doit posseder le changement ?
  • quel niveau de revue est justifie avant publication ?

En pratique :

  • le scope Site exige generalement la revue la plus forte car son impact est large
  • le scope Layout exige une conscience de la famille de pages
  • le scope Page est l'endroit le plus sur pour des experimentations locales

Impact technique

Le scope affecte :

  • l'endroit ou une section reutilisable est disponible
  • combien de Pages un changement peut affecter
  • la maniere dont les equipes raisonnent la propriete
  • la maintenance d'une structure partagee dans le temps

C'est pourquoi les decisions de scope doivent etre traitees comme des decisions d'architecture, pas comme des choix de confort editorial.

Pattern de revue

Quand une equipe propose d'elargir un scope, revoyez cela comme un changement architectural :

page -> layout
  question: cette section est-elle maintenant partagee par une famille de pages durable ?

layout -> site
  question: cette section appartient-elle maintenant au site dans son ensemble plutot qu'a une seule section ?

Si la reponse est "pas vraiment", le scope est probablement elargi trop tot.

Checklist de revue technique

  • le scope choisi correspond-il au rayon d'impact vise ?
  • la section est-elle vraiment reutilisable a ce niveau ?
  • un futur editeur comprendrait-il pourquoi la section est partagee ?
  • la section transporte-t-elle un contenu qui aurait du rester local ?
  • une section censee etre locale est-elle copiee sur de nombreuses Pages ?

Anti-patterns

Evitez :

  • un scope site pour du contenu utile a une seule famille de pages
  • un scope page pour du contenu copie dans de nombreuses Pages
  • un scope layout pour du contenu qui appartient a la coquille globale du site
  • d'elargir le scope juste pour gagner du temps a court terme

Exemple de regle en pratique

barre utilitaire de navigation principale -> scope Site
sidebar de documentation developpeur -> scope Layout
CTA final d'une landing page -> scope Page

Regle de conception associee

Le scope doit etre revu avec la responsabilite de l'objet :

  • si le changement affecte la coquille, revoyez le Layout
  • si le changement affecte un contrat de section reutilisable, revoyez le Component
  • si le changement affecte seulement une experience assemblee, revoyez la Page