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

@@ -1,251 +1,238 @@
---
description: "Task list template for feature implementation"
description: "Modèle de liste de tâches pour l'implémentation d'une fonctionnalité"
---
# Tasks: [FEATURE NAME]
# Tâches : [NOM DE LA FONCTIONNALITÉ]
**Input**: Design documents from `/specs/[###-feature-name]/`
**Prerequisites**: plan.md (required), spec.md (required for user stories), research.md, data-model.md, contracts/
**Entrée** : Documents de conception dans `/specs/[###-nom-court]/`
**Prérequis** : plan.md (obligatoire), spec.md (obligatoire pour les user stories), research.md, data-model.md, contracts/
**Tests**: The examples below include test tasks. Tests are OPTIONAL - only include them if explicitly requested in the feature specification.
**Tests** : Les exemples ci-dessous incluent des tâches de test. Les tests sont OPTIONNELS — ne les inclure que si la spécification de la feature le demande explicitement.
**Organization**: Tasks are grouped by user story to enable independent implementation and testing of each story.
**Organisation** : Les tâches sont regroupées par user story pour permettre une implémentation et des tests indépendants par story.
## Format: `[ID] [P?] [Story] Description`
## Format : `[ID] [P?] [Story] Description`
- **[P]**: Can run in parallel (different files, no dependencies)
- **[Story]**: Which user story this task belongs to (e.g., US1, US2, US3)
- Include exact file paths in descriptions
- **[P]** : Peut s'exécuter en parallèle (fichiers différents, pas de dépendances)
- **[Story]** : À quelle user story la tâche appartient (ex. US1, US2, US3)
- Inclure les chemins de fichiers exacts dans les descriptions
## Path Conventions
## Conventions de chemins
- **Single project**: `src/`, `tests/` at repository root
- **Web app**: `backend/src/`, `frontend/src/`
- **Mobile**: `api/src/`, `ios/src/` or `android/src/`
- Paths shown below assume single project - adjust based on plan.md structure
- **Projet unique** : `src/`, `tests/` à la racine du dépôt
- **Application web** : `backend/src/`, `frontend/src/`
- **Mobile** : `api/src/`, `ios/src/` ou `android/src/`
- **UnionFlow (monorepo)** : Backend = `unionflow-server-api/`, `unionflow-server-impl-quarkus/` ; Mobile = `unionflow-mobile-apps/lib/` (core/, features/, app/, shared/). Tâches mobile : chemins relatifs à `unionflow-mobile-apps/lib/` (ex. `features/epargne/presentation/pages/epargne_page.dart`).
- Adapter les chemins ci-dessous selon la structure dans plan.md
<!--
============================================================================
IMPORTANT: The tasks below are SAMPLE TASKS for illustration purposes only.
IMPORTANT : Les tâches ci-dessous sont des EXEMPLES à titre indicatif.
The /speckit.tasks command MUST replace these with actual tasks based on:
- User stories from spec.md (with their priorities P1, P2, P3...)
- Feature requirements from plan.md
- Entities from data-model.md
- Endpoints from contracts/
La commande /speckit.tasks DOIT les remplacer par les vraies tâches basées sur :
- Les user stories de spec.md (et leurs priorités P1, P2, P3...)
- Les exigences du plan.md
- Les entités de data-model.md
- Les endpoints de contracts/
Tasks MUST be organized by user story so each story can be:
- Implemented independently
- Tested independently
- Delivered as an MVP increment
Les tâches DOIVENT être organisées par user story pour que chaque story soit :
- Implémentable indépendamment
- Testable indépendamment
- Livrable en incrément MVP
DO NOT keep these sample tasks in the generated tasks.md file.
NE PAS conserver ces tâches exemples dans le fichier tasks.md généré.
============================================================================
-->
## Phase 1: Setup (Shared Infrastructure)
## Phase 1 : Mise en place (infrastructure partagée)
**Purpose**: Project initialization and basic structure
**Objectif** : Initialisation et structure de base
- [ ] T001 Create project structure per implementation plan
- [ ] T002 Initialize [language] project with [framework] dependencies
- [ ] T003 [P] Configure linting and formatting tools
- [ ] T001 Créer la structure du projet selon le plan d'implémentation
- [ ] T002 Initialiser le projet [langage] avec les dépendances [framework]
- [ ] T003 [P] Configurer le lint et le formatage
---
## Phase 2: Foundational (Blocking Prerequisites)
## Phase 2 : Fondations (prérequis bloquants)
**Purpose**: Core infrastructure that MUST be complete before ANY user story can be implemented
**Objectif** : Infrastructure indispensable avant TOUTE implémentation de user story
**⚠️ CRITICAL**: No user story work can begin until this phase is complete
**⚠️ CRITIQUE** : Aucune user story ne peut commencer avant la fin de cette phase
Examples of foundational tasks (adjust based on your project):
Exemples de tâches fondations (adapter au projet) :
- [ ] T004 Setup database schema and migrations framework
- [ ] T005 [P] Implement authentication/authorization framework
- [ ] T006 [P] Setup API routing and middleware structure
- [ ] T007 Create base models/entities that all stories depend on
- [ ] T008 Configure error handling and logging infrastructure
- [ ] T009 Setup environment configuration management
- [ ] T004 Mettre en place le schéma BDD et le framework de migrations
- [ ] T005 [P] Implémenter le cadre d'authentification / autorisation
- [ ] T006 [P] Mettre en place le routage API et la structure middleware
- [ ] T007 Créer les modèles/entités de base dont dépendent toutes les stories
- [ ] T008 Configurer la gestion des erreurs et les logs
- [ ] T009 Mettre en place la gestion de la configuration d'environnement
**Checkpoint**: Foundation ready - user story implementation can now begin in parallel
**Jalon** : Fondations prêtes — l'implémentation des user stories peut commencer
---
## Phase 3: User Story 1 - [Title] (Priority: P1) 🎯 MVP
## Phase 3 : User Story 1 - [Titre] (Priorité : P1) 🎯 MVP
**Goal**: [Brief description of what this story delivers]
**Objectif** : [Brève description de ce que livre cette story]
**Independent Test**: [How to verify this story works on its own]
**Test indépendant** : [Comment vérifier que cette story fonctionne seule]
### Tests for User Story 1 (OPTIONAL - only if tests requested) ⚠️
### Tests pour User Story 1 (OPTIONNEL — seulement si tests demandés) ⚠️
> **NOTE: Write these tests FIRST, ensure they FAIL before implementation**
> **NOTE : Écrire ces tests EN PREMIER, s'assurer qu'ils ÉCHOUENT avant l'implémentation**
- [ ] T010 [P] [US1] Contract test for [endpoint] in tests/contract/test_[name].py
- [ ] T011 [P] [US1] Integration test for [user journey] in tests/integration/test_[name].py
- [ ] T010 [P] [US1] Test de contrat pour [endpoint] dans tests/contract/test_[nom].py
- [ ] T011 [P] [US1] Test d'intégration pour [parcours] dans tests/integration/test_[nom].py
### Implementation for User Story 1
### Implémentation pour User Story 1
- [ ] T012 [P] [US1] Create [Entity1] model in src/models/[entity1].py
- [ ] T013 [P] [US1] Create [Entity2] model in src/models/[entity2].py
- [ ] T014 [US1] Implement [Service] in src/services/[service].py (depends on T012, T013)
- [ ] T015 [US1] Implement [endpoint/feature] in src/[location]/[file].py
- [ ] T016 [US1] Add validation and error handling
- [ ] T017 [US1] Add logging for user story 1 operations
- [ ] T012 [P] [US1] Créer le modèle [Entité1] dans src/models/[entite1].py
- [ ] T013 [P] [US1] Créer le modèle [Entité2] dans src/models/[entite2].py
- [ ] T014 [US1] Implémenter [Service] dans src/services/[service].py (dépend de T012, T013)
- [ ] T015 [US1] Implémenter [endpoint/feature] dans src/[emplacement]/[fichier].py
- [ ] T016 [US1] Ajouter la validation et la gestion des erreurs
- [ ] T017 [US1] Ajouter les logs pour les opérations de la user story 1
**Checkpoint**: At this point, User Story 1 should be fully functional and testable independently
**Jalon** : À ce stade, User Story 1 doit être entièrement fonctionnelle et testable seule
---
## Phase 4: User Story 2 - [Title] (Priority: P2)
## Phase 4 : User Story 2 - [Titre] (Priorité : P2)
**Goal**: [Brief description of what this story delivers]
**Objectif** : [Brève description]
**Independent Test**: [How to verify this story works on its own]
**Test indépendant** : [Comment vérifier]
### Tests for User Story 2 (OPTIONAL - only if tests requested) ⚠️
### Tests pour User Story 2 (OPTIONNEL) ⚠️
- [ ] T018 [P] [US2] Contract test for [endpoint] in tests/contract/test_[name].py
- [ ] T019 [P] [US2] Integration test for [user journey] in tests/integration/test_[name].py
- [ ] T018 [P] [US2] Test de contrat pour [endpoint] dans tests/contract/test_[nom].py
- [ ] T019 [P] [US2] Test d'intégration pour [parcours] dans tests/integration/test_[nom].py
### Implementation for User Story 2
### Implémentation pour User Story 2
- [ ] T020 [P] [US2] Create [Entity] model in src/models/[entity].py
- [ ] T021 [US2] Implement [Service] in src/services/[service].py
- [ ] T022 [US2] Implement [endpoint/feature] in src/[location]/[file].py
- [ ] T023 [US2] Integrate with User Story 1 components (if needed)
- [ ] T020 [P] [US2] Créer le modèle [Entité] dans src/models/[entite].py
- [ ] T021 [US2] Implémenter [Service] dans src/services/[service].py
- [ ] T022 [US2] Implémenter [endpoint/feature] dans src/[emplacement]/[fichier].py
- [ ] T023 [US2] Intégrer avec les composants de User Story 1 (si besoin)
**Checkpoint**: At this point, User Stories 1 AND 2 should both work independently
**Jalon** : User Stories 1 et 2 doivent toutes deux fonctionner indépendamment
---
## Phase 5: User Story 3 - [Title] (Priority: P3)
## Phase 5 : User Story 3 - [Titre] (Priorité : P3)
**Goal**: [Brief description of what this story delivers]
**Objectif** : [Brève description]
**Independent Test**: [How to verify this story works on its own]
**Test indépendant** : [Comment vérifier]
### Tests for User Story 3 (OPTIONAL - only if tests requested) ⚠️
### Tests pour User Story 3 (OPTIONNEL) ⚠️
- [ ] T024 [P] [US3] Contract test for [endpoint] in tests/contract/test_[name].py
- [ ] T025 [P] [US3] Integration test for [user journey] in tests/integration/test_[name].py
- [ ] T024 [P] [US3] Test de contrat pour [endpoint] dans tests/contract/test_[nom].py
- [ ] T025 [P] [US3] Test d'intégration pour [parcours] dans tests/integration/test_[nom].py
### Implementation for User Story 3
### Implémentation pour User Story 3
- [ ] T026 [P] [US3] Create [Entity] model in src/models/[entity].py
- [ ] T027 [US3] Implement [Service] in src/services/[service].py
- [ ] T028 [US3] Implement [endpoint/feature] in src/[location]/[file].py
- [ ] T026 [P] [US3] Créer le modèle [Entité] dans src/models/[entite].py
- [ ] T027 [US3] Implémenter [Service] dans src/services/[service].py
- [ ] T028 [US3] Implémenter [endpoint/feature] dans src/[emplacement]/[fichier].py
**Checkpoint**: All user stories should now be independently functional
**Jalon** : Toutes les user stories doivent être fonctionnelles indépendamment
---
[Add more user story phases as needed, following the same pattern]
[Ajouter d'autres phases user story si besoin, même pattern]
---
## Phase N: Polish & Cross-Cutting Concerns
## Phase N : Finition et transversal
**Purpose**: Improvements that affect multiple user stories
**Objectif** : Améliorations qui concernent plusieurs user stories
- [ ] TXXX [P] Documentation updates in docs/
- [ ] TXXX Code cleanup and refactoring
- [ ] TXXX Performance optimization across all stories
- [ ] TXXX [P] Additional unit tests (if requested) in tests/unit/
- [ ] TXXX Security hardening
- [ ] TXXX Run quickstart.md validation
- [ ] TXXX [P] Mise à jour de la documentation dans docs/
- [ ] TXXX Nettoyage et refactoring du code
- [ ] TXXX Optimisation des performances sur l'ensemble des stories
- [ ] TXXX [P] Tests unitaires supplémentaires (si demandés) dans tests/unit/
- [ ] TXXX Renforcement de la sécurité
- [ ] TXXX Exécuter la validation quickstart.md
---
## Dependencies & Execution Order
## Dépendances et ordre d'exécution
### Phase Dependencies
### pendances entre phases
- **Setup (Phase 1)**: No dependencies - can start immediately
- **Foundational (Phase 2)**: Depends on Setup completion - BLOCKS all user stories
- **User Stories (Phase 3+)**: All depend on Foundational phase completion
- User stories can then proceed in parallel (if staffed)
- Or sequentially in priority order (P1 → P2 → P3)
- **Polish (Final Phase)**: Depends on all desired user stories being complete
- **Phase 1 (Mise en place)** : Aucune — peut démarrer tout de suite
- **Phase 2 (Fondations)** : Dépend de la Phase 1 — BLOQUE toutes les user stories
- **Phases 3+ (User stories)** : Dépendent de la fin de la Phase 2
- Les user stories peuvent ensuite avancer en parallèle (si plusieurs personnes)
- Ou dans l'ordre des priorités (P1 → P2 → P3)
- **Phase N (Finition)** : Dépend de la fin des user stories souhaitées
### User Story Dependencies
### Dépendances entre user stories
- **User Story 1 (P1)**: Can start after Foundational (Phase 2) - No dependencies on other stories
- **User Story 2 (P2)**: Can start after Foundational (Phase 2) - May integrate with US1 but should be independently testable
- **User Story 3 (P3)**: Can start after Foundational (Phase 2) - May integrate with US1/US2 but should be independently testable
- **User Story 1 (P1)** : Peut démarrer après la Phase 2 — pas de dépendance à d'autres stories
- **User Story 2 (P2)** : Peut démarrer après la Phase 2 — peut s'appuyer sur US1 mais doit rester testable seule
- **User Story 3 (P3)** : Peut démarrer après la Phase 2 — peut s'appuyer sur US1/US2 mais doit rester testable seule
### Within Each User Story
### Au sein de chaque user story
- Tests (if included) MUST be written and FAIL before implementation
- Models before services
- Services before endpoints
- Core implementation before integration
- Story complete before moving to next priority
- Les tests (si inclus) DOIVENT être écrits et ÉCHOUER avant l'implémentation
- Modèles avant services
- Services avant endpoints
- Implémentation cœur avant intégration
- Finir une story avant de passer à la suivante
### Parallel Opportunities
### Parallélisation possible
- All Setup tasks marked [P] can run in parallel
- All Foundational tasks marked [P] can run in parallel (within Phase 2)
- Once Foundational phase completes, all user stories can start in parallel (if team capacity allows)
- All tests for a user story marked [P] can run in parallel
- Models within a story marked [P] can run in parallel
- Different user stories can be worked on in parallel by different team members
- Toutes les tâches de mise en place marquées [P] peuvent s'exécuter en parallèle
- Toutes les tâches fondations marquées [P] peuvent s'exécuter en parallèle (dans la Phase 2)
- Une fois la Phase 2 terminée, toutes les user stories peuvent démarrer en parallèle (si capacité équipe)
- Les tests d'une story marqués [P] peuvent s'exécuter en parallèle
- Les modèles d'une story marqués [P] peuvent s'exécuter en parallèle
- Différentes user stories peuvent être traitées en parallèle par différentes personnes
---
## Parallel Example: User Story 1
## Stratégie d'implémentation
```bash
# Launch all tests for User Story 1 together (if tests requested):
Task: "Contract test for [endpoint] in tests/contract/test_[name].py"
Task: "Integration test for [user journey] in tests/integration/test_[name].py"
### MVP d'abord (User Story 1 uniquement)
# Launch all models for User Story 1 together:
Task: "Create [Entity1] model in src/models/[entity1].py"
Task: "Create [Entity2] model in src/models/[entity2].py"
```
1. Terminer Phase 1 : Mise en place
2. Terminer Phase 2 : Fondations (CRITIQUE — bloque tout)
3. Terminer Phase 3 : User Story 1
4. **STOP et VALIDER** : Tester User Story 1 seule
5. Déployer / démo si prêt
---
### Livraison incrémentale
## Implementation Strategy
1. Mise en place + Fondations → base prête
2. Ajouter User Story 1 → tester seule → déployer/démo (MVP)
3. Ajouter User Story 2 → tester seule → déployer/démo
4. Ajouter User Story 3 → tester seule → déployer/démo
5. Chaque story ajoute de la valeur sans casser les précédentes
### MVP First (User Story 1 Only)
### Équipe en parallèle
1. Complete Phase 1: Setup
2. Complete Phase 2: Foundational (CRITICAL - blocks all stories)
3. Complete Phase 3: User Story 1
4. **STOP and VALIDATE**: Test User Story 1 independently
5. Deploy/demo if ready
Avec plusieurs développeurs :
### Incremental Delivery
1. Complete Setup + Foundational → Foundation ready
2. Add User Story 1 → Test independently → Deploy/Demo (MVP!)
3. Add User Story 2 → Test independently → Deploy/Demo
4. Add User Story 3 → Test independently → Deploy/Demo
5. Each story adds value without breaking previous stories
### Parallel Team Strategy
With multiple developers:
1. Team completes Setup + Foundational together
2. Once Foundational is done:
- Developer A: User Story 1
- Developer B: User Story 2
- Developer C: User Story 3
3. Stories complete and integrate independently
1. L'équipe termine ensemble Mise en place + Fondations
2. Une fois les fondations faites :
- Dev A : User Story 1
- Dev B : User Story 2
- Dev C : User Story 3
3. Les stories se terminent et s'intègrent indépendamment
---
## Notes
- [P] tasks = different files, no dependencies
- [Story] label maps task to specific user story for traceability
- Each user story should be independently completable and testable
- Verify tests fail before implementing
- Commit after each task or logical group
- Stop at any checkpoint to validate story independently
- Avoid: vague tasks, same file conflicts, cross-story dependencies that break independence
- Tâches [P] = fichiers différents, pas de dépendances
- Le libellé [Story] relie la tâche à une user story pour la traçabilité
- Chaque user story doit être complétable et testable indépendamment
- Vérifier que les tests échouent avant d'implémenter
- Commiter après chaque tâche ou groupe logique
- S'arrêter à chaque jalon pour valider la story seule
- À éviter : tâches floues, conflits sur le même fichier, dépendances entre stories qui cassent l'indépendance