- 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
81 lines
4.4 KiB
Markdown
81 lines
4.4 KiB
Markdown
# Spécification de base: UnionFlow - Projet existant (Brownfield)
|
||
|
||
**Feature Branch**: `000-unionflow-baseline`
|
||
**Created**: 2026-02-27
|
||
**Updated**: 2026-03-08
|
||
**Status**: Baseline documentant l'état actuel
|
||
**Type**: Brownfield / Documentation
|
||
|
||
## Contexte
|
||
|
||
Ce document capture l'état actuel du projet UnionFlow pour le Spec-Driven Development. UnionFlow est une plateforme de gestion d'associations, clubs et organisations à but non lucratif, et de **gestion des mutuelles d'épargne et de financement**.
|
||
|
||
**Référence anti-hallucination** : l’inventaire détaillé du code (packages API, migrations, features mobile, routes) est dans `.specify/memory/inventaire-code.md`. Toute spécification ou implémentation doit s’y aligner ; ne pas inventer de packages, endpoints ou fichiers non listés.
|
||
|
||
## Architecture actuelle
|
||
|
||
### Modules
|
||
|
||
| Module | Technologie | Rôle |
|
||
|--------|-------------|------|
|
||
| **unionflow-server-api** | Java 17, Maven | DTOs, enums, contrats API (sans dépendances runtime) |
|
||
| **unionflow-server-impl-quarkus** | Quarkus 3.15.1, Panache | Backend REST, JPA, Keycloak |
|
||
| **unionflow-client-quarkus-primefaces-freya** | Quarkus, PrimeFaces | Client web admin |
|
||
| **unionflow-mobile-apps** | Flutter 3.x | Application mobile (Android/iOS) |
|
||
|
||
### Principes clés (cf. CONSTITUTION.md)
|
||
|
||
- **DDD strict**: Resources → Services → Repositories
|
||
- **API/Impl separation**: unionflow-server-api pur, sans Quarkus/JPA
|
||
- **Keycloak**: Authentification OAuth2/OIDC
|
||
- **PostgreSQL** (prod), **H2** (dev/test)
|
||
- **100% JaCoCo** sur le backend
|
||
- **Flyway** pour les migrations
|
||
|
||
### Répertoires importants
|
||
|
||
```
|
||
unionflow/
|
||
├── unionflow-server-api/ # API pure
|
||
├── unionflow-server-impl-quarkus/ # Implémentation
|
||
├── unionflow-client-quarkus-primefaces-freya/
|
||
├── unionflow-mobile-apps/ # Flutter
|
||
├── .specify/ # Spec-Kit
|
||
├── specs/ # Spécifications features
|
||
└── CONSTITUTION.md # Principes projet
|
||
```
|
||
|
||
## Workflow Spec-Kit pour nouvelles features
|
||
|
||
1. **Branche feature**: `001-nom-court`, `002-autre-feature`, etc.
|
||
2. **Specs**: `specs/001-nom-court/spec.md`, `plan.md`, `tasks.md`
|
||
3. **Commandes Cursor**: `/speckit.specify`, `/speckit.plan`, `/speckit.tasks`, `/speckit.implement`
|
||
|
||
## Inventaire consolidé
|
||
|
||
- **API** : ~210 fichiers Java en `unionflow-server-api/src/main/java` (dto.*, enums.*, service.dashboard, validation). Voir `.specify/memory/inventaire-code.md` pour la liste des packages et conventions.
|
||
- **Impl** : Migrations Flyway V1.2 à V3.4 listées dans l’inventaire ; code métier (entity, service, resource, mapper) selon CONSTITUTION.
|
||
- **Mobile** : Routes `/`, `/login`, `/dashboard` ; navigation par onglets (Dashboard, Membres, Événements, Plus) ; features about, adhesions, admin, authentication, backup, contributions, dashboard, epargne, events, explore, feed, help, logs, members, notifications, organizations, profile, reports, settings, solidarity. Détail à jour dans `.specify/memory/inventaire-code.md`.
|
||
|
||
## Artefacts Spec-Kit (référence complète)
|
||
|
||
- **Racine** : `SPEC-KIT.md` (vue d’ensemble), `CONSTITUTION.md` (principes).
|
||
- **.specify/memory/** : `constitution.md`, `inventaire-code.md` (référence anti-hallucination).
|
||
- **.specify/scripts/powershell/** : `common.ps1`, `check-prerequisites.ps1`, `setup-plan.ps1`, `create-new-feature.ps1`, `update-agent-context.ps1`. Aucun script Bash.
|
||
- **.specify/templates/** : `spec-template.md`, `plan-template.md`, `tasks-template.md`, `checklist-template.md`, `constitution-template.md`, `agent-file-template.md`.
|
||
- **.cursor/commands/** : `speckit.constitution.md`, `speckit.specify.md`, `speckit.plan.md`, `speckit.tasks.md`, `speckit.implement.md`, `speckit.clarify.md`, `speckit.checklist.md`, `speckit.analyze.md`, `speckit.taskstoissues.md`.
|
||
- **.cursor/rules/** : `unionflow-spec-kit.mdc` (always), `unionflow-backend.mdc`, `unionflow-mobile.mdc`.
|
||
- **specs/** : `000-unionflow-baseline/spec.md` (ce fichier) ; par feature `00X-nom/` : `spec.md`, `plan.md`, `tasks.md`, optionnellement `research.md`, `data-model.md`, `quickstart.md`, `contracts/`, `checklists/`.
|
||
|
||
En cas de divergence entre documentation et code, **le code fait foi** ; mettre à jour l’inventaire en conséquence.
|
||
|
||
## Commandes utiles
|
||
|
||
```powershell
|
||
# Backend
|
||
cd unionflow-server-impl-quarkus && mvn clean verify
|
||
|
||
# Mobile
|
||
cd unionflow-mobile-apps && flutter pub get && flutter test
|
||
```
|