# 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

<!-- Remplacer le contenu par les détails techniques du projet -->

**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)

```text
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)

<!-- Remplacer l'arbre ci-dessous par la structure réelle de cette feature. Supprimer les options inutilisées. -->

```text
# [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] |
