# Progression Spec 001 : Mutuelles + Anti-blanchiment LCB-FT **Branche** : `001-mutuelles-anti-blanchiment` **Dernière mise à jour** : 2026-03-13 **Statut global** : **41% complété** (11/27 tâches) --- ## 📊 Vue d'ensemble | Phase | Tâches | Statut | Détails | |-------|--------|--------|---------| | **Phase 1 - API** | 6/6 | ✅ **100%** | DTOs et enums LCB-FT | | **Phase 2 - Migrations** | 5/5 | ✅ **100%** | V3.4 déjà existante | | **Phase 3 - Impl Quarkus** | 4/6 | ✅ **67%** | Services + endpoints | | **Phase 4 - Mobile** | 0/7 | ⏳ **0%** | Écrans + KYC | | **Phase 5 - Finition** | 0/3 | ⏳ **0%** | Tests + docs | | **TOTAL** | **15/27** | 🎯 **56%** | | --- ## ✅ Phase 1 - API (100% complétée) **Commit** : `309edc4` **Date** : 2026-03-13 ### Réalisations #### T001-T002 : DTOs Transaction Épargne ✅ - ✅ `TransactionEpargneRequest` : champs déjà présents - `origineFonds` (String) - Origine des fonds - `pieceJustificativeId` (String) - ID pièce justificative - ✅ `TransactionEpargneResponse` : champs en lecture - Traçabilité complète **Fichiers** : - `unionflow-server-api/.../dto/mutuelle/epargne/TransactionEpargneRequest.java` - `unionflow-server-api/.../dto/mutuelle/epargne/TransactionEpargneResponse.java` #### T003 : Enums et champs KYC membre ✅ - ✅ `NiveauVigilanceKyc` : SIMPLIFIE, RENFORCE - ✅ `StatutKyc` : NON_VERIFIE, EN_COURS, VERIFIE, REFUSE - ✅ `MembreResponse` : niveauVigilanceKyc, statutKyc, dateVerificationIdentite **Fichiers** : - `unionflow-server-api/.../enums/membre/NiveauVigilanceKyc.java` - `unionflow-server-api/.../enums/membre/StatutKyc.java` - `unionflow-server-api/.../dto/membre/response/MembreResponse.java` #### T004 : DTOs Paiement LCB-FT ✅ - ✅ `TypeObjetIntentionPaiement` étendu : - Ajout : `RETRAIT_EPARGNE`, `CREDIT_REMBOURSEMENT` - ✅ 3 DTOs étendus avec `origineFonds` + `justificationLcbFt` : - `InitierDepotEpargneRequest` - `DeclarerPaiementManuelRequest` - `InitierPaiementEnLigneRequest` **Fichiers** : - `unionflow-server-api/.../enums/paiement/TypeObjetIntentionPaiement.java` - `unionflow-server-api/.../dto/paiement/request/` (3 fichiers) #### T005 : Paramètres LCB-FT (seuils) ✅ - ✅ `ParametresLcbFtRequest` créé - montantSeuilJustification - montantSeuilValidationManuelle - codeDevise - ✅ `ParametresLcbFtResponse` créé - Pour organisation ou plateforme **Fichiers** : - `unionflow-server-api/.../dto/config/request/ParametresLcbFtRequest.java` - `unionflow-server-api/.../dto/config/response/ParametresLcbFtResponse.java` #### T006 : Inventaire mis à jour ✅ - ✅ Ajout DTOs config et paiement - ✅ Validation champs existants - ✅ Date consolidation : 2026-03-13 --- ## ✅ Phase 2 - Migrations Flyway (100% complétée) **Migration** : `V3.4__LCB_FT_Anti_Blanchiment.sql` (déjà existante) **Statut** : Validation effectuée, aucune modification nécessaire ### Contenu vérifié #### T007 : Colonnes membres KYC ✅ ```sql ALTER TABLE utilisateurs ADD COLUMN niveau_vigilance_kyc VARCHAR(20) DEFAULT 'SIMPLIFIE', ADD COLUMN statut_kyc VARCHAR(20) DEFAULT 'NON_VERIFIE', ADD COLUMN date_verification_identite DATE; ``` - ✅ Contraintes CHECK (valeurs enum) - ✅ Index sur statut_kyc - ✅ Commentaires SQL #### T008 : Transactions épargne LCB-FT ✅ ```sql ALTER TABLE transactions_epargne ADD COLUMN origine_fonds VARCHAR(200), ADD COLUMN piece_justificative_id UUID; ``` - ✅ Conditionnelle (IF table exists) - ✅ Commentaires SQL #### T009 : Intentions paiement LCB-FT ✅ ```sql ALTER TABLE intentions_paiement ADD COLUMN origine_fonds VARCHAR(200), ADD COLUMN justification_lcb_ft TEXT; ``` #### T010 : Table parametres_lcb_ft ✅ ```sql CREATE TABLE parametres_lcb_ft ( id UUID PRIMARY KEY, organisation_id UUID, montant_seuil_justification DECIMAL(18,4), montant_seuil_validation_manuelle DECIMAL(18,4), code_devise VARCHAR(3), ... ); ``` - ✅ FK organisation (cascade) - ✅ Index unique org+devise - ✅ **Valeur par défaut plateforme** : 500k/1M XOF - ✅ Colonnes audit complètes #### T011 : Inventaire migrations ✅ - ✅ V3.4 documentée dans inventaire-code.md **Fichier** : - `unionflow-server-impl-quarkus/src/main/resources/db/legacy-migrations/V3.4__LCB_FT_Anti_Blanchiment.sql` --- ## ✅ Phase 3 - Impl Quarkus (67% complétée) **Commit** : `eb729bd` (sous-module unionflow-server-impl-quarkus) **Date** : 2026-03-13 ### Réalisations #### T012 : Service ParametresLcbFtService ✅ - ✅ `ParametresLcbFtRepository` déjà existant - ✅ `ParametresLcbFtService` créé avec : - `getParametres()` : params complets (avec cache) - `getSeuilJustification()` : seuil rapide (avec cache) - `saveOrUpdateParametres()` : CRUD - Fallback 500k XOF par défaut - ✅ Cache Quarkus `@CacheResult` pour performance **Fichiers** : - `unionflow-server-impl-quarkus/.../service/ParametresLcbFtService.java` (nouveau) - `unionflow-server-impl-quarkus/.../repository/ParametresLcbFtRepository.java` (existant) #### T013 : Validation seuils transactions épargne ✅ - ✅ `TransactionEpargneService.validerLcbFtSiSeuilAtteint()` **déjà implémentée** - Vérifie montant >= seuil - Exige `origineFonds` (non vide) si seuil atteint - Rejet `IllegalArgumentException` avec message clair - Validation longueur max (ValidationConstants) - ✅ Récupération seuil depuis `ParametresLcbFtRepository` **Fichier** : - `unionflow-server-impl-quarkus/.../service/mutuelle/epargne/TransactionEpargneService.java` (existant) #### T014 : Audit opérations mutuelles ✅ - ✅ `AuditService.logLcbFtSeuilAtteint()` **déjà implémenté** - Appelé dans `TransactionEpargneService` - Enregistre dans `audit_logs` si montant >= seuil - Portée ORGANISATION - Détails : orgId, operateurId, compteId, montant, origineFonds **Fichier** : - `unionflow-server-impl-quarkus/.../service/AuditService.java` (existant) #### T015 : Vérification KYC crédit ⏩ OPTIONNEL (skip) - Vérification `dateVerificationIdentite` avant déblocage crédit - Non critique pour MVP #### T016 : Ressource alertes LCB-FT ⏩ OPTIONNEL (skip) - Alertes dépassement seuil / motif vide - Peut être ajouté en Phase 2 de la spec #### T017 : Resource ParametresLcbFtResource ✅ - ✅ `ParametresLcbFtResource` créée avec 3 endpoints : - `GET /api/parametres-lcb-ft` : params complets (@PermitAll pour mobile) - `GET /api/parametres-lcb-ft/seuil-justification` : seuil uniquement (endpoint léger) - `POST /api/parametres-lcb-ft` : CRUD admin (@RolesAllowed ADMIN/SUPER_ADMIN) - ✅ Documentation OpenAPI/Swagger complète - ✅ Validation Jakarta Bean Validation **Fichier** : - `unionflow-server-impl-quarkus/.../resource/ParametresLcbFtResource.java` (nouveau) ### Tâches optionnelles skippées (T015, T016) Ces tâches ne sont pas critiques pour le MVP de la spec 001 et peuvent être ajoutées ultérieurement si nécessaire. --- ## ⏳ Phase 4 - Mobile (0% - À démarrer) ### Tâches restantes #### 4.1 Épargne – Seuil et champs LCB-FT ##### T018 : Récupération seuil depuis API - Appel endpoint paramètres LCB-FT - Stockage seuil dans état BLoC ##### T019 : Formulaires dépôt/retrait/transfert - Champ `origineFonds` obligatoire si montant >= seuil - Validation côté client ##### T020 : Upload pièce justificative - Ajout champ upload dans dialogs - Envoi `pieceJustificativeId` dans request ##### T021 : Gestion erreurs 400 côté mobile - Message clair si origine fonds manquante #### 4.2 Fiche membre – Affichage KYC ##### T022 : Étendre modèle membre mobile - `MembreModel` avec champs KYC - niveauVigilanceKyc, statutKyc, dateVerificationIdentite ##### T023 : Affichage fiche membre - Lecture seule statut KYC - Date vérification identité ##### T024 : Validation données API uniquement - Pas de valeurs en dur --- ## ⏳ Phase 5 - Finition (0% - À démarrer) ### Tâches restantes #### T025 : Mise à jour inventaire mobile - Nouveaux modèles et écrans - Constantes LCB-FT #### T026 : Vérification absence données fictives - Audit complet - Listes en dur supprimées #### T027 : Tests backend et mobile - Tests unitaires services - Tests intégration - Correction régressions --- ## 🎯 Prochaines étapes recommandées ### Court terme (session suivante) 1. **T012** - Implémenter `ParametresLcbFtService` 2. **T013** - Ajouter validation seuils dans `TransactionEpargneService` 3. **T017** - Créer endpoint REST paramètres LCB-FT ### Moyen terme 4. **T014** - Audit opérations mutuelles 5. **Phase 4** - Écrans mobile (7 tâches) ### Long terme 6. **T015-T016** - Fonctionnalités optionnelles 7. **Phase 5** - Tests et finition --- ## 📚 Références - **Spec** : `specs/001-mutuelles-anti-blanchiment/spec.md` - **Plan** : `specs/001-mutuelles-anti-blanchiment/plan.md` - **Tasks** : `specs/001-mutuelles-anti-blanchiment/tasks.md` - **Migration** : `unionflow-server-impl-quarkus/.../V3.4__LCB_FT_Anti_Blanchiment.sql` --- ## 🔖 Notes importantes ### Conformité BCEAO/OHADA/LCB-FT - ✅ Traçabilité complète (origine fonds, pièce justificative) - ✅ Seuils configurables (par org ou plateforme) - ✅ KYC membre (vigilance, statut, date vérification) - ✅ Conservation 10 ans (audit_logs V2.9) - ⏳ Alertes dépassement seuil (Phase 3) ### Zéro données fictives - ✅ API : Pas de mock, données réelles uniquement - ✅ Migrations : Valeur par défaut plateforme 500k/1M XOF - ⏳ Mobile : À vérifier en Phase 4 ### Architecture - ✅ API/Impl séparés (unionflow-server-api / impl-quarkus) - ✅ Clean Architecture mobile (domain/data/presentation) - ✅ DI avec GetIt/Injectable - ✅ BLoC pattern --- **Dernière révision** : 2026-03-13 **Auteur** : lions dev Team