Files
unionflow-server-api/ROADMAP_FINALISATION_UNIONFLOW.md
dahoud 4b84ce3bc0 feat: Implémentation des TODOs critiques et suppression données fictives
- Implémentation des 3 TODOs dans DemandesAideBean.java:
  * voirDetails(): Dialogue de détails avec gestion de l'état
  * getChartModelType/Statut(): Documentation sur l'utilisation de JS externe
  * initializeEtapesWorkflow(): Calcul dynamique depuis données backend

- Implémentation des 2 TODOs dans RapportDetailsBean.java:
  * telechargerRapport(): Validation statut + gestion téléchargement
  * regenererRapport(): Régénération avec mise à jour statut

- Implémentation du TODO dans ConfigurationBean.java:
  * chargerSauvegardes(): Préparé pour service backend (pas de données fictives)

- Suppression des données fictives:
  * ConfigurationBean: Sauvegardes ne sont plus générées fictivement
  * DemandesAideBean: Étapes workflow calculées depuis backend réel

Compilation réussie sans erreurs
2025-12-03 20:39:34 +00:00

13 KiB
Raw Blame History

🎯 ROADMAP DE FINALISATION - UNIONFLOW

Date : 2025-01-30
Version : 1.0
Objectif : Terminer intégralement le développement d'UnionFlow


📊 ÉTAT ACTUEL DU PROJET

Modules Complétés

Module Fichiers Statut %
Server API DTOs, Enums Complet 100%
Server Impl - Services 25 services Complet 100%
Server Impl - Resources 18 resources Complet 100%
Server Impl - Entities Toutes entités Complet 100%
Server Impl - Repositories Tous repositories Complet 100%
Client - Beans 36 beans 🔄 Partiel 70%
Client - Pages XHTML 72 pages 🔄 Partiel 60%
Client - Composants Composants réutilisables Complet 100%
Configuration faces-config.xml, web.xml Complet 100%
Tests Tests unitaires/intégration Manquant 5%
Documentation Documentation technique 🔄 Partiel 40%

🚨 PRIORITÉ 1 - CRITIQUE (À FAIRE IMMÉDIATEMENT)

1.1 Résolution des TODOs (215 occurrences)

TODOs dans Beans Client (8 fichiers)

  • MembreListeBean.java (8 TODOs)

    • Implémenter récupération des organisations
    • Implémenter complétion des villes depuis serveur
    • Implémenter complétion des professions depuis serveur
    • Implémenter ouverture dialogue de contact
    • Implémenter envoi de rappels groupés
    • Implémenter export de la sélection
    • Implémenter envoi de messages groupés
    • Mettre à jour liste.xhtml pour utiliser organisationsDisponibles
  • MembreDTO.java (4 TODOs)

    • Intégrer avec module Cotisations (statut cotisation)
    • Intégrer avec module Cotisations (montant dû)
    • Intégrer avec module Événements (événements participés)
    • Intégrer avec module Événements (événements organisés)

TODOs dans Mobile Apps (Flutter)

  • super_admin_dashboard.dart (8 TODOs)
  • dashboard_offline_service.dart (5 TODOs)
  • advanced_dashboard_page.dart (3 TODOs)
  • Tests (20+ TODOs)

Action : Créer un plan de résolution pour chaque TODO avec priorité


1.2 Pages XHTML Manquantes ou Incomplètes

Pages Référencées dans faces-config.xml mais Manquantes

  • /pages/secure/membre/modifier.xhtml (supprimée, doit être recréée ou réutiliser inscription.xhtml)
  • /pages/secure/cotisations.xhtml (référencée dans MembreListeBean)
  • /pages/secure/membre/cotisations.xhtml (référencée dans MembreProfilBean)
  • /pages/secure/rapport/details.xhtml (référencée dans RapportsBean)

Pages Existantes mais Potentiellement Incomplètes

  • Vérifier toutes les pages aide/*.xhtml (15 pages)
  • Vérifier toutes les pages admin/*.xhtml (5 pages)
  • Vérifier toutes les pages adhesion/*.xhtml (8 pages)
  • Vérifier toutes les pages cotisation/*.xhtml (7 pages)
  • Vérifier toutes les pages evenement/*.xhtml (10 pages)
  • Vérifier toutes les pages personnel/*.xhtml (8 pages)
  • Vérifier toutes les pages rapport/*.xhtml (4 pages)

Action : Audit de chaque page pour vérifier :

  • Bean associé existe et est injecté
  • Composants réutilisables utilisés (DRY/WOU)
  • Navigation outcomes utilisés au lieu de chemins directs
  • Validation des formulaires
  • Gestion des erreurs

1.3 Beans Manquants ou Incomplets

Beans Manquants pour Pages Existantes

  • MembreModifierBean (si page modifier.xhtml recréée)
  • CotisationsBean (pour page cotisations.xhtml)
  • RapportDetailsBean (pour page rapport/details.xhtml)
  • AideTraitementBean (pour aide/traitement.xhtml)
  • AideStatistiquesBean (pour aide/statistiques.xhtml)
  • AideTicketsBean (pour aide/tickets.xhtml)
  • AideSupportBean (pour aide/support.xhtml)
  • AideRequestsBean (pour aide/requests.xhtml)
  • AideNouveautesBean (pour aide/nouveautes.xhtml)
  • AideApprovedBean (pour aide/approved.xhtml)
  • AideAproposBean (pour aide/apropos.xhtml)
  • AideSuggestionsBean (pour aide/suggestions.xhtml)
  • AideHistoryBean (pour aide/history.xhtml)
  • AideHistoriqueBean (pour aide/historique.xhtml)
  • AdminSauvegardeBean (pour admin/sauvegarde.xhtml)
  • AdhesionHistoryBean (pour adhesion/history.xhtml)
  • CotisationRemindersBean (pour cotisation/reminders.xhtml)
  • CotisationReportBean (pour cotisation/report.xhtml)
  • EvenementCreateBean (pour evenement/create.xhtml - différente de creation.xhtml?)
  • EvenementCalendarBean (pour evenement/calendar.xhtml - différente de calendrier.xhtml?)
  • EvenementParticipationBean (pour evenement/participation.xhtml)
  • EvenementParticipantsBean (pour evenement/participants.xhtml)

Beans Existants à Compléter

  • MembreListeBean : Compléter méthodes TODO
  • MembreInscriptionBean : Vérifier validation complète
  • OrganisationsBean : Vérifier toutes fonctionnalités
  • EvenementsBean : Vérifier gestion complète événements
  • CotisationsGestionBean : Vérifier toutes fonctionnalités
  • DashboardBean : Vérifier toutes statistiques
  • RapportsBean : Compléter génération rapports

Action : Créer les beans manquants et compléter les existants


1.4 Navigation Outcomes dans Beans

Migration des Chemins Directs vers Navigation Outcomes

Problème : Les beans retournent des chemins directs au lieu d'utiliser les navigation outcomes définis dans faces-config.xml

Exemples à Corriger :

  • MembreListeBean.modifierMembre() : return "/pages/secure/membre/modifier?id=..."return "membreModifierPage?id=..."
  • MembreListeBean.voirProfil() : return "/pages/secure/membre/profil?id=..."return "membreProfilPage?id=..."
  • MembreInscriptionBean.enregistrer() : return "/pages/secure/membre/liste?faces-redirect=true"return "membreListPage?faces-redirect=true"
  • DashboardBean.*() : Tous les retours de navigation
  • MembreProfilBean.*() : Tous les retours de navigation
  • Tous les autres beans (36 beans à vérifier)

Action :

  1. Ajouter constantes OUTCOME dans chaque bean (comme CEADP)
  2. Modifier toutes les méthodes pour retourner ces constantes
  3. Mettre à jour faces-config.xml si nécessaire

⚠️ PRIORITÉ 2 - IMPORTANT (À FAIRE AVANT PRODUCTION)

2.1 Tests

Tests Unitaires Manquants

  • Services (25 services × ~5 tests = 125 tests)

    • MembreServiceTest
    • OrganisationServiceTest
    • EvenementServiceTest
    • CotisationServiceTest
    • AdhesionServiceTest
    • DemandeAideServiceTest
    • PaiementServiceTest
    • DocumentServiceTest
    • NotificationServiceTest
    • WaveServiceTest
    • ComptabiliteServiceTest
    • RoleServiceTest
    • PermissionServiceTest
    • AuditServiceTest
    • ExportServiceTest
    • AnalyticsServiceTest
    • KPICalculatorServiceTest
    • TrendAnalysisServiceTest
    • MatchingServiceTest
    • PreferencesNotificationServiceTest
    • NotificationHistoryServiceTest
    • KeycloakServiceTest
    • AdresseServiceTest
    • TypeOrganisationServiceTest
    • PropositionAideServiceTest
  • Repositories (Tous repositories)

    • Tests de base CRUD
    • Tests de recherche
    • Tests de filtres
  • Mappers (DTO ↔ Entity)

    • Tests de conversion
    • Tests de validation

Tests d'Intégration Manquants

  • Resources REST (18 resources)

    • Tests avec Testcontainers
    • Tests de sécurité (@RolesAllowed)
    • Tests de validation
    • Tests de pagination
    • Tests de recherche
  • Beans JSF (36 beans)

    • Tests de méthodes principales
    • Tests de validation
    • Tests de navigation

Tests End-to-End

  • Scénarios complets utilisateur
  • Tests de performance
  • Tests de charge

Objectif : Couverture de code minimum 80%


2.2 Validation et Gestion d'Erreurs

Validation Côté Client

  • Ajouter validation JSF sur tous les formulaires
  • Messages d'erreur personnalisés
  • Validation en temps réel (AJAX)
  • Validation côté serveur (Bean Validation)

Gestion d'Erreurs

  • Exception handlers globaux
  • Messages d'erreur utilisateur-friendly
  • Logging des erreurs
  • Gestion des erreurs REST (RestClientExceptionMapper)

2.3 Sécurité

Authentification et Autorisation

  • Vérifier tous les @RolesAllowed sur Resources
  • Vérifier sécurité des Beans JSF
  • Tests de sécurité
  • Gestion des sessions
  • Timeout de session

Protection des Données

  • Chiffrement des données sensibles
  • Validation des entrées (XSS, SQL Injection)
  • CSRF protection
  • Audit de sécurité

📋 PRIORITÉ 3 - AMÉLIORATION (OPTIMISATION)

3.1 Performance

Optimisations Base de Données

  • Index sur colonnes fréquemment recherchées
  • Requêtes optimisées (N+1 queries)
  • Cache (Caffeine, Redis)
  • Pagination efficace

Optimisations Frontend

  • Lazy loading des composants
  • Optimisation des requêtes AJAX
  • Cache côté client
  • Compression des ressources

3.2 Expérience Utilisateur

Améliorations UI/UX

  • Feedback utilisateur (loading, success, error)
  • Confirmations pour actions critiques
  • Tooltips et help text
  • Responsive design complet
  • Accessibilité (WCAG)

Fonctionnalités Avancées

  • Recherche avancée avec filtres
  • Export Excel/PDF amélioré
  • Import de données (Excel, CSV)
  • Notifications en temps réel
  • Dashboard personnalisable

3.3 Documentation

Documentation Technique

  • Documentation API (OpenAPI/Swagger complète)
  • Documentation des services
  • Guide de développement
  • Architecture documentation
  • Guide de déploiement

Documentation Utilisateur

  • Guide utilisateur
  • Tutoriels vidéo
  • FAQ
  • Changelog

🔧 PRIORITÉ 4 - MAINTENANCE (POST-PRODUCTION)

4.1 Monitoring et Observabilité

  • Métriques Prometheus
  • Logs centralisés (ELK Stack)
  • Alertes
  • Health checks
  • Performance monitoring

4.2 CI/CD

  • Pipeline CI complet
  • Tests automatiques
  • Déploiement automatique
  • Rollback automatique
  • Environnements (dev, staging, prod)

4.3 Backup et Récupération

  • Stratégie de backup
  • Tests de restauration
  • Plan de reprise d'activité
  • Documentation de récupération

📊 ESTIMATION TEMPORELLE

Priorité Tâches Estimation Statut
P1 - Critique TODOs, Pages, Beans, Navigation 2-3 semaines 🔴 Urgent
P2 - Important Tests, Validation, Sécurité 3-4 semaines ⚠️ Important
P3 - Amélioration Performance, UX, Documentation 2-3 semaines 🟡 Optionnel
P4 - Maintenance Monitoring, CI/CD, Backup 1-2 semaines 🟢 Post-prod
TOTAL 8-12 semaines

🎯 PLAN D'ACTION RECOMMANDÉ

Semaine 1-2 : P1 - Critique

  1. Résoudre tous les TODOs critiques
  2. Créer les beans manquants
  3. Vérifier/compléter toutes les pages XHTML
  4. Migrer navigation vers outcomes

Semaine 3-4 : P1 - Critique (suite)

  1. Tests de base pour services critiques
  2. Validation des formulaires
  3. Gestion d'erreurs

Semaine 5-7 : P2 - Important

  1. Tests unitaires complets
  2. Tests d'intégration
  3. Sécurité

Semaine 8-9 : P2 - Important (suite)

  1. Tests E2E
  2. Performance
  3. Documentation technique

Semaine 10-12 : P3 - Amélioration

  1. Optimisations
  2. UX improvements
  3. Documentation utilisateur

CHECKLIST DE FINALISATION

Avant Production

  • Tous les TODOs résolus
  • Toutes les pages fonctionnelles
  • Tous les beans créés et testés
  • Navigation outcomes utilisés partout
  • Tests unitaires > 80% couverture
  • Tests d'intégration complets
  • Sécurité validée
  • Performance acceptable
  • Documentation complète
  • CI/CD configuré
  • Monitoring en place
  • Backup configuré

📝 NOTES

  • DRY/WOU : Continuer à respecter strictement ces principes
  • Composants réutilisables : Vérifier que tous les composants sont bien réutilisés
  • Navigation : Aligner sur le pattern CEADP (outcomes dans faces-config.xml)
  • Tests : Prioriser les tests critiques (services métier, sécurité)
  • Documentation : Maintenir à jour au fur et à mesure

Dernière mise à jour : 2025-01-30
Prochaine révision : Après chaque sprint