- 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
5.7 KiB
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 l’ordre : 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 d’accès direct aux repositories depuis les resources.
- API/Impl : Nouveaux champs et DTOs dans
unionflow-server-api; impl dansunionflow-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 s’appuie 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 l’affichage 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 d’implémentation proposées
Phase 1 – API et contrat
- Ajout/extension des DTOs et enums dans
unionflow-server-api(spec §3.1). - Mise à jour de l’inventaire 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 : S’assurer que dépôt/retrait/transfert utilisent bien l’API (origine des fonds, pièce justificative si seuil) ; seuil de préférence fourni par l’API/config plutôt qu’en dur.
- Fiche membre : Affichage en lecture seule du statut KYC et de la date de vérification d’identité (données provenant de l’API membre).
Références
- Constitution :
.specify/memory/constitution.md(sections 1–4, 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.