- 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
3.5 KiB
Plan d'implémentation : [FONCTIONNALITÉ]
Branche : [###-nom-court] | Date : [DATE] | Spec : [lien]
Entrée : Spécification dans /specs/[###-nom-court]/spec.md
Note : Ce template est rempli par la commande /speckit.plan. Voir .specify/templates/plan-template.md pour le déroulé.
Résumé
[Extraire de la spec : exigence principale + approche technique issue de la recherche]
Contexte technique
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]
Contrôle constitution
JALON : Doit être validé avant la phase 0 (recherche). Re-vérifier après la phase 1 (conception).
[Critères déterminés à partir du fichier constitution]
Structure du projet
Documentation (cette feature)
specs/[###-feature]/
├── 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)
Code source (racine du dépôt)
# [SUPPRIMER SI INUTILISÉ] Option 1 : Projet unique (DÉFAUT)
src/
├── models/
├── services/
├── cli/
└── lib/
tests/
├── contract/
├── integration/
└── unit/
# [SUPPRIMER SI INUTILISÉ] Option 2 : Application web (backend + frontend)
backend/
├── src/
│ ├── models/
│ ├── services/
│ └── api/
└── tests/
frontend/
├── src/
│ ├── components/
│ ├── pages/
│ └── services/
└── tests/
# [SUPPRIMER SI INUTILISÉ] Option 3 : Mobile + API (iOS/Android)
api/
└── [idem backend ci-dessus]
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/
Décision de structure : [Documenter la structure retenue et les répertoires réels. Pour UnionFlow, s’appuyer sur .specify/memory/inventaire-code.md.]
Suivi des écarts à la constitution
À remplir UNIQUEMENT si le Contrôle constitution a des violations à justifier
| É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] |