Audit UX 2026-05-26 — la recommandation transverse T-2 propose un toggle « Mode débutant / Mode expert » global qui résoudrait structurellement l'écart entre les deux personas. Epic structurant : pose la grille commune pour tous les futurs masquages « trop technique pour P1 », et conditionne plusieurs issues des autres epics (notamment EPIC 2 — masquage Méthode HTTP / En-têtes / Chemin en mode débutant, et EPIC 4 — constructeur visuel forcé en mode débutant).
La décision technique est posée dans ADR-027 — Mode débutant / expert global (UX progressive disclosure) (statut accepted, 2026-05-27) :
- Périmètre : 4 cibles —
apps/sources, apps/builder, apps/dashboard, guide/
- Persistance : localStorage + sync DB (pattern
tour_state v6 ; nouvelle migration v7, endpoint /api/expertise-mode)
- API : event bus + helpers TS dans
@dsfr-data/shared/ui/expertise-mode.ts, + document.body.dataset.expertise pour les masquages CSS purs
- Défaut au 1er accès : bannière onboarding DSFR
fr-notice (« [Mode guidé (recommandé)] [Mode avancé] »)
- Naming UX : « Mode guidé » / « Mode avancé » (
beginner / expert côté code)
- Mode avancé : wording « libellé naturel (libellé technique) »
- Discoverability : liens contextuels « Mode avancé pour voir les options de … » à côté des sections masquées
Findings couverts (rapport d'audit)
- T-2 (transverse) — Adopter une stratégie de progressive disclosure « Débutant / Avancé » globale
- M-B-6 — Builder : toutes les sections collapsibles sont fermées par défaut (ouvrir auto la section suivante quand la précédente est complétée)
Sous-issues
(liens ajoutés après création des enfants)
Critères d'acceptation
- Module
packages/shared/src/ui/expertise-mode.ts exporte getMode(), setMode(mode), onChange(callback), met à jour document.body.dataset.expertise.
- Composant
<expertise-toggle> Web Component placé dans le header DSFR via app-header.ts.
- Migration DB v7 + colonne
users.expertise_mode VARCHAR(10), endpoint GET/PUT /api/expertise-mode, sync identique au pattern tour_state.
- Bannière onboarding
fr-notice au tout 1er accès (détectée par localStorage.getItem('dsfr-data:expertise-mode') === null), choix mémorisé après le 1ᵉʳ clic.
- En mode guidé : Sources masque Méthode HTTP / En-têtes / Chemin ; Builder masque DataBox, Normalisation, Facettes, Mode de génération ; tous les liens contextuels « Mode avancé pour voir … » présents.
- Auto-ouverture de la section suivante du Builder dès que la précédente est complétée (couvre M-B-6).
- Pour les utilisateurs déjà actifs au déploiement : mode initial =
expert (zéro régression).
Référence
- ADR :
~/Documents/Obsidian/30-Knowledge/ADR/ADR-027-mode-debutant-expert-global-ux-progressive-disclosure.md
- Rapport d'audit :
audit-ui-2026-05-26/rapport-audit-ux.md §T-2, §M-B-6
- Plan epic/issues :
~/.claude/plans/je-veux-que-tu-vectorized-raven.md EPIC 6
- Pattern de référence :
users.tour_state (migration v6, endpoint /api/tour-state)
Audit UX 2026-05-26 — la recommandation transverse T-2 propose un toggle « Mode débutant / Mode expert » global qui résoudrait structurellement l'écart entre les deux personas. Epic structurant : pose la grille commune pour tous les futurs masquages « trop technique pour P1 », et conditionne plusieurs issues des autres epics (notamment EPIC 2 — masquage Méthode HTTP / En-têtes / Chemin en mode débutant, et EPIC 4 — constructeur visuel forcé en mode débutant).
La décision technique est posée dans ADR-027 — Mode débutant / expert global (UX progressive disclosure) (statut
accepted, 2026-05-27) :apps/sources,apps/builder,apps/dashboard,guide/tour_statev6 ; nouvelle migration v7, endpoint/api/expertise-mode)@dsfr-data/shared/ui/expertise-mode.ts, +document.body.dataset.expertisepour les masquages CSS pursfr-notice(« [Mode guidé (recommandé)] [Mode avancé] »)beginner/expertcôté code)Findings couverts (rapport d'audit)
Sous-issues
(liens ajoutés après création des enfants)
Critères d'acceptation
packages/shared/src/ui/expertise-mode.tsexportegetMode(),setMode(mode),onChange(callback), met à jourdocument.body.dataset.expertise.<expertise-toggle>Web Component placé dans le header DSFR viaapp-header.ts.users.expertise_mode VARCHAR(10), endpointGET/PUT /api/expertise-mode, sync identique au patterntour_state.fr-noticeau tout 1er accès (détectée parlocalStorage.getItem('dsfr-data:expertise-mode') === null), choix mémorisé après le 1ᵉʳ clic.expert(zéro régression).Référence
~/Documents/Obsidian/30-Knowledge/ADR/ADR-027-mode-debutant-expert-global-ux-progressive-disclosure.mdaudit-ui-2026-05-26/rapport-audit-ux.md§T-2, §M-B-6~/.claude/plans/je-veux-que-tu-vectorized-raven.mdEPIC 6users.tour_state(migration v6, endpoint/api/tour-state)