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,9 +1,10 @@
# UnionFlow Project Constitution
> **Version:** 1.0
> **Date:** 2026-02-27
> **Date:** 2026-03-08
> **Status:** Active
> **Scope:** Backend (unionflow-server-impl-quarkus), API (unionflow-server-api), Mobile (unionflow-mobile-apps)
> **Référence inventaire:** `.specify/memory/inventaire-code.md` — liste exacte des packages, migrations et features (à utiliser pour ne pas halluciner). **En cas de divergence entre ce document et le code source, le code fait foi** ; linventaire et la constitution doivent être mis à jour pour refléter létat réel du dépôt.
---
@@ -579,15 +580,7 @@ List<Membre> findAllWithCotisations();
### 13. Mobile Integration
#### 13.1 Mobile App Configuration
**Flutter Environment:**
```dart
// lib/config/environment.dart
abstract class AppConfig {
static String get apiBaseUrl => const String.fromEnvironment('API_URL');
static String get keycloakUrl => const String.fromEnvironment('KEYCLOAK_URL');
static bool get enableLogging => const String.fromEnvironment('ENV') != 'prod';
}
```
**Flutter Environment:** Configuration centralisée dans `unionflow-mobile-apps/lib/core/config/environment.dart`. `AppConfig.initialize()` appelé dans `main()` ; `Environment` (dev, staging, prod) ; propriétés : `apiBaseUrl`, `keycloakBaseUrl`, `wsBaseUrl`, `enableLogging`, `keycloakRealmUrl`, `keycloakTokenUrl`, `wsDashboardUrl`. Valeurs par défaut selon lenvironnement (dev : localhost:8085 / 8180, prod : api.lions.dev / security.lions.dev).
**Build Command:**
```bash