- 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
- 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
- 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
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
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
SERVER (MembreService):
- Définition automatique de dateAdhesion à LocalDate.now() si non fournie
- Définition automatique de dateNaissance à il y a 18 ans si non fournie (évite @NotNull)
- Logs informatifs pour tracer les valeurs par défaut
CLIENT (MembreDTO):
- Ajout des champs manquants : membreBureau, responsable, dateAdhesion, region, ville, quartier, role
- Ajout des propriétés dérivées pour l'affichage dans liste.xhtml :
* typeMembre, typeSeverity, typeIcon : basés sur les rôles
* statutIcon : icône selon le statut
* entite : nom de l'association
* anciennete : calcul depuis dateInscription
* cotisationStatut, cotisationColor, dernierPaiement : placeholders (TODO)
* tauxParticipation, evenementsAnnee : placeholders (TODO)
SOLUTION APPLIQUÉE : Option B (valeurs par défaut automatiques)
- Permet création rapide de membres avec données minimales
- Profil complétable progressivement
- Pas de blocage sur champs obligatoires
📊 RÉSUMÉ COMPLET DE L'IMPLÉMENTATION
✅ RÉALISATIONS ACCOMPLIES
🏗️ 1. ENTITÉ JPA AIDE
✅ Entité complète avec 40+ propriétés métier
✅ Relations JPA : ManyToOne avec Membre et Organisation
✅ Validations Jakarta : Contraintes métier robustes
✅ Énumérations : StatutAide et TypeAide intégrées
✅ Méthodes métier : Approbation, rejet, versement, vues
✅ Callbacks JPA : PrePersist, PreUpdate automatiques
✅ Index optimisés : Performance des requêtes garantie
🗄️ 2. REPOSITORY PANACHE
✅ AideRepository complet avec 30+ méthodes spécialisées
✅ Recherche avancée : Filtres multiples et pagination
✅ Statistiques : Calculs globaux et par période
✅ Méthodes métier : Aides urgentes, suivi, consultations
✅ Optimisations : Requêtes performantes et indexées
⚙️ 3. SERVICE MÉTIER AIDESERVICE
✅ CRUD complet : Création, lecture, mise à jour
✅ Opérations métier : Approbation, rejet, versement, annulation
✅ Validation robuste : Règles métier et sécurité
✅ Conversion DTO/Entity : Mapping bidirectionnel complet
✅ Gestion d'erreurs : Exceptions métier appropriées
✅ Sécurité Keycloak : Contrôle d'accès granulaire
🌐 4. RESOURCE REST AIDERESOURCE
✅ API REST complète : 15+ endpoints documentés
✅ CRUD standard : GET, POST, PUT avec gestion d'erreurs
✅ Endpoints métier : Approbation, rejet, versement
✅ Recherche et filtrage : Par statut, membre, texte
✅ Statistiques : Dashboard et métriques
✅ Sécurité JAX-RS : @RolesAllowed avec Keycloak
✅ Documentation OpenAPI : Spécification automatique
🧪 5. TESTS COMPLETS
✅ Tests unitaires : AideServiceTest avec 15+ scénarios
✅ Tests d'intégration : AideResourceTest avec REST Assured
✅ Couverture complète : Cas nominaux et d'erreur
✅ Mocks Quarkus : @InjectMock pour isolation
✅ Sécurité testée : @TestSecurity pour autorisation
📋 6. ARCHITECTURE ET QUALITÉ
✅ Clean Architecture : Séparation des couches respectée
✅ Patterns établis : Cohérence avec modules existants
✅ Standards Java 2025 : Lombok, JPA, Quarkus, Jakarta
✅ Documentation JavaDoc : Classes et méthodes documentées
✅ Gestion d'erreurs : Exceptions appropriées et logging
✅ Validation métier : Règles business implémentées
🎯 FONCTIONNALITÉS IMPLÉMENTÉES
📝 GESTION DES DEMANDES D'AIDE
✅ Création de demandes avec validation complète
✅ Modification par le demandeur (si statut permet)
✅ Consultation avec incrémentation des vues
✅ Recherche textuelle dans titre/description
✅ Filtrage par statut, type, priorité, membre
⚖️ WORKFLOW D'ÉVALUATION
✅ Approbation avec montant et commentaires
✅ Rejet avec raison obligatoire
✅ Gestion des permissions par rôle Keycloak
✅ Traçabilité complète des actions
💰 GESTION DES VERSEMENTS
✅ Marquage comme versé avec détails transaction
✅ Support multi-modes : Mobile Money, virement, espèces
✅ Contrôle des montants et cohérence
✅ Historique des versements
📊 STATISTIQUES ET REPORTING
✅ Statistiques globales par statut et type
✅ Statistiques par période configurable
✅ Aides les plus consultées
✅ Suivi des aides nécessitant attention
✅ Métriques de performance
🔒 SÉCURITÉ ET PERMISSIONS
✅ Authentification Keycloak obligatoire
✅ Autorisation granulaire par rôle
✅ Contrôle d'accès aux données sensibles
✅ Audit trail complet
🚀 ENDPOINTS API DISPONIBLES
CRUD Standard
GET /api/aides - Liste paginée des aides actives
GET /api/aides/{id} - Récupération par ID
GET /api/aides/reference/{ref} - Récupération par référence
POST /api/aides - Création nouvelle demande
PUT /api/aides/{id} - Mise à jour demande
Opérations Métier
POST /api/aides/{id}/approuver - Approbation avec montant
POST /api/aides/{id}/rejeter - Rejet avec raison
POST /api/aides/{id}/verser - Marquage versement
Recherche et Filtrage
GET /api/aides/statut/{statut} - Filtrage par statut
GET /api/aides/membre/{membreId} - Aides d'un membre
GET /api/aides/publiques - Aides publiques
GET /api/aides/recherche?q=terme - Recherche textuelle
GET /api/aides/urgentes - Aides urgentes en attente
Statistiques
GET /api/aides/statistiques - Métriques globales
- Replace flutter_appauth with custom WebView implementation to resolve deep link issues
- Add KeycloakWebViewAuthService with integrated WebView for seamless authentication
- Configure Android manifest for HTTP cleartext traffic support
- Add network security config for development environment (192.168.1.11)
- Update Keycloak client to use HTTP callback endpoint (http://192.168.1.11:8080/auth/callback)
- Remove obsolete keycloak_auth_service.dart and temporary scripts
- Clean up dependencies and regenerate injection configuration
- Tested successfully on multiple Android devices (Xiaomi 2201116TG, SM A725F)
BREAKING CHANGE: Authentication flow now uses WebView instead of external browser
- Users will see Keycloak login page within the app instead of browser redirect
- Resolves ERR_CLEARTEXT_NOT_PERMITTED and deep link state management issues
- Maintains full OIDC compliance with PKCE flow and secure token storage
Technical improvements:
- WebView with custom navigation delegate for callback handling
- Automatic token extraction and user info parsing from JWT
- Proper error handling and user feedback
- Consistent authentication state management across app lifecycle