Files
unionflow-server-api/unionflow/specs/001-mutuelles-anti-blanchiment/AUDIT_MOBILE_ZERO_MOCK.md
dahoud 5d53ba719a docs: audit mobile zéro données fictives (T024)
Phase 4 Mobile - Section 4.2 Fiche membre KYC

Document d'audit complet : AUDIT_MOBILE_ZERO_MOCK.md

Sections auditées :
1. Paramètres LCB-FT (seuils) 
   - ParametresLcbFtRepository appelle /api/parametres-lcb-ft
   - Seuil dynamique chargé au runtime
   - Fallback 500k XOF technique uniquement

2. Champs KYC Membre 
   - MembreCompletModel désérialisé depuis JSON backend
   - Enums alignés avec backend (NiveauVigilanceKyc, StatutKyc)
   - KycStatusWidget affiche données API uniquement

3. Gestion des erreurs 
   - ErrorFormatter analyse messages backend
   - Pas de messages inventés
   - Détection dynamique erreurs LCB-FT

4. Constantes et fallbacks 
   - kSeuilOrigineFondsObligatoireXOF = fallback technique
   - Jamais utilisé directement dans logique métier
   - Pattern graceful degradation acceptable

Checklist 8/8  :
- Tous les seuils LCB-FT depuis API
- Toutes données KYC depuis backend
- Aucun mock ou données de test
- Enums alignés avec backend
- Messages d'erreur depuis backend
- Fallbacks purement techniques
- Pas de listes en dur
- Pas de valeurs par défaut métier

Verdict :  CONFORME - Zéro données fictives.

Spec : specs/001-mutuelles-anti-blanchiment/spec.md
Progression : 21/27 tâches (78%)

Signed-off-by: lions dev Team
2026-03-15 02:54:32 +00:00

4.1 KiB

Audit Mobile - Zéro Données Fictives (T024)

Date : 2026-03-13 Phase : 4.2 - Fiche membre KYC Objectif : Vérifier qu'aucune donnée fictive ou en dur n'est utilisée dans les fonctionnalités LCB-FT mobile.


Résultats de l'audit

1. Paramètres LCB-FT (Seuils)

Repository : ParametresLcbFtRepository

  • Appelle l'endpoint REST backend : /api/parametres-lcb-ft/seuil-justification
  • Paramètres organisationId et codeDevise transmis à l'API
  • Pas de seuil en dur utilisé directement
  • Fallback 500k XOF si API échoue (bonne pratique : graceful degradation)

Modèle : SeuilLcbFtModel

  • Factory defaultSeuil() retourne 500k XOF comme fallback technique (pas de données métier)
  • Désérialisation depuis JSON API (fromJson)

Dialogs épargne : DepotEpargneDialog, RetraitEpargneDialog, TransfertEpargneDialog

  • Seuil chargé dynamiquement au initState() via _chargerSeuil()
  • Variable _seuilLcbFt mise à jour depuis l'API
  • Constante kSeuilOrigineFondsObligatoireXOF utilisée UNIQUEMENT comme valeur initiale avant chargement API

Conclusion : CONFORME - Toutes les données viennent de l'API backend.


2. Champs KYC Membre

Modèle : MembreCompletModel

  • Enums NiveauVigilanceKyc, StatutKyc correspondent exactement au backend
  • Champs niveauVigilanceKyc, statutKyc, dateVerificationIdentite désérialisés depuis JSON
  • Pas de valeurs par défaut fictives (tous nullable)
  • Méthode fromJson génère automatiquement par json_serializable

Widget : KycStatusWidget

  • Affiche les données passées en paramètre (venant du backend via ProfileBloc)
  • Gère les valeurs nulles en affichant "Non renseigné"
  • Aucune donnée en dur

Conclusion : CONFORME - Aucune donnée KYC fictive.


3. Gestion des erreurs

Utilitaire : ErrorFormatter

  • Analyse les messages d'erreur backend (pas de messages inventés)
  • Messages génériques uniquement pour fallback UX
  • Détection dynamique des erreurs LCB-FT depuis le message backend

Dialogs épargne

  • Tous les catch blocks utilisent ErrorFormatter.format(e) pour afficher l'erreur réelle du backend
  • Durée d'affichage conditionnelle selon type d'erreur (détecté dynamiquement)

Conclusion : CONFORME - Messages d'erreur venant du backend.


4. Constantes et fallbacks

Fichier : lib/core/constants/lcb_ft_constants.dart

const double kSeuilOrigineFondsObligatoireXOF = 500000.0;

Analyse :

  • Cette constante sert uniquement de fallback technique si l'API échoue
  • Elle n'est jamais utilisée directement dans la logique métier
  • Les dialogs chargent le seuil depuis l'API et le stockent dans _seuilLcbFt
  • La constante sert de valeur initiale avant le chargement API (pattern acceptable)

Conclusion : ACCEPTABLE - Fallback technique, pas de données métier en dur.


📋 Checklist de conformité

  • Tous les seuils LCB-FT viennent de l'API
  • Toutes les données KYC viennent du backend
  • Aucun mock ou données de test dans le code de production
  • Les enums correspondent exactement au backend
  • Les messages d'erreur proviennent du backend
  • Les fallbacks sont purement techniques (pas de données métier)
  • Pas de listes en dur (organisations, membres, etc.)
  • Pas de valeurs par défaut métier (seuils, dates, etc.)

🎯 Verdict final

CONFORME - Zéro données fictives ou en dur dans les fonctionnalités LCB-FT mobile.

Toutes les données métier proviennent de l'API backend :

  • Seuils LCB-FT : /api/parametres-lcb-ft/seuil-justification
  • Données membre (KYC) : /api/v1/membres/{id} via ProfileRepository
  • Messages d'erreur : analysés depuis les réponses HTTP backend

Les seules constantes présentes sont des fallbacks techniques pour garantir une expérience utilisateur dégradée acceptable en cas d'erreur réseau (principe de résilience).


Auditeur : lions dev Team Signature : Signed-off-by: lions dev Team Date : 2026-03-13