Files
unionflow-server-api/unionflow/specs/001-mutuelles-anti-blanchiment/plan.md
dahoud e8ad874015 feat: WebSocket temps réel + Finance Workflow + corrections
- Task #6: WebSocket /ws/dashboard + Kafka events (5 topics)
  * Backend: KafkaEventProducer, KafkaEventConsumer
  * Mobile: WebSocketService (reconnection, heartbeat, typed events)
  * DashboardBloc: Auto-refresh depuis WebSocket events

- Finance Workflow: approbations + budgets (backend + mobile)
  * Backend: entities, services, resources, migrations Flyway V6
  * Mobile: features finance_workflow complète avec BLoC

- Corrections DI: interfaces IRepository partout
  * IProfileRepository, IOrganizationRepository, IMembreRepository
  * GetIt configuré avec @injectable

- Spec-Kit: constitution + templates mis à jour
  * .specify/memory/constitution.md enrichie
  * Templates agent, plan, spec, tasks, checklist

- Nettoyage: fichiers temporaires supprimés

Signed-off-by: lions dev Team
2026-03-15 02:12:17 +00:00

5.7 KiB
Raw Blame History

Plan d'implémentation : Gestion des mutuelles orientée anti-blanchiment (LCB-FT)

Branche : 001-mutuelles-anti-blanchiment | Date : 2026-03-08 | Spec : spec.md
Entrée : Spécification dans specs/001-mutuelles-anti-blanchiment/spec.md

Résumé

Mise en conformité LCB-FT/BCEAO/OHADA des flux mutuelles (épargne, crédit, paiements) : traçabilité (origine des fonds, justification), seuils configurables, niveau KYC membre, audit et alertes. Livrables dans lordre : API → Migrations → Impl Quarkus → Mobile (écrans mutuelles + affichage KYC fiche membre).

Contexte technique

Langage/Version : Java 17 (backend), Dart 3 / Flutter ^3.5.3 (mobile)
Dépendances principales : Quarkus 3.15.1, Panache, MapStruct (backend) ; go_router, flutter_bloc, get_it, dio (mobile)
Stockage : PostgreSQL 15+ (prod), H2 (dev/test) ; Flyway pour les migrations
Tests : JUnit/QuarkusTest (backend, 100 % JaCoCo), bloc_test/mockito (mobile)
Plateforme cible : Serveur Linux (backend), Android / iOS (mobile)
Type de projet : Backend API + Impl Quarkus + App mobile Flutter
Contraintes : Pas de données fictives ; seuils LCB-FT configurables (organisation/plateforme)
Échelle / périmètre : Extension du module mutuelles existant (API, BDD, services, écrans mobile épargne/crédit et fiche membre)

Contrôle constitution

  • DDD : Resources → Services → Repositories ; pas daccès direct aux repositories depuis les resources.
  • API/Impl : Nouveaux champs et DTOs dans unionflow-server-api ; impl dans unionflow-server-impl-quarkus.
  • Sécurité : Keycloak OIDC ; rôles existants ; pas de contournement des contrôles LCB-FT.
  • RGPD / Audit : Audit trail (creePar, modifiePar, dates) ; conservation 10 ans pour audit_logs ; extension aux opérations mutuelles.
  • Mobile : Données uniquement via API ; pas de listes en dur ; seuil LCB-FT fourni par API/config.

Structure du projet

Documentation (cette feature)

specs/001-mutuelles-anti-blanchiment/
├── spec.md           # Spécification fonctionnelle (existant)
├── plan.md           # Ce fichier
├── tasks.md          # À générer via /speckit.tasks
└── contracts/        # (optionnel) Endpoints impactés

Code source (monorepo unionflow)

unionflow/
├── unionflow-server-api/                    # DTOs, enums LCB-FT (origineFonds, KYC, seuils)
├── unionflow-server-impl-quarkus/           # Migrations, services, resources, validation seuils
│   └── src/main/resources/db/migration/    # V3.4+ LCB-FT si non présent
├── unionflow-mobile-apps/                   # Flutter
│   └── lib/
│       ├── core/constants/                 # lcb_ft_constants (seuil par défaut, à compléter par API)
│       └── features/
│           ├── epargne/                    # Dépôt/retrait/transfert + origine + pièce justificative si seuil
│           └── members/                    # Fiche membre : statut KYC, date vérification identité (lecture)

Décision de structure : On sappuie sur la structure existante (inventaire .specify/memory/inventaire-code.md). La feature epargne mobile existe déjà ; on complète les champs LCB-FT et laffichage KYC dans la fiche membre.

Ordre des livrables (aligné spec §5)

Ordre Livrable Contenu principal
1 Spec + inventaire Fait (spec.md)
2 API (unionflow-server-api) Champs origineFonds, pieceJustificativeId (transaction épargne) ; enums NiveauVigilanceKyc, StatutKyc ; champs membre dateVerificationIdentite ; DTOs paramètres LCB-FT / seuils ; extension intentions paiement (EPARGNE_DEPOT, etc. + origineFonds, justificationLcbFt)
3 Migrations Flyway Colonnes membres/KYC ; transaction_epargne (origine_fonds, piece_justificative_id) ; intentions_paiement (origine_fonds, justification_lcb_ft) ; table paramètres LCB-FT (seuils)
4 Impl Quarkus Règles de validation (seuil → exiger origineFonds) ; audit des opérations mutuelles ; ressource/config pour seuils ; éventuelle ressource « alertes LCB-FT »
5 Mobile Écrans mutuelles : origine des fonds + pièce justificative (upload) si montant ≥ seuil (seuil depuis API/config) ; fiche membre : affichage statut KYC et date vérification identité (lecture seule)

Phases dimplémentation proposées

Phase 1 API et contrat

  • Ajout/extension des DTOs et enums dans unionflow-server-api (spec §3.1).
  • Mise à jour de linventaire après chaque ajout.

Phase 2 Persistance

  • Création ou complément des migrations Flyway (spec §3.2) ; pas de modification de migrations existantes.

Phase 3 Règles métier backend

  • Services : validation seuil, obligation origineFonds / pièce si montant ≥ seuil ; audit ; optionnel : alertes LCB-FT (spec §3.3).

Phase 4 Mobile

  • Épargne : Sassurer que dépôt/retrait/transfert utilisent bien lAPI (origine des fonds, pièce justificative si seuil) ; seuil de préférence fourni par lAPI/config plutôt quen dur.
  • Fiche membre : Affichage en lecture seule du statut KYC et de la date de vérification didentité (données provenant de lAPI membre).

Références

  • Constitution : .specify/memory/constitution.md (sections 14, 8, 13).
  • Inventaire : .specify/memory/inventaire-code.md (packages API, migrations, features mobile).
  • Baseline : specs/000-unionflow-baseline/spec.md.

Suivi des écarts à la constitution

Aucun écart identifié ; le plan reste aligné avec la constitution et le baseline.