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:
@@ -1,10 +1,11 @@
|
||||
---
|
||||
description: Perform a non-destructive cross-artifact consistency and quality analysis across spec.md, plan.md, and tasks.md after task generation.
|
||||
scripts:
|
||||
sh: scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks
|
||||
ps: .specify/scripts/powershell/check-prerequisites.ps1 -Json -RequireTasks -IncludeTasks
|
||||
---
|
||||
|
||||
**UnionFlow** : Exécuter le script PowerShell depuis la racine du dépôt. Script : `.specify/scripts/powershell/check-prerequisites.ps1 -Json -RequireTasks -IncludeTasks`. Aucun script Bash n'est fourni.
|
||||
|
||||
## User Input
|
||||
|
||||
```text
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
---
|
||||
description: Generate a custom checklist for the current feature based on user requirements.
|
||||
scripts:
|
||||
sh: scripts/bash/check-prerequisites.sh --json
|
||||
ps: .specify/scripts/powershell/check-prerequisites.ps1 -Json
|
||||
---
|
||||
|
||||
**UnionFlow** : Exécuter le script PowerShell depuis la racine du dépôt. Script : `.specify/scripts/powershell/check-prerequisites.ps1 -Json`. Pour les contenus, s'appuyer sur `.specify/memory/inventaire-code.md`. Aucun script Bash n'est fourni.
|
||||
|
||||
## Checklist Purpose: "Unit Tests for English"
|
||||
|
||||
**CRITICAL CONCEPT**: Checklists are **UNIT TESTS FOR REQUIREMENTS WRITING** - they validate the quality, clarity, and completeness of requirements in a given domain.
|
||||
|
||||
@@ -5,10 +5,11 @@ handoffs:
|
||||
agent: speckit.plan
|
||||
prompt: Create a plan for the spec. I am building with...
|
||||
scripts:
|
||||
sh: scripts/bash/check-prerequisites.sh --json --paths-only
|
||||
ps: .specify/scripts/powershell/check-prerequisites.ps1 -Json -PathsOnly
|
||||
---
|
||||
|
||||
**UnionFlow** : Exécuter le script PowerShell depuis la racine du dépôt. Script : `.specify/scripts/powershell/check-prerequisites.ps1 -Json -PathsOnly`. Aucun script Bash n'est fourni.
|
||||
|
||||
## User Input
|
||||
|
||||
```text
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
---
|
||||
description: Execute the implementation plan by processing and executing all tasks defined in tasks.md
|
||||
scripts:
|
||||
sh: scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks
|
||||
ps: .specify/scripts/powershell/check-prerequisites.ps1 -Json -RequireTasks -IncludeTasks
|
||||
---
|
||||
|
||||
**UnionFlow** : Exécuter le script PowerShell depuis la racine du dépôt (unionflow/). Script : `.specify/scripts/powershell/check-prerequisites.ps1 -Json -RequireTasks -IncludeTasks`. Aucun script Bash n'est fourni.
|
||||
|
||||
## User Input
|
||||
|
||||
```text
|
||||
|
||||
@@ -9,13 +9,13 @@ handoffs:
|
||||
agent: speckit.checklist
|
||||
prompt: Create a checklist for the following domain...
|
||||
scripts:
|
||||
sh: scripts/bash/setup-plan.sh --json
|
||||
ps: .specify/scripts/powershell/setup-plan.ps1 -Json
|
||||
agent_scripts:
|
||||
sh: scripts/bash/update-agent-context.sh __AGENT__
|
||||
ps: .specify/scripts/powershell/update-agent-context.ps1 -AgentType __AGENT__
|
||||
---
|
||||
|
||||
**UnionFlow** : Exécuter le script PowerShell depuis la racine du dépôt (unionflow/). Script : `.specify/scripts/powershell/setup-plan.ps1 -Json`. Aucun script Bash n'est fourni.
|
||||
|
||||
## User Input
|
||||
|
||||
```text
|
||||
|
||||
@@ -9,10 +9,11 @@ handoffs:
|
||||
prompt: Clarify specification requirements
|
||||
send: true
|
||||
scripts:
|
||||
sh: scripts/bash/create-new-feature.sh --json "{ARGS}"
|
||||
ps: .specify/scripts/powershell/create-new-feature.ps1 -Json "{ARGS}"
|
||||
---
|
||||
|
||||
**UnionFlow** : Exécuter le script PowerShell depuis la racine du dépôt (unionflow/). Script : `.specify/scripts/powershell/create-new-feature.ps1 -Json` + arguments. S'appuyer sur `.specify/memory/inventaire-code.md` pour ne pas inventer de packages ou features. Aucun script Bash n'est fourni.
|
||||
|
||||
## User Input
|
||||
|
||||
```text
|
||||
@@ -58,9 +59,8 @@ Given that feature description, do this:
|
||||
- Use N+1 for the new branch number
|
||||
|
||||
d. Run the script `{SCRIPT}` with the calculated number and short-name:
|
||||
- Pass `--number N+1` and `--short-name "your-short-name"` along with the feature description
|
||||
- Bash example: `{SCRIPT} --json --number 5 --short-name "user-auth" "Add user authentication"`
|
||||
- PowerShell example: `{SCRIPT} -Json -Number 5 -ShortName "user-auth" "Add user authentication"`
|
||||
- Pass `-Number N+1` and `-ShortName "your-short-name"` along with the feature description
|
||||
- UnionFlow (PowerShell depuis racine dépôt) : `.specify/scripts/powershell/create-new-feature.ps1 -Json -Number 5 -ShortName "user-auth" "Add user authentication"`
|
||||
|
||||
**IMPORTANT**:
|
||||
- Check all three sources (remote branches, local branches, specs directories) to find the highest number
|
||||
|
||||
@@ -10,10 +10,11 @@ handoffs:
|
||||
prompt: Start the implementation in phases
|
||||
send: true
|
||||
scripts:
|
||||
sh: scripts/bash/check-prerequisites.sh --json
|
||||
ps: .specify/scripts/powershell/check-prerequisites.ps1 -Json
|
||||
---
|
||||
|
||||
**UnionFlow** : Exécuter le script PowerShell depuis la racine du dépôt (unionflow/). Script : `.specify/scripts/powershell/check-prerequisites.ps1 -Json`. Aucun script Bash n'est fourni.
|
||||
|
||||
## User Input
|
||||
|
||||
```text
|
||||
|
||||
@@ -2,10 +2,11 @@
|
||||
description: Convert existing tasks into actionable, dependency-ordered GitHub issues for the feature based on available design artifacts.
|
||||
tools: ['github/github-mcp-server/issue_write']
|
||||
scripts:
|
||||
sh: scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks
|
||||
ps: .specify/scripts/powershell/check-prerequisites.ps1 -Json -RequireTasks -IncludeTasks
|
||||
---
|
||||
|
||||
**UnionFlow** : Exécuter le script PowerShell depuis la racine du dépôt. Script : `.specify/scripts/powershell/check-prerequisites.ps1 -Json -RequireTasks -IncludeTasks`. Aucun script Bash n'est fourni.
|
||||
|
||||
## User Input
|
||||
|
||||
```text
|
||||
|
||||
@@ -27,4 +27,4 @@ alwaysApply: false
|
||||
|
||||
## Référence
|
||||
|
||||
Voir `CONSTITUTION.md` sections 1 (DDD), 2 (API/Impl), 5 (QA), 8 (API Design).
|
||||
Voir `CONSTITUTION.md` sections 1 (DDD), 2 (API/Impl), 5 (QA), 8 (API Design). Inventaire détaillé : `.specify/memory/inventaire-code.md` (sections 1 et 2).
|
||||
|
||||
@@ -6,24 +6,28 @@ alwaysApply: false
|
||||
|
||||
# UnionFlow Mobile (Flutter)
|
||||
|
||||
## Structure
|
||||
## Structure (alignée sur l’inventaire)
|
||||
|
||||
- Architecture feature-first avec Bloc
|
||||
- `lib/features/{feature}/` : data/, domain/, presentation/, di/
|
||||
- Design system partagé dans `lib/shared/design_system/`
|
||||
- **Point d’entrée** : `main.dart` → `AppConfig.initialize()`, `configureDependencies()`, `UnionFlowApp`.
|
||||
- **App** : `app/app.dart`, `app/router/app_router.dart`. Routes : `MaterialApp` avec `Map<String, WidgetBuilder>` (`/`, `/login`, `/dashboard`).
|
||||
- **Core** : `core/config/environment.dart` (AppConfig, Environment), `core/di/injection.dart`, `injection_container.dart`, `injection.config.dart`, `register_module.dart`, `core/network/api_client.dart`, `core/navigation/main_navigation_layout.dart`, `more_page.dart`.
|
||||
- **Features** : `lib/features/<nom>/` avec `data/` (models, repositories, services), `domain/` (quand présent), `presentation/` (bloc, pages, widgets). Pas de sous-dossier `di/` dédié par feature ; DI centralisé dans `core/di/`.
|
||||
- **Design system** : `lib/shared/design_system/`, `lib/shared/widgets/`.
|
||||
|
||||
Référence détaillée : `.specify/memory/inventaire-code.md` (section 4). Ne pas inventer de route, feature ou classe non listée.
|
||||
|
||||
## Conventions
|
||||
|
||||
- Bloc pour la gestion d'état
|
||||
- Injectable/GetIt pour l'injection de dépendances
|
||||
- Modèles avec json_serializable
|
||||
- Tests: bloc_test, mockito
|
||||
- Bloc pour la gestion d’état.
|
||||
- GetIt + Injectable pour l’injection de dépendances (enregistrements dans `injection.config.dart`).
|
||||
- Modèles avec `json_serializable` quand nécessaire.
|
||||
- Tests : `bloc_test`, `mockito`.
|
||||
|
||||
## Backend
|
||||
|
||||
- API: unionflow-server-impl-quarkus
|
||||
- Auth: Keycloak OAuth2, JWT via flutter_secure_storage
|
||||
- API : unionflow-server-impl-quarkus. Client HTTP : `ApiClient` (Dio), `baseUrl` via `AppConfig.apiBaseUrl`.
|
||||
- Auth : Keycloak OAuth2, JWT via `flutter_secure_storage` (clé `kc_access`), refresh et déconnexion forcée gérés dans `ApiClient`.
|
||||
|
||||
## Référence
|
||||
|
||||
Voir `CONSTITUTION.md` section 13 (Mobile Integration).
|
||||
Voir `CONSTITUTION.md` section 13 (Mobile Integration) et `.specify/memory/inventaire-code.md` § 4.
|
||||
|
||||
@@ -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 l’inventaire 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 **s’intégrer** à l’existant 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 c’est la convention du module.
|
||||
|
||||
## WOU / DRY (We Only Use – Don’t Repeat Yourself)
|
||||
|
||||
- **Avant de créer** tout nouvel élément (fichier, classe, méthode, widget, service, repository, etc.) : **vérifier qu’il n’existe pas déjà** (recherche par nom, motif ou responsabilité dans le codebase).
|
||||
- Si un équivalent existe : **réutiliser** ou **étendre** l’existant ; ne pas dupliquer la logique.
|
||||
- Si création après vérification : s’assurer 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 qu’ajouter une méthode similaire).
|
||||
- En résumé : **toujours vérifier l’inexistence 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 s’appuient sur un script utilisent **uniquement** les scripts PowerShell dans `.specify/scripts/powershell/` (depuis la racine du dépôt `unionflow/`). Aucun script Bash n’est 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 l’existant (packages, classes, endpoints, routes, migrations), s’appuyer 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 d’ensemble Spec-Kit : `SPEC-KIT.md` à la racine de `unionflow/`.
|
||||
|
||||
Reference in New Issue
Block a user