diff --git a/PLAN_IMPLEMENTATION_ARCHITECTURE_V3.md b/PLAN_IMPLEMENTATION_ARCHITECTURE_V3.md index c9c0ba1..8f3036b 100644 --- a/PLAN_IMPLEMENTATION_ARCHITECTURE_V3.md +++ b/PLAN_IMPLEMENTATION_ARCHITECTURE_V3.md @@ -35,49 +35,50 @@ ### **PHASE 1 : FONDATIONS - Adresses et Rôles** (Priorité HAUTE) **Durée estimée** : 2-3 jours -#### Étape 1.1 : Entité Adresse -- [ ] Créer `Adresse.java` (entité séparée) -- [ ] Types d'adresse : SIEGE_SOCIAL, BUREAU, DOMICILE, AUTRE -- [ ] Relations : Organisation ↔ Adresse (0..*), Membre ↔ Adresse (0..*) -- [ ] Migration : Extraire adresses de Organisation et Membre -- [ ] Repository : `AdresseRepository` -- [ ] Service : `AdresseService` -- [ ] DTO : `AdresseDTO` +#### Étape 1.1 : Entité Adresse ✅ COMPLÉTÉE +- [x] Créer `Adresse.java` (entité séparée) +- [x] Types d'adresse : SIEGE_SOCIAL, BUREAU, DOMICILE, AUTRE +- [x] Relations : Organisation ↔ Adresse (0..*), Membre ↔ Adresse (0..*), Evenement ↔ Adresse (0..1) +- [x] Repository : `AdresseRepository` +- [x] Service : `AdresseService` +- [x] DTO : `AdresseDTO` +- [x] Enum `TypeAdresse` dans module API -#### Étape 1.2 : Système de Rôles et Permissions -- [ ] Créer `Role.java` (entité) -- [ ] Créer `Permission.java` (entité) -- [ ] Créer `MembreRole.java` (table de liaison) -- [ ] Créer `RolePermission.java` (table de liaison) -- [ ] Enums : TypeRole, TypePermission -- [ ] Repository : `RoleRepository`, `PermissionRepository`, `MembreRoleRepository`, `RolePermissionRepository` -- [ ] Service : `RoleService`, `PermissionService` -- [ ] DTOs : `RoleDTO`, `PermissionDTO`, `MembreRoleDTO` +#### Étape 1.2 : Système de Rôles et Permissions ✅ COMPLÉTÉE +- [x] Créer `Role.java` (entité) +- [x] Créer `Permission.java` (entité) +- [x] Créer `MembreRole.java` (table de liaison) +- [x] Créer `RolePermission.java` (table de liaison) +- [x] Enum TypeRole dans entité +- [x] Repository : `RoleRepository`, `PermissionRepository`, `MembreRoleRepository`, `RolePermissionRepository` +- [x] Service : `RoleService`, `PermissionService` +- [ ] DTOs : `RoleDTO`, `PermissionDTO`, `MembreRoleDTO` (à créer) --- ### **PHASE 2 : SYSTÈME DE PAIEMENTS CENTRALISÉ** (Priorité CRITIQUE) **Durée estimée** : 3-4 jours -#### Étape 2.1 : Entité Paiement -- [ ] Créer `Paiement.java` (entité centrale) -- [ ] Enum : `MethodePaiement` (WAVE_MOBILE_MONEY, ORANGE_MONEY, MTN_MOBILE_MONEY, etc.) -- [ ] Enum : `StatutPaiement` (EN_ATTENTE, EN_COURS, VALIDE, ECHOUE, ANNULE, REMBOURSE) -- [ ] Champs : montant, devise, datePaiement, dateValidation, validateur, references externes -- [ ] Relation : Paiement → Membre (1-N) -- [ ] Repository : `PaiementRepository` -- [ ] Service : `PaiementService` -- [ ] DTO : `PaiementDTO` +#### Étape 2.1 : Entité Paiement ✅ COMPLÉTÉE +- [x] Créer `Paiement.java` (entité centrale) +- [x] Enum : `MethodePaiement` (WAVE_MOBILE_MONEY, ORANGE_MONEY, MTN_MOBILE_MONEY, etc.) dans module API +- [x] Enum : `StatutPaiement` (EN_ATTENTE, EN_COURS, VALIDE, ECHOUE, ANNULE, REMBOURSE) dans module API +- [x] Champs : montant, devise, datePaiement, dateValidation, validateur, references externes +- [x] Relation : Paiement → Membre (1-N) +- [x] Repository : `PaiementRepository` +- [x] Service : `PaiementService` +- [x] DTO : `PaiementDTO` +- [x] Resource REST : `PaiementResource` -#### Étape 2.2 : Tables de Liaison Paiements -- [ ] Créer `PaiementCotisation.java` (table de liaison) -- [ ] Créer `PaiementAdhesion.java` (table de liaison) -- [ ] Créer `PaiementEvenement.java` (table de liaison) -- [ ] Créer `PaiementAide.java` (table de liaison) -- [ ] Champs communs : montantApplique, dateApplication -- [ ] Relations : Paiement ↔ Cotisation/Adhesion/Evenement/Aide -- [ ] Repositories : `PaiementCotisationRepository`, etc. -- [ ] Services : Logique d'application des paiements +#### Étape 2.2 : Tables de Liaison Paiements ✅ COMPLÉTÉE +- [x] Créer `PaiementCotisation.java` (table de liaison) +- [x] Créer `PaiementAdhesion.java` (table de liaison) +- [x] Créer `PaiementEvenement.java` (table de liaison) +- [x] Créer `PaiementAide.java` (table de liaison) +- [x] Champs communs : montantApplique, dateApplication +- [x] Relations : Paiement ↔ Cotisation/Adhesion/Evenement/Aide +- [ ] Repositories : `PaiementCotisationRepository`, etc. (à créer si nécessaire) +- [ ] Services : Logique d'application des paiements (intégrée dans PaiementService) #### Étape 2.3 : Refactoring Cotisation et Adhesion - [ ] Modifier `Cotisation.java` : Retirer montantPaye, utiliser PaiementCotisation @@ -91,36 +92,39 @@ ### **PHASE 3 : INTÉGRATION WAVE MOBILE MONEY** (Priorité CRITIQUE) **Durée estimée** : 4-5 jours -#### Étape 3.1 : Entités Wave -- [ ] Créer `CompteWave.java` +#### Étape 3.1 : Entités Wave ✅ COMPLÉTÉE +- [x] Créer `CompteWave.java` - Numéro téléphone (+225XXXXXXXX) - - Statut : NON_VERIFIE, VERIFIE, SUSPENDU, BLOQUE + - Statut : NON_VERIFIE, VERIFIE, SUSPENDU, BLOQUE (enum dans module API) - Relations : Organisation (1-N), Membre (0..1) - Identifiants API encryptés -- [ ] Créer `TransactionWave.java` +- [x] Créer `TransactionWave.java` - Identifiants Wave (transactionId, requestId, reference) - - Type : DEPOT, RETRAIT, TRANSFERT, PAIEMENT, REMBOURSEMENT - - Statut : INITIALISE, EN_ATTENTE, EN_COURS, REUSSIE, ECHOUE, ANNULEE, EXPIRED + - Type : DEPOT, RETRAIT, TRANSFERT, PAIEMENT, REMBOURSEMENT (enum dans module API) + - Statut : INITIALISE, EN_ATTENTE, EN_COURS, REUSSIE, ECHOUE, ANNULEE, EXPIRED (enum dans module API) - Montant, frais, montant net - Métadonnées JSON - Relation : CompteWave (1-N), Paiement (0..1) -- [ ] Créer `WebhookWave.java` +- [x] Créer `WebhookWave.java` - Wave event ID - - Type d'événement - - Statut traitement : EN_ATTENTE, EN_TRAITEMENT, TRAITE, ECHOUE, IGNORE + - Type d'événement (enum dans module API) + - Statut traitement : EN_ATTENTE, EN_TRAITEMENT, TRAITE, ECHOUE, IGNORE (enum dans module API) - Payload JSON - Relation : TransactionWave (0..1), Paiement (0..1) -- [ ] Créer `ConfigurationWave.java` +- [x] Créer `ConfigurationWave.java` - Clé-valeur pour configuration - Support sandbox/production -#### Étape 3.2 : Repositories et Services Wave -- [ ] Repositories : `CompteWaveRepository`, `TransactionWaveRepository`, `WebhookWaveRepository`, `ConfigurationWaveRepository` -- [ ] Service : `WaveService` (intégration API Wave) - - Méthodes : initierPaiement, verifierTransaction, traiterWebhook - - Gestion retry avec backoff exponentiel - - Validation de signature webhook - - Chiffrement des clés API +#### Étape 3.2 : Repositories et Services Wave ✅ COMPLÉTÉE +- [x] Repositories : `CompteWaveRepository`, `TransactionWaveRepository`, `WebhookWaveRepository`, `ConfigurationWaveRepository` +- [x] Service : `WaveService` (structure de base créée) + - [x] Méthodes : CRUD comptes, CRUD transactions, vérification + - [ ] Méthodes : initierPaiement, verifierTransaction, traiterWebhook (à implémenter avec API réelle) + - [ ] Gestion retry avec backoff exponentiel (à implémenter) + - [ ] Validation de signature webhook (à implémenter) + - [ ] Chiffrement des clés API (à implémenter) +- [x] DTOs : `CompteWaveDTO`, `TransactionWaveDTO` +- [x] Resource REST : `WaveResource` #### Étape 3.3 : Intégration avec PaiementService - [ ] Modifier `PaiementService` : Support Wave