diff --git a/unionflow/specs/001-mutuelles-anti-blanchiment/PROGRESSION.md b/unionflow/specs/001-mutuelles-anti-blanchiment/PROGRESSION.md index c83330d..91bb2da 100644 --- a/unionflow/specs/001-mutuelles-anti-blanchiment/PROGRESSION.md +++ b/unionflow/specs/001-mutuelles-anti-blanchiment/PROGRESSION.md @@ -2,7 +2,7 @@ **Branche** : `001-mutuelles-anti-blanchiment` **Dernière mise à jour** : 2026-03-13 -**Statut global** : **41% complété** (11/27 tâches) +**Statut global** : **67% complété** (18/27 tâches) --- @@ -13,9 +13,9 @@ | **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 4 - Mobile** | 3/7 | 🚧 **43%** | Épargne LCB-FT (3/4), KYC (0/3) | | **Phase 5 - Finition** | 0/3 | ⏳ **0%** | Tests + docs | -| **TOTAL** | **15/27** | 🎯 **56%** | | +| **TOTAL** | **18/27** | 🎯 **67%** | | --- @@ -202,39 +202,106 @@ Ces tâches ne sont pas critiques pour le MVP de la spec 001 et peuvent être aj --- -## ⏳ Phase 4 - Mobile (0% - À démarrer) +## 🚧 Phase 4 - Mobile (43% complétée) -### Tâches restantes +**Commits** : `74161df`, `5ef8ae1`, `6231847` +**Date** : 2026-03-13 -#### 4.1 Épargne – Seuil et champs LCB-FT +### Réalisations -##### T018 : Récupération seuil depuis API -- Appel endpoint paramètres LCB-FT -- Stockage seuil dans état BLoC +#### 4.1 Épargne – Seuil et champs LCB-FT (75% - 3/4) -##### T019 : Formulaires dépôt/retrait/transfert -- Champ `origineFonds` obligatoire si montant >= seuil -- Validation côté client +##### T018 : Récupération seuil depuis API ✅ +**Commit** : `74161df` -##### T020 : Upload pièce justificative -- Ajout champ upload dans dialogs -- Envoi `pieceJustificativeId` dans request +Nouveaux fichiers : +- ✅ `SeuilLcbFtModel` : modèle pour seuil récupéré depuis API + - `montantSeuil` (double), `codeDevise` (String) + - Factory `defaultSeuil()` fallback 500k XOF +- ✅ `ParametresLcbFtRepository` : appel `/api/parametres-lcb-ft/seuil-justification` + - `@lazySingleton` pour injection GetIt + - Fallback automatique si API échoue -##### T021 : Gestion erreurs 400 côté mobile -- Message clair si origine fonds manquante +Modifications : +- ✅ `DepotEpargneDialog` : charge seuil au `initState()` +- ✅ `RetraitEpargneDialog` : idem +- ✅ Remplace constante `kSeuilOrigineFondsObligatoireXOF` par `_seuilLcbFt` dynamique -#### 4.2 Fiche membre – Affichage KYC +Impact : +- Seuil LCB-FT maintenant configurable par organisation depuis backend +- Messages utilisateur avec montant seuil dynamique +- Conformité BCEAO : seuils centralisés et auditables -##### T022 : Étendre modèle membre mobile +**Fichiers** : +- `lib/core/data/models/seuil_lcb_ft_model.dart` +- `lib/core/data/repositories/parametres_lcb_ft_repository.dart` +- `lib/features/epargne/presentation/widgets/depot_epargne_dialog.dart` +- `lib/features/epargne/presentation/widgets/retrait_epargne_dialog.dart` + +##### T019 : Formulaires avec origineFonds obligatoire ✅ +**Commit** : `5ef8ae1` + +Modifications : +- ✅ `TransfertEpargneDialog` : ajout champ origine des fonds + - Import `ParametresLcbFtRepository` + `lcb_ft_constants` + - Chargement seuil au `initState()` + - Validation conditionnelle : `montant >= seuil` → origine fonds obligatoire + - Message clair avec montant seuil dynamique + - `onChanged` sur montant pour mise à jour UI temps réel + +Impact : +- Les 3 types d'opérations (dépôt, retrait, transfert) ont la validation LCB-FT +- Champ `origineFonds` transmis dans `TransactionEpargneRequest` +- Conformité BCEAO/OHADA sur tous les flux épargne + +**Fichier** : +- `lib/features/epargne/presentation/widgets/transfert_epargne_dialog.dart` + +##### T020 : Upload pièce justificative ⏩ OPTIONNEL (skip) +- Champ `pieceJustificativeId` déjà présent dans `TransactionEpargneRequest` +- Peut être ajouté ultérieurement si besoin métier +- Non bloquant pour MVP : description texte dans `origineFonds` suffit + +##### T021 : Gestion erreurs 400 LCB-FT ✅ +**Commit** : `6231847` + +Nouveau fichier : +- ✅ `ErrorFormatter` : utilitaire central pour formater les erreurs backend + - Détecte et formate spécialement les erreurs LCB-FT (origine fonds manquante) + - Détecte erreurs KYC, réseau, 400/401/403/404/500 + - Messages conviviaux avec emojis (🛡️ pour LCB-FT/KYC) + - Durée d'affichage adaptée : 6s pour LCB-FT, 3s sinon + - `isLcbFtError()`, `isCritical()` helpers + +Modifications 3 dialogs (dépôt, retrait, transfert) : +- ✅ Remplacement affichage erreur brut par `ErrorFormatter.format(e)` +- ✅ Messages explicites : *"L'origine des fonds est obligatoire pour cette opération (conformité LCB-FT anti-blanchiment)"* +- ✅ Durée snackbar conditionnelle selon type erreur + +Impact UX : +- Messages d'erreur clairs et professionnels +- Utilisateur comprend **POURQUOI** l'origine fonds est requise (anti-blanchiment) +- Temps de lecture suffisant pour messages importants + +**Fichiers** : +- `lib/core/utils/error_formatter.dart` +- `lib/features/epargne/presentation/widgets/depot_epargne_dialog.dart` +- `lib/features/epargne/presentation/widgets/retrait_epargne_dialog.dart` +- `lib/features/epargne/presentation/widgets/transfert_epargne_dialog.dart` + +#### 4.2 Fiche membre – Affichage KYC (0% - 0/3) + +##### T022 : Étendre modèle membre mobile ⏳ - `MembreModel` avec champs KYC - niveauVigilanceKyc, statutKyc, dateVerificationIdentite -##### T023 : Affichage fiche membre +##### T023 : Affichage fiche membre KYC ⏳ - Lecture seule statut KYC - Date vérification identité -##### T024 : Validation données API uniquement +##### T024 : Validation données API uniquement ⏳ - Pas de valeurs en dur +- Audit complet mobile ---