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.
23 KiB
Description Métier - UnionFlow
Version : 2.0
Date : 2025-01-29
Domaine : Gestion d'organisations associatives (Lions Clubs, Associations, Coopératives, etc.)
🎯 Vision et Mission
UnionFlow est une plateforme de gestion intégrée conçue pour les unions et associations Lions Club de Côte d'Ivoire. Elle centralise et automatise la gestion administrative, financière et opérationnelle de ces organisations à but non lucratif.
Mission
Faciliter la gestion quotidienne des organisations associatives en automatisant les processus administratifs, financiers et événementiels, tout en favorisant la solidarité entre membres.
Vision
Devenir la référence en matière de gestion numérique pour les organisations associatives en Afrique de l'Ouest.
🏢 Contexte Métier
Organisations Cibles
UnionFlow s'adresse à différents types d'organisations :
- Lions Clubs : Clubs de service international
- Associations : Organisations à but non lucratif
- Coopératives : Groupements économiques
- Fédérations : Regroupements d'organisations
- Mutuelles : Organisations de solidarité
- Syndicats : Organisations professionnelles
- Fondations : Organisations philanthropiques
- ONG : Organisations non gouvernementales
Problématiques Résolues
- Gestion dispersée : Informations éparpillées dans des fichiers Excel, carnets, etc.
- Suivi financier complexe : Difficulté à suivre les cotisations, paiements, relances
- Communication inefficace : Manque de centralisation pour les événements et annonces
- Solidarité non structurée : Absence de processus formalisé pour les demandes d'aide
- Traçabilité limitée : Pas d'historique complet des actions et décisions
👥 Acteurs et Rôles
1. SUPER_ADMIN
- Rôle : Administration système complète
- Permissions :
- Gestion de tous les utilisateurs et organisations
- Configuration du système
- Gestion du catalogue des types d'organisations
- Accès à toutes les données et statistiques
- Cas d'usage : Configuration initiale, maintenance, support technique
2. ADMIN (Administrateur d'Organisation)
- Rôle : Gestion complète d'une organisation
- Permissions :
- Gestion des membres de son organisation
- Gestion des cotisations
- Organisation d'événements
- Validation des adhésions
- Traitement des demandes d'aide
- Consultation des statistiques de son organisation
- Cas d'usage : Gestion quotidienne d'un Lions Club ou d'une association
3. MEMBRE
- Rôle : Membre actif d'une organisation
- Permissions :
- Consultation de son profil
- Consultation de ses cotisations
- Inscription aux événements
- Soumission de demandes d'aide
- Consultation des événements publics
- Cas d'usage : Participation active à la vie de l'organisation
4. ORGANISATEUR_EVENEMENT
- Rôle : Organisation et gestion d'événements
- Permissions :
- Création et modification d'événements
- Gestion des inscriptions
- Suivi des participants
- Cas d'usage : Organisation d'assemblées générales, formations, manifestations
📋 Modules Fonctionnels
1. 🏛️ Gestion des Organisations
Description
Module central permettant de gérer toutes les informations relatives aux organisations (clubs, associations, etc.).
Fonctionnalités Principales
Création et Configuration
- Enregistrement d'une nouvelle organisation avec toutes ses informations :
- Identité : nom, nom court, type, statut
- Contact : email, téléphones, adresse complète, coordonnées GPS
- Web : site web, logo, réseaux sociaux
- Finances : budget annuel, devise, cotisation obligatoire, montant
- Métier : objectifs, activités principales, certifications, partenaires
- Paramètres : organisation publique, accepte nouveaux membres
Hiérarchie Organisationnelle
- Structure hiérarchique (organisation parente)
- Niveaux hiérarchiques (0 = racine)
- Gestion des relations parent-enfant
Statuts Organisationnels
- ACTIVE : Organisation opérationnelle
- SUSPENDUE : Temporairement suspendue (ne peut plus accepter de membres)
- DISSOUTE : Organisation dissoute (archivée)
Gestion du Catalogue des Types
- CRUD complet des types d'organisations
- Codes uniques (LIONS_CLUB, ASSOCIATION, etc.)
- Libellés et descriptions
- Ordre d'affichage
- Activation/désactivation
Statistiques
- Nombre de membres
- Nombre d'administrateurs
- Ancienneté (années depuis la fondation)
- Budget et finances
Règles Métier
- Unicité de l'email par organisation
- Unicité du numéro d'enregistrement
- Unicité du nom
- Date de fondation optionnelle mais utilisée pour calculer l'ancienneté
- Statut par défaut : ACTIVE
- Type par défaut : ASSOCIATION
- Devise par défaut : XOF (Franc CFA)
2. 👤 Gestion des Membres
Description
Gestion complète du cycle de vie des membres d'une organisation.
Fonctionnalités Principales
Inscription de Membres
- Création d'un nouveau membre avec :
- Identité : prénom, nom, email (unique), téléphone
- Dates : naissance, adhésion
- Affiliation : organisation
- Rôles : chaîne de caractères pour les rôles multiples
Génération Automatique
- Numéro de membre : Format
UF{ANNEE}-{UUID}(ex:UF2025-A1B2C3D4)- Généré automatiquement si non fourni
- Unique dans tout le système
- Date d'adhésion : Automatiquement définie à
LocalDate.now()si non fournie - Date de naissance : Par défaut à 18 ans en arrière si non fournie (pour éviter les contraintes @NotNull)
Statuts Membres
- ACTIF : Membre actif et opérationnel
- INACTIF : Membre désactivé
- SUSPENDU : Membre temporairement suspendu
Recherche et Filtrage
- Recherche par nom, prénom, email
- Filtrage par statut, organisation, date d'adhésion
- Recherche avancée avec critères multiples :
- Âge (min/max)
- Période d'adhésion
- Organisation(s)
- Rôles
Statistiques
- Total de membres
- Membres actifs vs inactifs
- Nouveaux membres (30 derniers jours)
- Taux d'activité
Règles Métier
- Email unique dans tout le système
- Numéro de membre unique
- Un membre appartient à une seule organisation
- Vérification de majorité (18 ans) pour certaines opérations
- Calcul automatique de l'âge à partir de la date de naissance
3. 💰 Gestion des Cotisations
Description
Suivi complet des cotisations des membres : création, paiement, relances, statistiques.
Fonctionnalités Principales
Types de Cotisations
- MENSUELLE : Cotisation mensuelle récurrente
- ANNUELLE : Cotisation annuelle
- ADHESION : Frais d'adhésion initiale
- EVENEMENT : Participation à un événement payant
- FORMATION : Frais de formation
- PROJET : Contribution à un projet
- SOLIDARITE : Contribution au fonds de solidarité
Création de Cotisation
- Association à un membre
- Montant dû (obligatoire, positif)
- Code devise (ISO 3 lettres, défaut : XOF)
- Date d'échéance
- Période (année, mois optionnel)
- Description et observations
- Type de cotisation
Génération Automatique
- Numéro de référence : Format
COT-{ANNEE}-{TIMESTAMP}(ex:COT-2025-12345678)- Généré automatiquement si non fourni
- Unique dans tout le système
Statuts de Cotisation
- EN_ATTENTE : Créée mais non payée
- PAYEE : Intégralement payée
- EN_RETARD : Date d'échéance dépassée, non payée
- PARTIELLEMENT_PAYEE : Paiement partiel effectué
- ANNULEE : Cotisation annulée
Gestion des Paiements
- Enregistrement de paiements partiels ou complets
- Méthode de paiement (espèces, virement, mobile money, etc.)
- Référence de paiement
- Date de paiement
- Validation par un administrateur (optionnel)
Relances Automatiques
- Suivi du nombre de rappels
- Date du dernier rappel
- Détection automatique des cotisations en retard
Recherche et Filtrage
- Par membre
- Par statut
- Par type
- Par période (année, mois)
- Cotisations en retard
Statistiques
- Total de cotisations
- Cotisations payées
- Cotisations en retard
- Taux de paiement
- Montants collectés par période
Règles Métier
- Montant dû doit être positif
- Montant payé ne peut pas dépasser le montant dû
- Date d'échéance ne peut pas être antérieure à un an
- Une cotisation marquée "PAYEE" doit avoir montantPaye = montantDu
- Impossible de supprimer une cotisation déjà payée
- Calcul automatique du montant restant :
montantDu - montantPaye - Détection automatique des cotisations en retard :
dateEcheance < aujourd'hui && !payeeIntegralement()
4. 📅 Gestion des Événements
Description
Organisation complète d'événements : création, inscriptions, suivi, statistiques.
Fonctionnalités Principales
Types d'Événements
- ASSEMBLEE_GENERALE : Assemblée générale annuelle
- REUNION : Réunion régulière
- FORMATION : Session de formation
- CONFERENCE : Conférence ou séminaire
- ATELIER : Atelier pratique
- SEMINAIRE : Séminaire
- EVENEMENT_SOCIAL : Événement social (soirée, gala, etc.)
- MANIFESTATION : Manifestation publique
- CELEBRATION : Célébration (anniversaire, fête, etc.)
- AUTRE : Autre type d'événement
Création d'Événement
- Titre (obligatoire)
- Description détaillée
- Dates : début (obligatoire), fin (optionnelle)
- Lieu et adresse complète
- Type d'événement
- Capacité maximale (optionnelle, pour gérer les inscriptions)
- Prix de participation (optionnel)
- Instructions particulières
- Contact organisateur
- Matériel requis
- Visibilité publique
Gestion des Inscriptions
- Inscription requise (oui/non)
- Date limite d'inscription
- Capacité maximale
- Suivi des inscriptions :
- CONFIRMEE : Inscription validée
- EN_ATTENTE : En attente de validation
- ANNULEE : Inscription annulée
- REFUSEE : Inscription refusée
Statuts d'Événement
- PLANIFIE : Événement planifié (défaut)
- CONFIRME : Événement confirmé
- EN_COURS : Événement en cours
- TERMINE : Événement terminé
- ANNULE : Événement annulé
- REPORTE : Événement reporté
Règles d'Ouverture aux Inscriptions Un événement est ouvert aux inscriptions si :
inscriptionRequise = trueactif = true- Date limite d'inscription non dépassée
- Date de début non dépassée
- Capacité non atteinte (si définie)
- Statut = PLANIFIE ou CONFIRME
Statistiques
- Nombre total d'événements
- Événements actifs
- Événements à venir
- Événements en cours
- Événements passés
- Événements publics
- Taux de remplissage (inscrits / capacité)
- Taux d'activité
Règles Métier
- Titre obligatoire
- Date de début obligatoire et ne peut pas être dans le passé (sauf tolérance de 1 heure)
- Date de fin ne peut pas être antérieure à la date de début
- Capacité maximale doit être positive si définie
- Prix ne peut pas être négatif
- Impossible de supprimer un événement avec des inscriptions
- Impossible de changer le statut d'un événement terminé ou annulé
- Calcul automatique de la durée en heures
- Calcul automatique des places restantes
- Vérification si un membre est déjà inscrit
5. 🤝 Gestion des Adhésions
Description
Processus complet de demande, validation et paiement d'adhésion à une organisation.
Fonctionnalités Principales
Création de Demande d'Adhésion
- Membre demandeur
- Organisation cible
- Date de demande (automatique si non fournie)
- Frais d'adhésion (montant)
- Code devise (défaut : XOF)
Génération Automatique
- Numéro de référence : Format
ADH-{TIMESTAMP}-{UUID}(ex:ADH-1706541234567-A1B2C3D4)- Généré automatiquement si non fourni
- Unique dans tout le système
Workflow d'Adhésion
-
EN_ATTENTE (Statut initial)
- Demande soumise
- En attente de validation par l'organisation
-
APPROUVEE
- Demande approuvée par un administrateur
- Date d'approbation enregistrée
- Approuveur enregistré
- Passage automatique en attente de paiement
-
EN_PAIEMENT
- Paiement partiel effectué
- Montant payé < frais d'adhésion
-
PAYEE
- Paiement intégral effectué
- Montant payé >= frais d'adhésion
- Date de paiement enregistrée
-
REJETEE
- Demande rejetée par l'organisation
- Motif de rejet enregistré
-
ANNULEE
- Demande annulée (par le demandeur ou l'organisation)
Gestion des Paiements
- Enregistrement de paiements partiels ou complets
- Méthode de paiement
- Référence de paiement
- Date de paiement
- Calcul automatique du montant restant
Actions Métier
- Approuver : Valide une demande en attente
- Rejeter : Refuse une demande avec motif
- Enregistrer paiement : Enregistre un paiement (partiel ou complet)
- Annuler : Annule une demande (si non payée)
Recherche et Filtrage
- Par membre
- Par organisation
- Par statut
- Adhésions en attente
Statistiques
- Total d'adhésions
- Adhésions approuvées
- Adhésions en attente
- Adhésions payées
- Taux d'approbation
- Taux de paiement
Règles Métier
- Frais d'adhésion doivent être positifs
- Montant payé ne peut pas dépasser les frais d'adhésion
- Seules les adhésions EN_ATTENTE peuvent être approuvées ou rejetées
- Seules les adhésions APPROUVEE ou EN_PAIEMENT peuvent recevoir un paiement
- Impossible de supprimer une adhésion déjà payée
- Passage automatique en PAYEE si paiement intégral
- Passage automatique en EN_PAIEMENT si paiement partiel
6. ❤️ Système de Solidarité (Demandes d'Aide)
Description
Gestion complète du cycle de vie des demandes d'aide entre membres : soumission, évaluation, approbation, versement.
Fonctionnalités Principales
Types d'Aide
- FINANCIERE : Aide financière directe
- MATERIELLE : Fourniture de matériel
- ALIMENTAIRE : Aide alimentaire
- MEDICALE : Aide médicale
- SCOLAIRE : Aide scolaire (frais, fournitures)
- LOGEMENT : Aide au logement
- EMPLOI : Aide à l'emploi
- FORMATION : Aide à la formation
- AUTRE : Autre type d'aide
Création de Demande
- Titre et description détaillée
- Type d'aide
- Montant demandé (pour aide financière)
- Justification
- Documents fournis (liste)
- Urgence (oui/non)
- Membre demandeur
- Organisation traitante
Génération Automatique
- Numéro de référence : Format
DA-{ANNEE}-{NUMERO}(ex:DA-2025-123456)- Généré automatiquement
- Unique dans tout le système
- Score de priorité : Calculé automatiquement selon :
- Priorité (CRITIQUE, URGENTE, NORMALE, FAIBLE)
- Type d'aide (urgent ou non)
- Montant (si financière)
- Ancienneté de la demande
Workflow de Demande d'Aide
-
BROUILLON (Statut initial)
- Demande en cours de rédaction
- Modifiable par le demandeur
-
SOUMISE
- Demande soumise à l'organisation
- Date de soumission enregistrée
-
EN_ATTENTE
- En attente d'évaluation
-
EN_COURS_EVALUATION
- Évaluation en cours par un évaluateur
- Évaluateur assigné
-
INFORMATIONS_REQUISES
- Informations complémentaires demandées
- Retour au demandeur
-
APPROUVEE
- Demande approuvée intégralement
- Montant approuvé = montant demandé
- Date d'approbation enregistrée
-
APPROUVEE_PARTIELLEMENT
- Demande approuvée partiellement
- Montant approuvé < montant demandé
-
EN_COURS_TRAITEMENT
- Traitement en cours (préparation de l'aide)
-
EN_COURS_VERSEMENT
- Versement en cours (pour aide financière)
-
VERSEE
- Aide versée (pour aide financière)
- Date de versement enregistrée
-
LIVREE
- Aide livrée (pour aide matérielle)
-
TERMINEE
- Processus complètement terminé
-
REJETEE
- Demande rejetée
- Commentaire d'évaluation avec motif
-
ANNULEE
- Demande annulée
-
EXPIREE
- Demande expirée (délai dépassé)
-
SUSPENDUE
- Demande temporairement suspendue
-
EN_SUIVI
- Demande en suivi post-versement
-
CLOTUREE
- Demande clôturée définitivement
Historique des Statuts
- Traçabilité complète des changements de statut
- Date de chaque changement
- Auteur du changement
- Motif du changement
- Indication si changement automatique ou manuel
Priorités
- CRITIQUE : Intervention immédiate requise
- URGENTE : Intervention rapide requise
- NORMALE : Traitement normal
- FAIBLE : Traitement différé possible
Recherche et Filtrage
- Par organisation
- Par type d'aide
- Par statut
- Par priorité
- Par demandeur
- Demandes urgentes
- Demandes en retard (délai dépassé)
Statistiques
- Total de demandes
- Demandes par statut
- Demandes par type
- Montants demandés vs approuvés
- Taux d'approbation
- Délais moyens de traitement
Règles Métier
- Une demande ne peut être modifiée qu'en statut BROUILLON
- Transitions de statut validées (workflow strict)
- Calcul automatique du score de priorité
- Détection automatique des demandes en retard
- Calcul automatique du pourcentage d'approbation
- Vérification de l'urgence pour priorisation
- Historique complet et immuable des changements
🔄 Processus Métier Principaux
Processus 1 : Inscription d'un Nouveau Membre
-
Saisie des informations
- Nom, prénom, email, téléphone
- Date de naissance
- Organisation d'affiliation
-
Validation automatique
- Vérification unicité email
- Génération numéro de membre
- Définition date d'adhésion
-
Création du membre
- Persistance en base
- Attribution statut ACTIF par défaut
-
Mise à jour organisation
- Incrémentation nombre de membres
Processus 2 : Gestion d'une Cotisation
-
Création de la cotisation
- Association au membre
- Définition montant, type, échéance
- Génération numéro de référence
-
Suivi du paiement
- Statut initial : EN_ATTENTE
- Enregistrement paiements (partiels ou complets)
- Mise à jour automatique du statut
-
Relances
- Détection automatique des cotisations en retard
- Envoi de rappels (nombre de rappels suivi)
-
Finalisation
- Statut PAYEE quand intégralement payée
- Validation par un administrateur (optionnel)
Processus 3 : Organisation d'un Événement
-
Création de l'événement
- Saisie des informations (titre, dates, lieu, etc.)
- Définition capacité et prix
- Configuration inscriptions
-
Ouverture des inscriptions
- Vérification automatique des conditions
- Affichage public si visible
-
Gestion des inscriptions
- Inscription des membres
- Validation/refus des inscriptions
- Suivi du nombre d'inscrits
-
Exécution de l'événement
- Changement de statut (CONFIRME → EN_COURS → TERMINE)
- Suivi de la participation
Processus 4 : Demande d'Adhésion
-
Soumission de la demande
- Membre soumet une demande d'adhésion
- Statut initial : EN_ATTENTE
-
Évaluation
- Administrateur examine la demande
- Décision : APPROUVEE ou REJETEE
-
Paiement
- Si approuvée, enregistrement des paiements
- Passage automatique en PAYEE si intégral
-
Finalisation
- Membre officiellement admis
- Mise à jour de l'organisation
Processus 5 : Demande d'Aide (Solidarité)
-
Création de la demande
- Membre crée une demande (statut BROUILLON)
- Saisie des informations complètes
-
Soumission
- Passage en statut SOUMISE
- Assignation à l'organisation
-
Évaluation
- Assignation d'un évaluateur
- Statut : EN_COURS_EVALUATION
- Analyse de la demande
-
Décision
- APPROUVEE / APPROUVEE_PARTIELLEMENT / REJETEE
- Enregistrement du montant approuvé (si financière)
-
Traitement
- Préparation de l'aide
- Versement (si financière) ou livraison (si matérielle)
-
Suivi
- Statut TERMINEE ou CLOTUREE
- Historique complet conservé
📊 Indicateurs et Statistiques
Indicateurs Organisationnels
- Nombre total de membres
- Nombre de membres actifs
- Taux d'activité (%)
- Nouveaux membres (30 jours)
- Budget annuel
- Montant cotisations collectées
Indicateurs Financiers
- Total cotisations créées
- Cotisations payées
- Cotisations en retard
- Taux de paiement (%)
- Montants collectés par période
- Adhésions payées
Indicateurs Événementiels
- Total événements
- Événements à venir
- Événements en cours
- Taux de remplissage moyen
- Participation moyenne
Indicateurs Solidarité
- Total demandes d'aide
- Demandes urgentes
- Demandes approuvées
- Montants demandés vs approuvés
- Taux d'approbation
- Délais moyens de traitement
🔐 Sécurité et Contrôle d'Accès
Authentification
- Keycloak OIDC : Authentification centralisée
- Tokens JWT pour l'accès aux APIs
- Refresh automatique des tokens
Autorisations par Rôle
- SUPER_ADMIN : Accès total
- ADMIN : Gestion de son organisation
- MEMBRE : Consultation et actions limitées
- ORGANISATEUR_EVENEMENT : Gestion événements
Audit et Traçabilité
- AuditLog : Enregistrement de toutes les actions importantes
- Champs d'audit sur toutes les entités :
creePar: CréateurmodifiePar: Dernier modificateurdateCreation: Date de créationdateModification: Date de modificationversion: Version optimiste (gestion des conflits)
🎨 Principes de Conception
DRY (Don't Repeat Yourself)
- Composants réutilisables pour l'UI
- Services partagés
- DTOs standardisés
WOU (Write Once Use)
- Bibliothèque de composants JSF/PrimeFaces
- Fragments réutilisables
- Templates standardisés
Séparation des Responsabilités
- API : Contrats et interfaces
- Implémentation : Logique métier et persistance
- Client : Interface utilisateur
Traçabilité Complète
- Historique des modifications
- Logs d'audit
- Versioning optimiste
🚀 Évolutions Futures
Court Terme
- Intégration paiements mobiles (Wave, Orange Money, MTN Mobile Money)
- Notifications automatiques (email, SMS)
- Export de rapports (PDF, Excel)
Moyen Terme
- Application mobile native (Flutter)
- Tableau de bord analytique
- Gestion documentaire (upload de documents)
Long Terme
- Intelligence artificielle pour recommandations
- Prédiction des cotisations en retard
- Optimisation automatique des événements
📞 Support et Maintenance
Support Utilisateur
- Documentation complète
- Formation des administrateurs
- Support technique
Maintenance
- Sauvegardes régulières
- Mises à jour de sécurité
- Monitoring des performances
Document généré le : 2025-01-29
Version UnionFlow : 2.0
Auteur : UnionFlow Team