Skip to content

epic(ux): mode débutant / expert global (progressive disclosure) #187

Description

@bmatge

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    app:builderTouche l'app apps/builderapp:sharedTouche packages/shared (utilitaires partagés)app:sourcesTouche l'app apps/sourcesepicstatus:parkedParked / on hold — re-évaluer plus tard (souvent : user testing requis avant action)uxUser experience improvements

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions