refactor(sprint-12 web 2026-04-25): centralisation navigation outcomes via ViewPaths constants + ViewPathsBean
DRY strict appliqué pour la maintenance — outcomes de navigation centralisés en un lieu unique
au lieu de paths hardcodés disséminés dans 13+ fichiers.
Architecture
- constants.ViewPaths : classe finale + ~80 constantes public static final String, organisées
par module (Dashboard, Membres, Adhésions, Cotisations, Finance, Crédit, Évènements, Aide,
Communication, Documents, Organisation, Conformité, Admin, Rapports, Souscription, Super-Admin)
- view.ViewPathsBean (@Named "paths" @ApplicationScoped) : expose les constantes en EL aux XHTML
Migration menu.xhtml (65 edits, 0 path orphelin)
- outcome="/pages/secure/dashboard" → outcome="#{paths.dashboard}"
- outcome="/pages/secure/conformite/dashboard" → outcome="#{paths.conformiteDashboard}"
- ... 60+ autres mappings
Migration autres XHTML (13 edits, 12 fichiers)
- index, error/viewExpired, topbar, admin × 4, evenement × 2, organisation × 2, reports
Migration beans Java (4 fichiers, 18 returns)
- NavigationBean : goToProfile, goToSettings (super-admin / admin / membre), getDashboardUrlForUserType
- DashboardMembreBean : 5 méthodes navigation (cotisations, événement, aide, profil)
- MembreDashboardBean : voirEvenement, payerCotisations
- OrganisationsBean : retour vers liste
Test cohérence (3 tests, 100%)
- chaquePathExisteCommeFichier : reflectif sur ViewPaths, vérifie xhtml en classpath
- redirectSuffixFormat : structure REDIRECT_SUFFIX
- aucuneConstanteVide : non-null, non-blank
Dette détectée (3 pages référencées mais inexistantes — flaggées KNOWN_MISSING_PAGES)
- /pages/secure/evenement/bilan-detail.xhtml
- /pages/admin/parametres.xhtml
- /pages/membre/parametres.xhtml
Bénéfices
- 1 seul lieu pour renommer/déplacer une page
- Type-safety compile-time côté Java
- Tests détectent automatiquement les paths orphelins
- IDE complétion sur les getters paths.xxx