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,62 +1,54 @@
# Implementation Plan: [FEATURE]
# Plan d'implémentation : [FONCTIONNALITÉ]
**Branch**: `[###-feature-name]` | **Date**: [DATE] | **Spec**: [link]
**Input**: Feature specification from `/specs/[###-feature-name]/spec.md`
**Branche** : `[###-nom-court]` | **Date** : [DATE] | **Spec** : [lien]
**Entrée** : Spécification dans `/specs/[###-nom-court]/spec.md`
**Note**: This template is filled in by the `/speckit.plan` command. See `.specify/templates/plan-template.md` for the execution workflow.
**Note** : Ce template est rempli par la commande `/speckit.plan`. Voir `.specify/templates/plan-template.md` pour le déroulé.
## Summary
## Résumé
[Extract from feature spec: primary requirement + technical approach from research]
[Extraire de la spec : exigence principale + approche technique issue de la recherche]
## Technical Context
## Contexte technique
<!--
ACTION REQUIRED: Replace the content in this section with the technical details
for the project. The structure here is presented in advisory capacity to guide
the iteration process.
-->
<!-- Remplacer le contenu par les détails techniques du projet -->
**Language/Version**: [e.g., Python 3.11, Swift 5.9, Rust 1.75 or NEEDS CLARIFICATION]
**Primary Dependencies**: [e.g., FastAPI, UIKit, LLVM or NEEDS CLARIFICATION]
**Storage**: [if applicable, e.g., PostgreSQL, CoreData, files or N/A]
**Testing**: [e.g., pytest, XCTest, cargo test or NEEDS CLARIFICATION]
**Target Platform**: [e.g., Linux server, iOS 15+, WASM or NEEDS CLARIFICATION]
**Project Type**: [e.g., library/cli/web-service/mobile-app/compiler/desktop-app or NEEDS CLARIFICATION]
**Performance Goals**: [domain-specific, e.g., 1000 req/s, 10k lines/sec, 60 fps or NEEDS CLARIFICATION]
**Constraints**: [domain-specific, e.g., <200ms p95, <100MB memory, offline-capable or NEEDS CLARIFICATION]
**Scale/Scope**: [domain-specific, e.g., 10k users, 1M LOC, 50 screens or NEEDS CLARIFICATION]
**Langage/Version** : [ex. Java 17, Dart 3, ou À PRÉCISER]
**Dépendances principales** : [ex. Quarkus, Flutter, ou À PRÉCISER]
**Stockage** : [ex. PostgreSQL, CoreData, fichiers ou N/A]
**Tests** : [ex. JUnit, pytest, ou À PRÉCISER]
**Plateforme cible** : [ex. serveur Linux, iOS 15+, ou À PRÉCISER]
**Type de projet** : [ex. lib/cli/service-web/app-mobile ou À PRÉCISER]
**Objectifs de performance** : [ex. 1000 req/s, 60 fps ou À PRÉCISER]
**Contraintes** : [ex. p95 < 200 ms, mémoire < 100 Mo, hors-ligne ou À PRÉCISER]
**Échelle / périmètre** : [ex. 10k utilisateurs, 50 écrans ou À PRÉCISER]
## Constitution Check
## Contrôle constitution
*GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.*
*JALON : Doit être validé avant la phase 0 (recherche). Re-vérifier après la phase 1 (conception).*
[Gates determined based on constitution file]
[Critères déterminés à partir du fichier constitution]
## Project Structure
## Structure du projet
### Documentation (this feature)
### Documentation (cette feature)
```text
specs/[###-feature]/
├── plan.md # This file (/speckit.plan command output)
├── research.md # Phase 0 output (/speckit.plan command)
├── data-model.md # Phase 1 output (/speckit.plan command)
├── quickstart.md # Phase 1 output (/speckit.plan command)
├── contracts/ # Phase 1 output (/speckit.plan command)
└── tasks.md # Phase 2 output (/speckit.tasks command - NOT created by /speckit.plan)
├── plan.md # Ce fichier (sortie /speckit.plan)
├── research.md # Phase 0 (/speckit.plan)
├── data-model.md # Phase 1 (/speckit.plan)
├── quickstart.md # Phase 1 (/speckit.plan)
├── contracts/ # Phase 1 (/speckit.plan)
└── tasks.md # Phase 2 (/speckit.tasks NON créé par /speckit.plan)
```
### Source Code (repository root)
<!--
ACTION REQUIRED: Replace the placeholder tree below with the concrete layout
for this feature. Delete unused options and expand the chosen structure with
real paths (e.g., apps/admin, packages/something). The delivered plan must
not include Option labels.
-->
### Code source (racine du dépôt)
<!-- Remplacer l'arbre ci-dessous par la structure réelle de cette feature. Supprimer les options inutilisées. -->
```text
# [REMOVE IF UNUSED] Option 1: Single project (DEFAULT)
# [SUPPRIMER SI INUTILISÉ] Option 1 : Projet unique (DÉFAUT)
src/
├── models/
├── services/
@@ -68,7 +60,7 @@ tests/
├── integration/
└── unit/
# [REMOVE IF UNUSED] Option 2: Web application (when "frontend" + "backend" detected)
# [SUPPRIMER SI INUTILISÉ] Option 2 : Application web (backend + frontend)
backend/
├── src/
│ ├── models/
@@ -83,22 +75,26 @@ frontend/
│ └── services/
└── tests/
# [REMOVE IF UNUSED] Option 3: Mobile + API (when "iOS/Android" detected)
# [SUPPRIMER SI INUTILISÉ] Option 3 : Mobile + API (iOS/Android)
api/
└── [same as backend above]
└── [idem backend ci-dessus]
ios/ or android/
└── [platform-specific structure: feature modules, UI flows, platform tests]
ios/ ou android/
└── [structure plateforme : modules feature, flux UI, tests]
# [SUPPRIMER SI INUTILISÉ] Option 4 : Monorepo UnionFlow (backend + mobile)
unionflow-server-api/ # DTOs, enums
unionflow-server-impl-quarkus/ # Migrations, services, resources
unionflow-mobile-apps/lib/ # app/, core/, features/<nom>/, shared/
```
**Structure Decision**: [Document the selected structure and reference the real
directories captured above]
**Décision de structure** : [Documenter la structure retenue et les répertoires réels. Pour UnionFlow, sappuyer sur `.specify/memory/inventaire-code.md`.]
## Complexity Tracking
## Suivi des écarts à la constitution
> **Fill ONLY if Constitution Check has violations that must be justified**
> **À remplir UNIQUEMENT si le Contrôle constitution a des violations à justifier**
| Violation | Why Needed | Simpler Alternative Rejected Because |
|-----------|------------|-------------------------------------|
| [e.g., 4th project] | [current need] | [why 3 projects insufficient] |
| [e.g., Repository pattern] | [specific problem] | [why direct DB access insufficient] |
| Écart | Pourquoi nécessaire | Alternative plus simple refusée car |
|-------|---------------------|-------------------------------------|
| [ex. 4e projet] | [besoin actuel] | [pourquoi 3 projets ne suffisent pas] |
| [ex. pattern Repository] | [problème précis] | [pourquoi l'accès direct DB ne suffit pas] |