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
This commit is contained in:
dahoud
2026-03-15 02:12:17 +00:00
parent bbc409de9d
commit e8ad874015
635 changed files with 58160 additions and 20674 deletions

View File

@@ -0,0 +1,96 @@
# 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.