Files
unionflow-server-api/STATUT_TRAVAIL_EN_COURS.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

12 KiB

📋 STATUT DU TRAVAIL EN COURS - UNIONFLOW

Date de dernière mise à jour : 2025-12-01
Dernière session de travail : Correction erreurs PropertyNotFoundException et implémentation dialogue de contact


TRAVAIL RÉCEMMENT TERMINÉ

1. Correction de l'erreur PropertyNotFoundException pour type sur EvenementDTO

Problème : L'erreur jakarta.el.PropertyNotFoundException: Property [type] not found on type [dev.lions.unionflow.client.dto.EvenementDTO] se produisait dans plusieurs pages XHTML.

Solution appliquée :

  • Remplacement de toutes les occurrences de .type par .typeEvenement dans les pages XHTML
  • Correction dans pages/admin/evenements/gestion.xhtml (lignes 468, 354, 345, 355-357)
  • Correction dans pages/admin/evenements/liste.xhtml (lignes 224, 357)
  • Correction dans pages/admin/evenements/creation.xhtml (lignes 107, 479)
  • Correction dans pages/secure/membre/profil.xhtml (lignes 343-344)

Fichiers modifiés :

  • unionflow-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/admin/evenements/gestion.xhtml
  • unionflow-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/admin/evenements/liste.xhtml
  • unionflow-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/admin/evenements/creation.xhtml
  • unionflow-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/secure/membre/profil.xhtml

Statut : TERMINÉ - Compilation réussie, erreur résolue


2. Implémentation du dialogue de contact membre

Problème : TODO dans MembreListeBean.java ligne 316 : // TODO: Implémenter l'ouverture du dialogue de contact

Solution appliquée :

  • Ajout des propriétés dans MembreListeBean.java :
    • membreAContacter (MembreDTO)
    • messageContact (String)
    • sujetContact (String)
    • dialogContactVisible (boolean)
  • Implémentation de contacterMembre(MembreDTO membre) : initialise le dialog
  • Implémentation de envoyerMessageContact() : envoie la notification via NotificationService
  • Implémentation de annulerContact() : ferme le dialog et réinitialise les champs
  • Création du dialog dans liste.xhtml avec formulaire complet utilisant les composants réutilisables

Fichiers modifiés :

  • unionflow-client-quarkus-primefaces-freya/src/main/java/dev/lions/unionflow/client/view/MembreListeBean.java
  • unionflow-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/secure/membre/liste.xhtml

Statut : TERMINÉ - Compilation réussie, fonctionnalité opérationnelle


🔄 TRAVAIL EN COURS

Aucun travail en cours actuellement

Le dernier travail a été complété avec succès. Le projet compile sans erreurs.


📋 PROCHAINES PRIORITÉS

Priorité 1 - CRITIQUE (À faire immédiatement)

1. Résolution des TODOs restants

TODOs identifiés dans les Beans Client :

  1. MembreListeBean.java (1 TODO restant)

    • contacterMembre() - TERMINÉ
    • Autres TODOs déjà résolus précédemment
  2. DemandesAideBean.java (3 TODOs)

    • Ligne 317 : // TODO: Ouvrir un dialogue avec les détails complets
    • Ligne 357 : // TODO: Implémenter avec PrimeNG Charts ou une autre bibliothèque
    • Ligne 362 : // TODO: Implémenter avec PrimeNG Charts ou une autre bibliothèque
  3. RapportDetailsBean.java (2 TODOs)

    • Ligne 101 : // TODO: Implémenter le téléchargement réel du rapport
    • Ligne 111 : // TODO: Implémenter la régénération du rapport
  4. ConfigurationBean.java (1 TODO)

    • Ligne 719 : // TODO: Charger depuis le backend

Action recommandée : Implémenter ces TODOs un par un en suivant le même pattern que pour le dialogue de contact.


2. Vérification des pages XHTML manquantes ou incomplètes

Pages à vérifier (selon ROADMAP_FINALISATION_UNIONFLOW.md) :

  • /pages/secure/membre/modifier.xhtml (supprimée, doit être recréée ou réutiliser inscription.xhtml)
  • Vérifier toutes les pages aide/*.xhtml (15 pages) - certaines utilisent #{demandesAideBean} mais pourraient nécessiter des beans dédiés
  • 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 recommandée : 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

3. Beans manquants ou incomplets

Beans manquants identifiés (selon roadmap) :

  • AideNouveautesBean (pour aide/nouveautes.xhtml - actuellement utilise #{demandesAideBean})
  • AideDocumentationBean (pour aide/documentation.xhtml - actuellement utilise #{demandesAideBean})
  • AideAproposBean (pour aide/apropos.xhtml - actuellement utilise #{demandesAideBean})
  • 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?)

Action recommandée : Créer les beans manquants en suivant le pattern des beans existants (DRY/WOU).


Priorité 2 - IMPORTANT (À faire avant production)

1. Tests

  • Corriger tous les tests cassés (3596 erreurs de compilation selon audit)
  • Ajouter tests unitaires pour les services (25 services)
  • Ajouter tests d'intégration pour les resources REST (18 resources)
  • Ajouter tests pour les beans JSF (36 beans)

2. Validation et Gestion d'Erreurs

  • Ajouter validation JSF sur tous les formulaires
  • Messages d'erreur personnalisés
  • Validation en temps réel (AJAX)
  • Exception handlers globaux
  • Gestion des erreurs REST (RestClientExceptionMapper)

3. Sécurité

  • Vérifier tous les @RolesAllowed sur Resources
  • Vérifier sécurité des Beans JSF
  • Tests de sécurité
  • Supprimer secrets hardcodés (selon audit)

🏗️ ARCHITECTURE ET STRUCTURE

Modules du projet

unionflow/
├── unionflow-server-api/              # ✅ Complet (DTOs, Enums)
├── unionflow-server-impl-quarkus/     # ✅ Complet (Services, Resources, Entities, Repositories)
└── unionflow-client-quarkus-primefaces-freya/  # 🔄 Partiel (70% beans, 60% pages)

Structure des composants réutilisables

Composants disponibles (DRY/WOU) :

  • /templates/components/forms/ : form-field-text.xhtml, form-field-select.xhtml, form-field-textarea.xhtml, etc.
  • /templates/components/buttons/ : button-success.xhtml, button-secondary.xhtml, button-icon.xhtml, etc.
  • /templates/components/cards/ : filter-bar.xhtml, stat-card.xhtml, etc.
  • /templates/components/layout/ : page-header.xhtml

Principe : Toujours utiliser ces composants réutilisables au lieu de créer des composants inline.


🔧 CONFIGURATION ET DÉPENDANCES

Technologies principales

  • Framework : Quarkus 3.15.1
  • Interface : PrimeFaces 14.0.5 (Freya Theme)
  • Base de données : PostgreSQL 15
  • Build : Maven
  • Java : OpenJDK 21

Configuration importante

  • Navigation : faces-config.xml contient toutes les règles de navigation
  • REST Client : Configuration via application.properties avec unionflow-api configKey
  • Lombok : Utilisé pour réduire le boilerplate (getters/setters)

📝 PRINCIPES DE DÉVELOPPEMENT

DRY (Don't Repeat Yourself) et WOU (Write Once Use)

Règles strictes à suivre :

  1. Toujours réutiliser les composants existants avant de créer de nouveaux
  2. Utiliser les DTOs du serveur API (unionflow-server-api) au lieu de créer des DTOs client
  3. Utiliser les navigation outcomes définis dans faces-config.xml au lieu de chemins directs
  4. Injeter les services REST via @RestClient au lieu de créer des clients manuels
  5. Utiliser Lombok pour les getters/setters standards

Exemples de bonnes pratiques

BON :

@Inject @RestClient MembreService membreService;
private MembreSearchCriteria searchCriteria; // DTO du serveur API
return OUTCOME_MEMBRE_LISTE; // Navigation outcome

MAUVAIS :

private MembreClientDTO membreDTO; // DTO client dupliqué
return "/pages/secure/membre/liste"; // Chemin direct

🐛 PROBLÈMES CONNUS

1. Erreurs de compilation dans les tests

Statut : Non résolu
Impact : Bloque les tests
Action : Vérifier et corriger les 3596 erreurs de compilation dans les tests (selon audit)

2. Secrets hardcodés

Statut : Non résolu
Impact : Sécurité
Action : Supprimer les secrets hardcodés et utiliser des variables d'environnement

3. Lombok mal configuré (selon audit)

Statut : À vérifier
Impact : Erreurs de compilation potentielles
Action : Vérifier la configuration Lombok dans pom.xml


📊 MÉTRIQUES ACTUELLES

Compilation

  • Client module : BUILD SUCCESS
  • Server module : BUILD SUCCESS (dernière vérification)
  • Tests : Nombreuses erreurs (à corriger)

Code

  • Fichiers Java : ~237 fichiers
  • Pages XHTML : 72 pages (60% complètes)
  • Beans JSF : 36 beans (70% complètes)
  • TODOs restants : ~7 TODOs identifiés

🎯 PLAN D'ACTION RECOMMANDÉ

Phase 1 : Finalisation des TODOs (1-2 jours)

  1. Implémenter les TODOs restants dans DemandesAideBean, RapportDetailsBean, ConfigurationBean
  2. Tester chaque implémentation
  3. Vérifier la compilation

Phase 2 : Audit et complétion des pages (2-3 jours)

  1. Vérifier toutes les pages XHTML
  2. Créer les beans manquants
  3. S'assurer que tous les composants réutilisables sont utilisés
  4. Vérifier la navigation

Phase 3 : Tests et validation (2-3 jours)

  1. Corriger les erreurs de compilation dans les tests
  2. Ajouter des tests unitaires pour les nouvelles fonctionnalités
  3. Tests d'intégration

Phase 4 : Sécurité et production (1-2 jours)

  1. Supprimer les secrets hardcodés
  2. Vérifier la sécurité
  3. Documentation finale

TOTAL ESTIMÉ : 6-10 jours de travail


📚 RESSOURCES UTILES

Fichiers de référence

  • ROADMAP_FINALISATION_UNIONFLOW.md : Roadmap complète du projet
  • AUDIT_INTEGRAL_UNIONFLOW.md : Audit technique complet
  • faces-config.xml : Toutes les règles de navigation
  • union-flow.puml : Diagramme de classes
  • unionflow.md : Description métier

Commandes utiles

# Compiler le projet client
mvn compile -pl unionflow-client-quarkus-primefaces-freya

# Compiler le projet serveur
mvn compile -pl unionflow-server-impl-quarkus

# Compiler tout le projet
mvn clean compile

# Lancer les tests
mvn test

🔗 CONTEXTE DE LA DERNIÈRE SESSION

Dernière tâche complétée : Implémentation du dialogue de contact membre

Problèmes rencontrés :

  1. Erreur de compilation : signature incorrecte de envoyerNotificationsGroupees()
    • Solution : Utilisation de NotificationService.NotificationGroupeeRequest au lieu de paramètres séparés

État final : Compilation réussie, fonctionnalité opérationnelle


💡 NOTES IMPORTANTES POUR LA CONTINUITÉ

  1. Toujours vérifier la compilation après chaque modification
  2. Respecter strictement DRY/WOU - vérifier les composants existants avant d'en créer de nouveaux
  3. Utiliser les navigation outcomes - ne pas utiliser de chemins directs
  4. Tester chaque fonctionnalité après implémentation
  5. Documenter les changements dans ce fichier

Dernière mise à jour : 2025-12-01
Prochaine étape recommandée : Implémenter les TODOs restants dans DemandesAideBean.java