- 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
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
.typepar.typeEvenementdans 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.xhtmlunionflow-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/admin/evenements/liste.xhtmlunionflow-client-quarkus-primefaces-freya/src/main/resources/META-INF/resources/pages/admin/evenements/creation.xhtmlunionflow-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 viaNotificationService - Implémentation de
annulerContact(): ferme le dialog et réinitialise les champs - Création du dialog dans
liste.xhtmlavec formulaire complet utilisant les composants réutilisables
Fichiers modifiés :
unionflow-client-quarkus-primefaces-freya/src/main/java/dev/lions/unionflow/client/view/MembreListeBean.javaunionflow-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 :
-
MembreListeBean.java (1 TODO restant)
- ✅
contacterMembre()- TERMINÉ - Autres TODOs déjà résolus précédemment
- ✅
-
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
- Ligne 317 :
-
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
- Ligne 101 :
-
ConfigurationBean.java (1 TODO)
- Ligne 719 :
// TODO: Charger depuis le backend
- Ligne 719 :
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 decreation.xhtml?) - EvenementCalendarBean (pour
evenement/calendar.xhtml- différente decalendrier.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
@RolesAllowedsur 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.xmlcontient toutes les règles de navigation - REST Client : Configuration via
application.propertiesavecunionflow-apiconfigKey - 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 :
- Toujours réutiliser les composants existants avant de créer de nouveaux
- Utiliser les DTOs du serveur API (
unionflow-server-api) au lieu de créer des DTOs client - Utiliser les navigation outcomes définis dans
faces-config.xmlau lieu de chemins directs - Injeter les services REST via
@RestClientau lieu de créer des clients manuels - 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)
- Implémenter les TODOs restants dans
DemandesAideBean,RapportDetailsBean,ConfigurationBean - Tester chaque implémentation
- Vérifier la compilation
Phase 2 : Audit et complétion des pages (2-3 jours)
- Vérifier toutes les pages XHTML
- Créer les beans manquants
- S'assurer que tous les composants réutilisables sont utilisés
- Vérifier la navigation
Phase 3 : Tests et validation (2-3 jours)
- Corriger les erreurs de compilation dans les tests
- Ajouter des tests unitaires pour les nouvelles fonctionnalités
- Tests d'intégration
Phase 4 : Sécurité et production (1-2 jours)
- Supprimer les secrets hardcodés
- Vérifier la sécurité
- Documentation finale
TOTAL ESTIMÉ : 6-10 jours de travail
📚 RESSOURCES UTILES
Fichiers de référence
ROADMAP_FINALISATION_UNIONFLOW.md: Roadmap complète du projetAUDIT_INTEGRAL_UNIONFLOW.md: Audit technique completfaces-config.xml: Toutes les règles de navigationunion-flow.puml: Diagramme de classesunionflow.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 :
- Erreur de compilation : signature incorrecte de
envoyerNotificationsGroupees()- Solution : Utilisation de
NotificationService.NotificationGroupeeRequestau lieu de paramètres séparés
- Solution : Utilisation de
État final : ✅ Compilation réussie, fonctionnalité opérationnelle
💡 NOTES IMPORTANTES POUR LA CONTINUITÉ
- Toujours vérifier la compilation après chaque modification
- Respecter strictement DRY/WOU - vérifier les composants existants avant d'en créer de nouveaux
- Utiliser les navigation outcomes - ne pas utiliser de chemins directs
- Tester chaque fonctionnalité après implémentation
- 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