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

97 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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](./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)
```text
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)
```text
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.