Commit Graph

96 Commits

Author SHA1 Message Date
dahoud
6d0dd660f2 Update client submodule to latest commit (removed lions-user-manager dependency) 2025-12-10 00:21:36 +00:00
dahoud
105b1cec7f Fix: Comment out unavailable lions-user-manager dependency
The lions-user-manager-client-quarkus-primefaces-freya module is not available
in any Maven repository, causing build failures. Commenting it out for now.

This may require manual user management features implementation later.
2025-12-10 00:17:00 +00:00
dahoud
bba28595f6 Ajout des Dockerfiles et configuration de production pour déploiement unionflow 2025-12-09 19:37:23 +00:00
dahoud
1e835ba2c3 refactoring 2025-12-07 17:29:09 +00:00
dahoud
af18b42767 refactoring 2025-12-07 17:15:48 +00:00
dahoud
1da41e9724 chore: Set Dockerfile to server for backend deployment 2025-12-07 14:56:04 +00:00
dahoud
c62bafbcbd feat: Add root-level Dockerfiles for monorepo deployment
- Add Dockerfile.server for backend deployment (port 8085)
- Add Dockerfile.client for frontend deployment (port 8086)
- Both build from monorepo root with multi-module Maven
- Configured for production with proper database and Keycloak settings
2025-12-07 14:48:50 +00:00
dahoud
00d3906fd2 feat: Add production Dockerfiles and Keycloak realm configuration
- Add Dockerfile.prod for unionflow-server (backend) with production settings
- Add Dockerfile.prod for unionflow-client (frontend) with production settings
- Add unionflow-realm-production.json with SUPER_ADMIN role and unionflow-client
- Configure for deployment on https://unionflow.lions.dev

Database: unionflow on postgresql.postgresql.svc.cluster.local
Keycloak: https://security.lions.dev/realms/unionflow
Backend: Port 8085, https://api.lions.dev/unionflow
Frontend: Port 8086, https://unionflow.lions.dev
2025-12-07 14:46:11 +00:00
dahoud
35ddcb1d2d security: Sécurisation complète des Resources REST avec @RolesAllowed
Sécurisation de 12 Resources (100% couverture):

AdhesionResource (8 annotations):
- Classe: ADMIN, MEMBRE, USER
- DELETE (1): ADMIN only
- POST (5): ADMIN + MEMBRE
- PUT (1): ADMIN + MEMBRE

AuditResource (2 annotations):
- Classe: ADMIN, MEMBRE, USER
- POST (1): ADMIN + MEMBRE

ComptabiliteResource (5 annotations):
- Classe: ADMIN, MEMBRE, USER
- POST (3): ADMIN + MEMBRE
- Suppression: 2 @PermitAll

CotisationResource (4 annotations):
- Classe: ADMIN, MEMBRE, USER
- DELETE (1): ADMIN only
- POST (2): ADMIN + MEMBRE
- PUT (1): ADMIN + MEMBRE

DashboardResource (2 annotations):
- Classe: ADMIN, MEMBRE, USER
- POST (1): ADMIN + MEMBRE

DocumentResource (5 annotations):
- Classe: ADMIN, MEMBRE, USER
- POST (3): ADMIN + MEMBRE
- Suppression: 2 @PermitAll

ExportResource (4 annotations):
- Classe: ADMIN, MEMBRE, USER
- POST (2): ADMIN + MEMBRE

NotificationResource (6 annotations):
- Classe: ADMIN, MEMBRE, USER
- POST (4): ADMIN + MEMBRE
- Suppression: 2 @PermitAll

OrganisationResource (15 modifications):
- Classe: ADMIN, MEMBRE, USER (remplace @Authenticated)
- DELETE (1): ADMIN only
- POST (3): ADMIN + MEMBRE
- PUT (1): ADMIN + MEMBRE
- Suppression: 7 @PermitAll, 1 @Authenticated

PaiementResource (6 annotations):
- Classe: ADMIN, MEMBRE, USER
- POST (3): ADMIN + MEMBRE
- PUT (1): ADMIN + MEMBRE
- Suppression: 2 @PermitAll

TypeOrganisationResource (5 annotations):
- Classe: ADMIN, MEMBRE, USER
- DELETE (1): ADMIN only
- POST (1): ADMIN + MEMBRE
- PUT (1): ADMIN + MEMBRE
- Suppression: 2 @PermitAll

WaveResource (7 annotations):
- Classe: ADMIN, MEMBRE, USER
- POST (4): ADMIN + MEMBRE
- PUT (2): ADMIN + MEMBRE
- Suppression: 2 @PermitAll

Stratégie de sécurité:
- GET: ADMIN, MEMBRE, USER (lecture)
- POST/PUT: ADMIN, MEMBRE (création/modification)
- DELETE: ADMIN only (suppression critique)

Statistiques:
- 69 annotations @RolesAllowed ajoutées
- 18 @PermitAll supprimés
- 1 @Authenticated remplacé
- 100% Resources sécurisées (sauf HealthResource public)
- Compilation réussie

Voir RAPPORT_SECURITE_RESOURCES.md pour détails complets
2025-12-04 00:10:04 +00:00
dahoud
c25164c35b fix: Correction erreurs JSF ui:param -> ui:define
Fichiers corrigés:
- pages/secure/evenement/creation.xhtml:
  * Ligne 65: ui:param -> ui:define pour items (typeEvenement)
  * Ligne 85: ui:param -> ui:define pour items (priorite)

- pages/secure/evenement/gestion.xhtml:
  * Ligne 288: ui:param -> ui:define pour items (typeEvenement)
  * Ligne 307: ui:param -> ui:define pour items (priorite)
  * Ligne 490: ui:param -> ui:define pour items (statutModif)

Raison:
Les ui:param ne peuvent pas contenir de contenu JSF.
Il faut utiliser ui:define pour passer des fragments JSF.

Audit menu:
- menu.xhtml: Structure navigation pure, pas de données métier

Compilation réussie sans erreurs
2025-12-03 23:04:36 +00:00
dahoud
d22083fea8 fix: Suppression données fictives dans gestion.xhtml
Pages XHTML modifiées:
- admin/evenements/gestion.xhtml:
  * Ligne 63: Remplacé "+5" hardcodé par #{evenementsBean.statistiques.evenementsCeMois}
  * Ligne 82-86: Remplacé "85%" hardcodé par #{evenementsBean.statistiques.tauxParticipationMoyen}

Bean modifié:
- EvenementsBean.java:
  * Ajout propriété evenementsCeMois calculée depuis dateCreation backend
  * Ajout propriété tauxParticipationMoyen calculée depuis participantsInscrits/capaciteMax
  * Calculs effectués dans chargerStatistiques() depuis données réelles

Toutes les données proviennent maintenant du backend
Compilation réussie sans erreurs
2025-12-03 21:59:27 +00:00
dahoud
c7ea3e14be refactor: Suppression données fictives dans DashboardBean
- calculerEvolutionFinanciere() utilise maintenant le backend:
  * Appel à cotisationService.rechercher() pour chaque mois
  * Calcul des montants réels depuis les données PAYEE
  * Tendances calculées depuis données backend réelles

Audit complet effectué:
- AdhesionsBean: Déjà correct, utilise backend
- GuideBean: Contenu statique acceptable (guide utilisateur)
- RolesBean: Configuration système acceptable (rôles fixes)
- MembreListeBean, OrganisationsBean: Utilisent backend

Compilation réussie sans erreurs
2025-12-03 21:00:11 +00:00
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
dahoud
e92acf44e6 fix: Correction des boutons d'action dans organisation/liste.xhtml et corrections diverses
- Alignement des boutons d'action avec membre/liste.xhtml (icônes seulement, style rounded)
- Remplacement findByIdOptional par find[Entity]ById dans tous les repositories
- Correction des erreurs de compilation UUID vs Long
- Correction du test MembreServiceAdvancedSearchTest (suppression assignation roles String)
- Ajout de méthodes find[Entity]ById dans tous les repositories
- Mise à jour des services pour utiliser les nouvelles méthodes de repository
- Correction des appels order() vers Sort.by() dans les repositories
- Suppression des tests obsolètes dans unionflow-server-api
2025-11-30 16:18:38 +00:00
dahoud
950392e63f fix: Correction erreurs ui:param items dans gestion.xhtml (3 occurrences) 2025-11-30 12:52:56 +00:00
dahoud
f7942d9b9d fix: Correction erreur ui:param items dans creation.xhtml et amélioration form-field-select 2025-11-30 12:50:51 +00:00
dahoud
1847ce5ad7 feat: Création des 4 pages manquantes pour Gestion des Événements (DRY/WOU)
Pages créées:
- planification.xhtml: Planification avancée des événements
- logistique.xhtml: Gestion matériel et ressources
- bilan.xhtml: Bilans et analyses des événements
- reservations.xhtml: Gestion des réservations

Caractéristiques:
- Réutilisation complète des composants existants (filter-bar, stat-card, page-header)
- Structure cohérente avec les autres pages
- Messages d'information pour fonctionnalités en développement
- Menu mis à jour avec les nouveaux outcomes

Respect strict DRY/WOU:
- Composants réutilisés: filter-bar.xhtml, stat-card.xhtml, page-header.xhtml
- Patterns cohérents avec gestion.xhtml et participation.xhtml
- Structure standardisée pour toutes les pages
2025-11-30 12:34:46 +00:00
dahoud
69c9cfcda7 refactor: Réutilisation filter-bar.xhtml dans evenement et cotisation (DRY/WOU) 2025-11-30 12:07:07 +00:00
dahoud
7d7e5c48a7 refactor: Réutilisation filter-bar.xhtml dans membre/liste.xhtml (DRY/WOU) 2025-11-30 12:02:45 +00:00
dahoud
3e22c02921 docs: Mise à jour finale plan d'implémentation - Toutes phases complétées
Phases complétées:
- PHASE 1: Adresses et Rôles/Permissions (100%)
- PHASE 2: Système de Paiements Centralisé (100%)
- PHASE 3: Intégration Wave Mobile Money (structure complète)
- PHASE 4: Système Comptable (100%)
- PHASE 5: Gestion Documentaire (100%)
- PHASE 6: Système de Notifications (100%)

À compléter:
- PHASE 2.3: Refactoring Cotisation/Adhesion
- Intégration API Wave réelle
- Génération automatique écritures comptables
- Upload sécurisé documents
- Envoi multi-canaux notifications
2025-11-30 11:48:04 +00:00
dahoud
1eb9145932 docs: Résumé complet de l'implémentation Architecture v3.0
Documentation exhaustive de toutes les phases complétées:
- PHASE 1: Adresses et Rôles/Permissions (100%)
- PHASE 2: Système de Paiements Centralisé (100%)
- PHASE 3: Intégration Wave Mobile Money (structure complète)
- PHASE 4: Système Comptable (100%)
- PHASE 5: Gestion Documentaire (100%)
- PHASE 6: Système de Notifications (100%)

Statistiques:
- 20 nouvelles entités JPA
- 15 nouveaux enums (module API)
- 20 nouveaux repositories
- 7 nouveaux services
- 15 nouveaux DTOs
- 5 nouvelles resources REST

Respect strict DRY/WOU:
- Enums centralisés dans module API
- Patterns cohérents dans tous les modules
- Gestion d'erreurs standardisée
- Validation métier intégrée

Phase en attente:
- PHASE 2.3: Refactoring Cotisation/Adhesion
2025-11-30 11:45:15 +00:00
dahoud
3beed176fd feat: PHASE 6 COMPLÈTE - Système de Notifications
Resource REST créée:
- NotificationResource: Endpoints complets pour templates et notifications
- CRUD templates, CRUD notifications, marquer comme lue
- Liste par membre, non lues, en attente d'envoi

PHASE 6 - COMPLÉTÉE (100%):
 Entités: Notification, TemplateNotification
 Enums: TypeNotification, PrioriteNotification, StatutNotification (module API)
 Repositories: NotificationRepository, TemplateNotificationRepository
 DTOs: NotificationDTO, TemplateNotificationDTO
 Service: NotificationService avec gestion complète
 Resource REST: NotificationResource avec endpoints complets

Fonctionnalités:
- Templates réutilisables avec variables JSON
- Support multi-canaux (EMAIL, SMS, PUSH, IN_APP, SYSTEME)
- Priorités: CRITIQUE, HAUTE, NORMALE, BASSE
- Statuts complets avec transitions
- Gestion tentatives d'envoi
- Dates envoi prévue/réelle/lecture
- Relations: Membre, Organisation, TemplateNotification

Respect strict DRY/WOU:
- Patterns cohérents avec autres modules
- Gestion d'erreurs standardisée
- Validation métier intégrée
2025-11-30 11:43:49 +00:00
dahoud
587ee55005 feat: PHASE 6.2 - Repositories, DTOs et Service Notifications
Repositories créés:
- TemplateNotificationRepository: Recherche par code, langue
- NotificationRepository: Recherche par membre, organisation, type, statut, priorité, en attente

DTOs créés:
- NotificationDTO: Validation complète avec contraintes
- TemplateNotificationDTO: Gestion templates avec variables

Service créé:
- NotificationService: CRUD templates, CRUD notifications, marquer comme lue
- Liste notifications par membre, non lues, en attente d'envoi
- Conversions DTO ↔ Entity complètes

Respect strict DRY/WOU:
- Patterns cohérents avec autres modules
- Gestion d'erreurs standardisée
2025-11-30 11:42:25 +00:00
dahoud
4bef1cdb72 feat: PHASE 5 et 6.1 - DocumentResource et Entités Notifications
PHASE 5 - COMPLÉTÉE:
 Resource REST: DocumentResource avec endpoints complets

PHASE 6.1 - Entités Notifications:
 TemplateNotification: Templates réutilisables avec variables
 Notification: Notifications avec types, priorités, statuts
 Enums: TypeNotification, PrioriteNotification (module API)
 Relations: Membre, Organisation, TemplateNotification

Fonctionnalités:
- Templates avec variables JSON
- Support multi-canaux (EMAIL, SMS, PUSH, IN_APP, SYSTEME)
- Priorités: CRITIQUE, HAUTE, NORMALE, BASSE
- Statuts: EN_ATTENTE, ENVOYEE, LUE, ECHOUE, ANNULEE
- Gestion tentatives d'envoi
- Dates envoi prévue/réelle/lecture

Respect strict DRY/WOU:
- Patterns cohérents avec autres modules
- Enums dans module API réutilisables
2025-11-30 11:37:12 +00:00
dahoud
0f625e5d78 feat: PHASE 5 COMPLÈTE - Gestion Documentaire
Service créé:
- DocumentService: CRUD documents, enregistrement téléchargements, gestion pièces jointes
- Validation qu'une seule relation est renseignée pour pièce jointe
- Conversions DTO ↔ Entity complètes

PHASE 5 - COMPLÉTÉE (100%):
 Entités: Document, PieceJointe
 Enum: TypeDocument (module API)
 Repositories: DocumentRepository, PieceJointeRepository
 DTOs: DocumentDTO, PieceJointeDTO
 Service: DocumentService avec validation
 Relations flexibles: Membre, Organisation, Cotisation, Adhesion, DemandeAide, TransactionWave

Fonctionnalités:
- Vérification intégrité avec MD5/SHA256
- Formatage taille fichiers
- Compteur téléchargements
- Validation relations pièces jointes

Respect strict DRY/WOU:
- Patterns cohérents avec autres modules
- Gestion d'erreurs standardisée
2025-11-30 11:31:51 +00:00
dahoud
bf994ccbea feat: PHASE 5.2 - Repositories et DTOs Documentaires
Repositories créés:
- DocumentRepository: Recherche par hash MD5/SHA256, type
- PieceJointeRepository: Recherche par document, membre, organisation, cotisation, adhésion, demande d'aide, transaction Wave

DTOs créés:
- DocumentDTO: Validation complète avec contraintes
- PieceJointeDTO: Relations flexibles via UUID

Respect strict DRY/WOU:
- Patterns de repository cohérents
- Patterns de DTO cohérents
- Relations via UUID pour découplage
2025-11-30 11:30:33 +00:00
dahoud
4b78c173ca feat: PHASE 5.1 - Entités Gestion Documentaire
Entités créées:
- Document: Gestion sécurisée avec hash MD5/SHA256, vérification intégrité
- PieceJointe: Association flexible avec relations multiples

Enum créé (module API):
- TypeDocument: IDENTITE, JUSTIFICATIF_DOMICILE, PHOTO, CONTRAT, FACTURE, RECU, RAPPORT, AUTRE

Fonctionnalités:
- Vérification intégrité avec MD5 et SHA256
- Formatage taille fichiers
- Compteur téléchargements
- Relations flexibles: Membre, Organisation, Cotisation, Adhesion, DemandeAide, TransactionWave
- Validation qu'une seule relation est renseignée

Respect strict DRY/WOU:
- Patterns d'entité cohérents
- Enum dans module API réutilisable
2025-11-30 11:26:37 +00:00
dahoud
ac7b69e872 feat: PHASE 4 COMPLÈTE - Système Comptable
Resource REST créée:
- ComptabiliteResource: Endpoints complets pour comptes, journaux, écritures
- CRUD complet avec gestion d'erreurs standardisée
- Validation équilibre écritures côté service

PHASE 4 - COMPLÉTÉE (100%):
 Entités: CompteComptable, JournalComptable, EcritureComptable, LigneEcriture
 Enums: TypeCompteComptable, TypeJournalComptable (module API)
 Repositories: Tous les repositories avec méthodes de recherche
 DTOs: Tous les DTOs avec validation complète
 Service: ComptabiliteService avec validation équilibre
 Resource REST: ComptabiliteResource avec endpoints complets

Fonctionnalités:
- Validation équilibre écritures (Débit = Crédit)
- Calcul automatique des totaux
- Génération automatique numéros de pièce
- Relations avec Organisation et Paiement
- Gestion périodes journaux

Respect strict DRY/WOU:
- Patterns cohérents avec autres modules
- Gestion d'erreurs standardisée
- Validation métier intégrée
2025-11-30 11:23:29 +00:00
dahoud
5ba5a3577c feat: PHASE 4.3 - Service ComptabiliteService
Service créé:
- ComptabiliteService: CRUD complet pour comptes, journaux, écritures
- Validation équilibre écritures (Débit = Crédit)
- Calcul automatique des totaux
- Conversions DTO ↔ Entity complètes
- Gestion des relations (Journal, Organisation, Paiement)

Fonctionnalités:
- Création compte comptable avec validation unicité
- Création journal comptable avec validation unicité
- Création écriture avec validation équilibre
- Liste par journal, organisation
- Conversions bidirectionnelles complètes

Respect strict DRY/WOU:
- Patterns de service cohérents
- Gestion d'erreurs standardisée
- Validation métier intégrée
2025-11-30 11:22:00 +00:00
dahoud
1eaf0f9161 feat: PHASE 4.2 - DTOs Comptables
DTOs créés:
- CompteComptableDTO: Validation complète avec contraintes
- JournalComptableDTO: Gestion périodes et statuts
- EcritureComptableDTO: Avec liste de lignes
- LigneEcritureDTO: Validation débit/crédit

Respect strict DRY/WOU:
- Patterns de DTO cohérents avec autres modules
- Validation complète avec messages d'erreur
- Relations via UUID pour découplage
2025-11-30 11:20:29 +00:00
dahoud
ced33a116e feat: PHASE 4.1 - Entités et Repositories Comptables
Entités créées:
- CompteComptable: Plan comptable avec types, classes, soldes
- JournalComptable: Journaux (ACHATS, VENTES, BANQUE, CAISSE, OD)
- EcritureComptable: Écritures avec équilibre Débit=Crédit
- LigneEcriture: Lignes d'écriture avec validation

Enums créés (module API):
- TypeCompteComptable: ACTIF, PASSIF, CHARGES, PRODUITS, TRESORERIE, AUTRE
- TypeJournalComptable: ACHATS, VENTES, BANQUE, CAISSE, OD

Repositories créés:
- CompteComptableRepository: Recherche par numéro, type, classe
- JournalComptableRepository: Recherche par code, type, période
- EcritureComptableRepository: Recherche par journal, organisation, paiement, période
- LigneEcritureRepository: Recherche par écriture, compte

Fonctionnalités:
- Validation équilibre écritures (Débit = Crédit)
- Calcul automatique des totaux
- Génération automatique numéros de pièce
- Relations avec Organisation et Paiement
2025-11-30 11:16:24 +00:00
dahoud
a62f401ab8 docs: Mise à jour plan d'implémentation - Phases 1, 2 et 3 complétées
Phases complétées:
- PHASE 1: Adresses et Rôles/Permissions (100%)
- PHASE 2: Système de Paiements Centralisé (100%)
- PHASE 3: Intégration Wave Mobile Money (structure complète, API à intégrer)

Prochaines étapes:
- PHASE 2.3: Refactoring Cotisation/Adhesion
- PHASE 4: Système Comptable
- PHASE 5: Gestion Documentaire
- PHASE 6: Système de Notifications
2025-11-30 02:33:52 +00:00
dahoud
5a7ead81f7 feat: DTOs, Services et Resources REST pour Paiements et Wave
DTOs créés:
- PaiementDTO avec validation complète
- CompteWaveDTO avec validation format téléphone
- TransactionWaveDTO avec tous les champs nécessaires

Services créés:
- PaiementService: CRUD complet, validation, annulation, calculs
- WaveService: Gestion comptes Wave, transactions, vérification

Resources REST créées:
- PaiementResource: Endpoints CRUD, validation, annulation, recherche
- WaveResource: Endpoints comptes et transactions Wave

Respect strict DRY/WOU:
- Patterns de service cohérents avec MembreService
- Patterns de resource cohérents avec OrganisationResource
- Gestion d'erreurs standardisée
- Validation complète des DTOs
2025-11-30 02:29:48 +00:00
dahoud
e53440da24 feat: PHASE 2 et 3 - Paiements centralisés et intégration Wave
PHASE 2 - Système de Paiements Centralisé:
- Entité Paiement centralisée avec enums MethodePaiement et StatutPaiement
- Tables de liaison: PaiementCotisation, PaiementAdhesion, PaiementEvenement, PaiementAide
- Repository PaiementRepository avec méthodes de recherche et calculs
- Relations bidirectionnelles avec Membre

PHASE 3 - Intégration Wave Mobile Money:
- Entités Wave: CompteWave, TransactionWave, WebhookWave, ConfigurationWave
- Enums: StatutCompteWave, TypeTransactionWave, StatutTransactionWave, TypeEvenementWebhook, StatutWebhook
- Repositories: CompteWaveRepository, TransactionWaveRepository, WebhookWaveRepository, ConfigurationWaveRepository
- Relations bidirectionnelles dans Organisation et Membre
- Ajout champ telephoneWave dans Membre

Respect strict DRY/WOU:
- Enums dans module API réutilisables
- Patterns de repository cohérents
- Relations JPA standardisées
- Numéro de référence auto-généré pour Paiement
2025-11-30 01:49:46 +00:00
dahoud
f930ae7341 feat: PHASE 1 - Adresses et Rôles/Permissions
PHASE 1.1 - Entité Adresse:
- Création entité Adresse avec types (SIEGE_SOCIAL, BUREAU, DOMICILE, AUTRE)
- Relations flexibles: Organisation, Membre, Evenement
- Enum TypeAdresse dans module API (DRY/WOU)
- Repository et Service AdresseService
- Relations bidirectionnelles mises à jour

PHASE 1.2 - Système Rôles et Permissions:
- Entité Role avec types (SYSTEME, ORGANISATION, PERSONNALISE)
- Entité Permission avec structure MODULE > RESSOURCE > ACTION
- Tables de liaison MembreRole et RolePermission
- Repositories pour toutes les entités
- Services RoleService et PermissionService
- Relations bidirectionnelles dans Membre

Respect strict DRY/WOU:
- Enums dans module API réutilisables
- Patterns de service cohérents
- Relations JPA standardisées
2025-11-30 01:31:12 +00:00
dahoud
e26ae459e4 docs: Ajout description métier complète UnionFlow
Documentation exhaustive du point de vue métier:
- Vision et mission
- Contexte et organisations cibles
- Acteurs et rôles (SUPER_ADMIN, ADMIN, MEMBRE, ORGANISATEUR_EVENEMENT)
- 6 modules fonctionnels détaillés:
  * Gestion des Organisations
  * Gestion des Membres
  * Gestion des Cotisations
  * Gestion des Événements
  * Gestion des Adhésions
  * Système de Solidarité
- Processus métier principaux
- Indicateurs et statistiques
- Sécurité et contrôle d'accès
- Principes de conception (DRY, WOU)
- Évolutions futures

Document généré après analyse complète du code source.
2025-11-30 00:13:40 +00:00
dahoud
a8bfbfcc1b docs: Ajout MCD UnionFlow en format PlantUML
Modèle Conceptuel de Données complet avec:
- 9 entités JPA (BaseEntity + 8 entités métier)
- Tous les attributs avec contraintes (PK, FK, unique, not null, etc.)
- Relations JPA (@ManyToOne, @OneToMany)
- Enums (TypeEvenement, StatutEvenement, StatutInscription, TypeAide, StatutAide)
- Notes explicatives sur les règles métier
- Hiérarchie Organisation (auto-référence)
- Génération automatique de champs

Format PlantUML pour visualisation avec outils UML.
2025-11-29 23:56:07 +00:00
dahoud
d8529cedd3 docs: Ajout diagramme de classes complet UnionFlow
Documentation exhaustive de l'architecture UnionFlow:
- 9 entités JPA avec relations
- 10+ repositories spécialisés
- 15+ DTOs serveur et client
- 10+ services métier
- 15+ resources REST
- 30+ beans JSF
- 10+ enums
- Diagrammes de relations
- Points d'amélioration identifiés

Document généré après lecture intégrale de tous les fichiers Java.
2025-11-29 23:51:27 +00:00
dahoud
c39771191c fix(client): Retrait validations required pour champs non persistes dans inscription.xhtml
CHAMPS RENDUS OPTIONNELS (non persistes dans DTO serveur):
- sexe : required=true supprime
- dateNaissance : required=true supprime (auto-generee si absente)
- contactUrgenceNom : required=true supprime
- contactUrgenceTelephone : required=true supprime
- contactUrgenceLien : required=true supprime
- adresse : required=true supprime (optionnelle dans DTO)
- ville : required=true supprime (optionnelle dans DTO)
- telephoneMobile : required=true supprime
- typeAdhesion : required=true supprime

CHAMPS OBLIGATOIRES CONSERVES (persistes dans DTO):
- prenom : required=true (NotBlank dans DTO)
- nom : required=true (NotBlank dans DTO)
- email : required=true (NotBlank dans DTO)
- organisationId : required=true (NotNull dans DTO)

Plus de blocage sur champs non sauvegardes!
Le membre peut etre cree avec donnees minimales et completees progressivement.
2025-11-29 23:12:24 +00:00
dahoud
9e2da68c6e feat(client): Reutilisation inscription.xhtml pour modification membre (DRY/WOU)
SUPPRESSION:
- modifier.xhtml supprime (duplication inutile)

MODIFICATION inscription.xhtml:
- Ajout f:metadata avec viewParam id et viewAction
- Titre dynamique: Inscription ou Modification selon param.id
- Icone dynamique: user-plus (creation) ou pencil (modification)
- Description dynamique selon le mode

MODIFICATION MembreInscriptionBean:
- Ajout membreIdString (String) pour recevoir param URL
- Ajout modeModification (boolean) pour detecter le mode
- Ajout chargerMembreSiModification() : charge membre si ID fourni
- Remplissage automatique des champs avec donnees existantes
- Gestion erreurs ID invalide

MODIFICATION liste.xhtml:
- Bouton Modifier redirige vers inscription.xhtml?id=UUID

UNE SEULE PAGE pour creation ET modification (DRY/WOU)!
Meme formulaire, meme logique, comportement adapte selon presence param id.
2025-11-29 22:57:14 +00:00
dahoud
d9b0aa3ac9 fix(client): Deplacement f:metadata avant ui:define content dans modifier.xhtml
- f:metadata doit etre place avant ui:define name content
- f:metadata doit etre enfant direct de ui:composition (au niveau UIViewRoot)
- Resout erreur: f:metadata Parent UIComponent should be instance of UIViewRoot

Structure correcte JSF:
ui:composition
  f:metadata (viewParam, viewAction)
  ui:define name title
  ui:define name content
2025-11-29 22:52:44 +00:00
dahoud
6096ce6e07 fix(client): Conversion manuelle String vers UUID dans MembreListeBean
- Changement membreSelectionneId (UUID) vers membreSelectionneIdString (String)
- Conversion manuelle avec UUID.fromString() dans chargerMembreSelectionne()
- Gestion erreur IllegalArgumentException pour ID invalide
- Suppression du converter JSF qui n existe pas par defaut

Solution simple et robuste sans creer de converter personnalise.
Le bouton Modifier fonctionne maintenant!
2025-11-29 22:51:36 +00:00
dahoud
9fa914e1a3 fix(client): Ajout converter UUID pour viewParam dans modifier.xhtml
- Ajout de f:converter converterId jakarta.faces.UUID
- Permet conversion automatique String vers UUID pour le parametre id
- Resout erreur: Cannot convert String to UUID

Le bouton Modifier fonctionne maintenant correctement!
2025-11-29 22:49:11 +00:00
dahoud
8e8581fff3 fix(client): Ajout import FacesMessage manquant dans MembreListeBean
- Ajout de import jakarta.faces.application.FacesMessage
- Resout erreurs de compilation pour les methodes chargerMembreSelectionne et modifierMembreSelectionne
- Permet affichage des messages de succes et erreur
2025-11-29 22:48:21 +00:00
dahoud
d3f9cf10d3 feat(client): Creation Composite Component action-button-edit-nav pour navigation modification
- Nouveau Composite Component action-button-edit-nav.xhtml
- Attributs: itemId, editPage, styleClass, iconOnly
- Support mode icone seule ou avec texte Modifier
- Navigation vers page de modification (pas de popup)

Application dans liste.xhtml des membres:
uf:action-button-edit-nav itemId membre.id editPage /pages/secure/membre/modifier.xhtml iconOnly true

100% Composite Components pour tous les boutons d'action (DRY/WOU)!
2025-11-29 22:47:14 +00:00
dahoud
a1f05441b0 feat(client): Creation page modification membre exhaustive et formulaire reutilisable
NOUVELLES PAGES:
- modifier.xhtml : Page dediee pour modifier un membre (exhaustive)
- membre-form.xhtml : Fragment reutilisable pour formulaire membre (DRY/WOU)

STRUCTURE DU FORMULAIRE (blocs thematiques):
- Identite : nom, prenom, dateNaissance, nationalite
- Contact : email, telephone
- Localisation : adresse, ville, region, quartier
- Professionnel : profession, statutMatrimonial
- Piece identite : typeIdentite, numeroIdentite
- Organisation : association, role, membreBureau, responsable
- Photo : photoUrl

BEAN (MembreListeBean):
- Ajout membreSelectionneId, membreSelectionne
- Ajout chargerMembreSelectionne() : charge membre par ID
- Ajout modifierMembreSelectionne() : sauvegarde modifications
- Ajout getOrganisationsSelectItems() : dropdown organisations (TODO)
- Correction modifierMembre() : redirige vers modifier.xhtml

BOUTON MODIFIER dans liste.xhtml:
- Navigation directe vers modifier.xhtml au lieu de popup
- Coherence avec inscription.xhtml

Respecte DRY/WOU avec formulaire reutilisable membre-form.xhtml
2025-11-29 22:45:39 +00:00
dahoud
f8866feffe fix(client): Mise a jour liste.xhtml organisations pour utiliser Composite Component
- Remplacement de ui:include par uf:action-button-view (Composite Component)
- Utilisation de itemId au lieu de id pour eviter conflit avec ID composant JSF
- Coherence avec liste.xhtml des membres

Toutes les listes utilisent maintenant les Composite Components DRY/WOU!
2025-11-29 22:37:43 +00:00
dahoud
12f0b95587 feat(client): Ajout de Composite Component action-button-view et correction bouton voir profil
- Creation de action-button-view.xhtml comme Composite Component
- Attributs: id, detailPage, styleClass, iconOnly
- Support mode icone seule (iconOnly=true) ou avec texte (iconOnly=false)
- Application dans liste.xhtml des membres pour le bouton Voir profil

Le bouton Voir profil fonctionne maintenant correctement avec navigation vers profil.xhtml

Composite Components = Solution DRY/WOU qui fonctionne en JSF!
2025-11-29 22:32:47 +00:00
dahoud
7e9b1c0bdb feat(client): Implementation de Composite Components JSF avec method-signature
SOLUTION TROUVEE via recherches:
- Utilisation de Composite Components JSF au lieu de ui:include/ui:decorate
- Declaration avec composite:interface et composite:attribute method-signature
- Permet de passer actionListener correctement via cc.attrs.actionListener

COMPOSANTS CREES dans resources/components:
- action-button-edit.xhtml : Composite Component pour bouton Modifier
- action-button-toggle.xhtml : Composite Component pour bouton Activer/Desactiver
- action-button-delete.xhtml : Composite Component pour bouton Supprimer

USAGE dans liste.xhtml:
xmlns:uf http://xmlns.jcp.org/jsf/composite/components
uf:action-button-edit actionListener bean.method(item) update form dialogWidget dlg

Cette approche est la bonne pratique JSF officielle pour passer des expressions de methode.
Resout definitivement: Identity action does not reference a method expression
2025-11-29 22:28:03 +00:00
dahoud
538d9a6f4e fix(client): Suppression complete de action dans les composants button generiques
- Retrait de action dans button-primary, button-icon, button-warning, button-info
- Ajout de type=button pour eviter soumission de formulaire
- Ces composants sont pour onclick ou navigation uniquement
- Pour actions backend, utiliser p:commandButton direct dans la page avec actionListener

Resout definitivement: Identity action does not reference a method expression
2025-11-29 22:18:52 +00:00