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

@@ -3,35 +3,55 @@ description: Spec-Kit et workflow Spec-Driven Development pour UnionFlow
alwaysApply: true
---
# UnionFlow - Spec-Kit & Spec-Driven Development
# UnionFlow Spec-Kit & Spec-Driven Development
## Contexte projet
UnionFlow est un monorepo (Java/Quarkus backend + Flutter mobile). La constitution est dans `CONSTITUTION.md` et `.specify/memory/constitution.md`.
UnionFlow est un monorepo (Java/Quarkus backend + Flutter mobile). La constitution est dans `CONSTITUTION.md` et `.specify/memory/constitution.md`. La référence anti-hallucination est `.specify/memory/inventaire-code.md`. **En cas de divergence entre documentation et code, le code fait foi** ; mettre à jour linventaire en conséquence.
## Respect des acquis
- **Toujours respecter** la constitution (`CONSTITUTION.md`), le baseline (`specs/000-unionflow-baseline/spec.md`) et les conventions existantes (DDD, API/Impl, Keycloak, tests, etc.).
- Toute nouvelle feature doit **sintégrer** à lexistant sans le contredire ; en cas de conflit, la constitution et le baseline priment.
- **Langue** : tout contenu rédigé pour le projet (specs, plans, tâches, commentaires utilisateur visibles) doit être **en français**. Le code (noms de variables, classes, messages techniques) peut rester en anglais si cest la convention du module.
## WOU / DRY (We Only Use Dont Repeat Yourself)
- **Avant de créer** tout nouvel élément (fichier, classe, méthode, widget, service, repository, etc.) : **vérifier quil nexiste pas déjà** (recherche par nom, motif ou responsabilité dans le codebase).
- Si un équivalent existe : **réutiliser** ou **étendre** lexistant ; ne pas dupliquer la logique.
- Si création après vérification : sassurer de ne pas recoder une responsabilité déjà couverte ailleurs (ex. création de `MembreOrganisation` + quota déjà dans un service → réutiliser ce service plutôt quajouter une méthode similaire).
- En résumé : **toujours vérifier linexistence avant de procéder à une création**.
## Commandes Spec-Kit disponibles
| Commande | Usage |
|----------|-------|
|----------|--------|
| `/speckit.constitution` | Créer ou mettre à jour les principes du projet |
| `/speckit.specify` | Décrire une nouvelle feature (crée branche + spec) |
| `/speckit.plan` | Générer le plan technique d'implémentation |
| `/speckit.tasks` | Décomposer en tâches exécutables |
| `/speckit.implement` | Exécuter l'implémentation |
| `/speckit.clarify` | Clarifier les exigences avant le plan |
| `/speckit.checklist` | Listes de vérification (qualité spec / pré-impl) |
| `/speckit.analyze` | Analyse de cohérence projet |
| `/speckit.taskstoissues` | Exporter les tâches en issues |
**Scripts** : Toutes les commandes qui sappuient sur un script utilisent **uniquement** les scripts PowerShell dans `.specify/scripts/powershell/` (depuis la racine du dépôt `unionflow/`). Aucun script Bash nest fourni dans ce dépôt.
## Workflow feature
1. `/speckit.specify` + description → crée `specs/00X-nom/spec.md`
2. `/speckit.clarify` (optionnel) → précise les exigences
1. `/speckit.specify` + description → crée `specs/00X-nom/spec.md` (et branche).
2. `/speckit.clarify` (optionnel) → précise les exigences.
3. `/speckit.plan` + stack technique → génère `plan.md`, `data-model.md`, etc.
4. `/speckit.tasks` → génère `tasks.md`
5. `/speckit.implement` → implémente
4. `/speckit.tasks` → génère `tasks.md`.
5. `/speckit.implement` → implémente selon `tasks.md`.
## Branches
Format: `001-nom-court`, `002-autre-feature`. Les specs vivent dans `specs/001-nom-court/`.
Format : `001-nom-court`, `002-autre-feature`. Les specs vivent dans `specs/001-nom-court/`.
## Références obligatoires
Avant toute implémentation backend ou mobile, lire `CONSTITUTION.md` pour les conventions DDD, API, tests, sécurité.
- Avant toute implémentation backend ou mobile : lire `CONSTITUTION.md` pour les conventions DDD, API, tests, sécurité.
- **Anti-hallucination** : pour toute affirmation sur lexistant (packages, classes, endpoints, routes, migrations), sappuyer sur `.specify/memory/inventaire-code.md`. Ne jamais inventer de fichier, package ou endpoint non listé ; en cas de doute, vérifier dans le code.
- Vue densemble Spec-Kit : `SPEC-KIT.md` à la racine de `unionflow/`.