- 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
97 lines
5.7 KiB
Markdown
97 lines
5.7 KiB
Markdown
# 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 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 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 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.
|