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,100 @@
# Tâches : Gestion des mutuelles orientée anti-blanchiment (LCB-FT)
**Entrée** : `specs/001-mutuelles-anti-blanchiment/spec.md`, `plan.md`
**Prérequis** : plan.md, spec.md
**Ordre dexécution** : Respecter strictement lordre des phases (API → Migrations → Impl → Mobile). Les tâches mobile ne doivent être traitées quaprès les tâches backend correspondantes (ou en parallèle si lAPI est déjà disponible).
---
## Format : `[ID] [P?] Description`
- **[P]** : Peut sexécuter en parallèle (fichiers différents, pas de dépendances).
- Les chemins sont relatifs à la racine du dépôt `unionflow/`.
---
## Phase 1 : API (unionflow-server-api)
**Objectif** : Ajouter les champs et enums LCB-FT dans lAPI (spec §3.1).
- [ ] T001 [P] Étendre `TransactionEpargneRequest` (ou équivalent) avec `origineFonds` (String, optionnel), `pieceJustificativeId` (UUID, optionnel) si ce nest pas déjà fait — `unionflow-server-api/.../dto/mutuelle/epargne/`
- [ ] T002 [P] Étendre `TransactionEpargneResponse` avec `origineFonds`, `pieceJustificativeId` en lecture si nécessaire
- [ ] T003 [P] Ajouter en API les enums `NiveauVigilanceKyc`, `StatutKyc` (ex. `enums.membre`) et champs membre : `niveauVigilanceKyc`, `dateVerificationIdentite`, `statutKyc` (DTOs membre)
- [ ] T004 [P] Étendre les DTOs dintentions de paiement / paiement avec `origineFonds`, `justificationLcbFt` et étendre `type_objet` pour EPARGNE_DEPOT, EPARGNE_RETRAIT, CREDIT_REMBOURSEMENT si prévu par la spec
- [ ] T005 [P] Ajouter ou étendre le contrat (DTO / config) pour les paramètres LCB-FT (seuils : montant justification, montant validation manuelle, devise) — ex. `parametres_organisation` / `parametres_plateforme`
- [ ] T006 Mettre à jour `.specify/memory/inventaire-code.md` avec les nouveaux DTOs/enums/champs API
**Jalon** : API prête pour impl et mobile (contrats stables).
---
## Phase 2 : Migrations Flyway (unionflow-server-impl-quarkus)
**Objectif** : Schéma BDD aligné avec la spec §3.2 (sans modifier les migrations existantes).
- [ ] T007 Vérifier ou créer la migration LCB-FT : colonnes membres (ou table membre_kyc) `niveau_vigilance_kyc`, `date_verification_identite`, `statut_kyc`
- [ ] T008 Vérifier ou créer les colonnes `origine_fonds`, `piece_justificative_id` (et si besoin `seuil_lcb_ft_atteint`) sur la table des transactions épargne
- [ ] T009 Vérifier ou créer les colonnes `origine_fonds`, `justification_lcb_ft` sur la table intentions_paiement
- [ ] T010 Vérifier ou créer la table ou colonnes pour les paramètres LCB-FT (seuils : montant_seuil_justification, montant_seuil_validation_manuelle, code_devise)
- [ ] T011 Mettre à jour linventaire avec le numéro et le contenu de la migration LCB-FT
**Jalon** : Schéma BDD prêt pour limpl des services.
---
## Phase 3 : Implémentation Quarkus (unionflow-server-impl-quarkus)
**Objectif** : Règles métier, validation des seuils, audit (spec §3.3).
- [ ] T012 Implémenter la lecture des paramètres LCB-FT (seuils) depuis la BDD ou la config (organisation / plateforme)
- [ ] T013 Dans le service de transaction épargne : si montant ≥ seuil configuré, exiger `origineFonds` (et éventuellement `pieceJustificativeId`) ; sinon rejet 400 avec message clair
- [ ] T014 Enregistrer dans `audit_logs` les opérations mutuelles (épargne/crédit) avec portee ORGANISATION et détails (montant, type, membre, seuil franchi)
- [ ] T015 (Optionnel) Crédit : exiger ou vérifier `dateVerificationIdentite` à jour pour le membre avant déblocage selon la spec
- [ ] T016 (Optionnel) Créer la ressource ou le type dévénement « alertes LCB-FT » pour dépassement de seuil / motif vide (spec §3.3)
- [ ] T017 Exposer un endpoint ou une config (ex. paramètres organisation) pour que le mobile récupère le seuil LCB-FT (montant au-dessus duquel origine des fonds obligatoire)
**Jalon** : Backend LCB-FT opérationnel et consommable par le mobile.
---
## Phase 4 : Mobile (unionflow-mobile-apps)
**Objectif** : Écrans mutuelles conformes LCB-FT (origine des fonds, pièce justificative si seuil) ; fiche membre avec statut KYC et date de vérification didentité (spec §3.4).
### 4.1 Épargne Seuil et champs LCB-FT
- [ ] T018 Récupérer le seuil LCB-FT depuis lAPI (paramètres organisation) ou la config ; utiliser ce seuil dans les dialogs (dépôt/retrait/transfert) au lieu ou en complément de `lcb_ft_constants.dart`
- [ ] T019 Sassurer que les formulaires de dépôt, retrait et transfert épargne affichent et envoient `origineFonds` (obligatoire si montant ≥ seuil) — `lib/features/epargne/presentation/widgets/` (ex. `DepotEpargneDialog`, retrait, transfert)
- [ ] T020 Ajouter la saisie et lupload de la pièce justificative dans les dialogs épargne lorsque le montant ≥ seuil ; envoyer `pieceJustificativeId` dans `TransactionEpargneRequest` après upload
- [ ] T021 Afficher un message derreur clair côté mobile si lAPI retourne 400 (ex. origine des fonds manquante au-dessus du seuil)
**Jalon** : Flux épargne mobile conformes LCB-FT (sans données fictives).
### 4.2 Fiche membre Affichage KYC
- [ ] T022 Étendre le modèle membre (ex. `MembreModel` ou DTO détail) avec `niveauVigilanceKyc`, `statutKyc`, `dateVerificationIdentite` selon lAPI — `lib/features/members/data/models/`
- [ ] T023 Sur la fiche membre (détail membre ou écran équivalent), afficher en lecture seule le statut KYC et la date de vérification didentité — `lib/features/members/presentation/` et/ou `lib/features/profile/`
- [ ] T024 Sassurer que les données KYC proviennent uniquement de lAPI (pas de valeurs en dur)
**Jalon** : Fiche membre affiche les informations KYC conformément à la spec.
---
## Phase 5 : Finition et transversal
- [ ] T025 Mettre à jour `.specify/memory/inventaire-code.md` avec les changements mobile (modèles, écrans, constantes)
- [ ] T026 Vérifier quaucune donnée fictive nest utilisée en production (listes en dur, mocks métier) pour les flux mutuelles et KYC
- [ ] T027 Exécuter les tests backend et mobile ; corriger les régressions
---
## Dépendances et ordre dexécution
- **Phase 1 (API)** : Peut démarrer immédiatement.
- **Phase 2 (Migrations)** : Dépend de la stabilité des champs API (Phase 1).
- **Phase 3 (Impl)** : Dépend des Phases 1 et 2.
- **Phase 4 (Mobile)** : Dépend des contrats API (Phase 1) et de préférence de lendpoint/config de seuil (T017). Les tâches 4.1 et 4.2 peuvent être traitées en parallèle une fois les modèles API disponibles.
- **Phase 5** : Après les Phases 14.
Pour **continuer strictement lordre sur la version mobile** : exécuter dabord T018 → T019 → T020 → T021 (épargne), puis T022 → T023 → T024 (fiche membre), puis T025T027.