# Templates FRD - Business Analyse

> **Usage:** Templates pour les documents de spécification fonctionnelle (FRD)
> **Contexte:** Business > Application > Module > Section

---

## Template 1-discovery.md

```markdown
# Discovery - {FEAT-XXX} {Feature Name}

> **Module:** business/{application}/{module}
> **Version:** 1.0
> **Date:** {YYYY-MM-DD}
> **Auteur:** Business Analyst

## 1. Contexte Business

### 1.1 Description du besoin
{Description claire du besoin métier exprimé par le stakeholder}

### 1.2 Problème actuel
{Situation actuelle et ses limitations}

### 1.3 Valeur attendue
{Bénéfices business mesurables}

## 2. Stakeholders

| Rôle | Nom/Fonction | Implication | Niveau décision |
|------|--------------|-------------|-----------------|
| Sponsor | {nom} | {description} | Approbateur |
| Product Owner | {nom} | {description} | Décideur |
| Utilisateur clé | {nom} | {description} | Consulté |

## 3. Périmètre

### 3.1 In Scope
- [ ] {Fonctionnalité incluse 1}
- [ ] {Fonctionnalité incluse 2}

### 3.2 Out of Scope
- {Exclusion explicite 1}
- {Exclusion explicite 2}

## 4. Questions ouvertes

| # | Question | Réponse | Statut |
|---|----------|---------|--------|
| Q1 | {Question} | {Réponse ou "En attente"} | ⏳/✅ |

## 5. Contraintes identifiées

| Type | Contrainte | Impact |
|------|------------|--------|
| Technique | {contrainte} | {impact} |
| Budget | {contrainte} | {impact} |
| Délai | {contrainte} | {impact} |
| Réglementaire | {contrainte} | {impact} |

## 6. Dépendances

| Dépendance | Type | Module/Système | Criticité |
|------------|------|----------------|-----------|
| {dép} | Interne/Externe | {module} | Haute/Moyenne/Basse |

---

## Historique des versions

| Version | Date | Auteur | Modifications |
|---------|------|--------|---------------|
| 1.0 | {date} | BA | Création initiale |
```

---

## Template 2-brd.md (Business Requirements Document)

```markdown
# BRD - {FEAT-XXX} {Feature Name}

> **Module:** business/{application}/{module}
> **Version:** 1.0
> **Basé sur:** 1-discovery.md v1.0

## 1. Résumé exécutif

{Synthèse en 3-5 phrases du besoin business et de la solution proposée}

## 2. Objectifs business

| ID | Objectif | Métrique | Cible |
|----|----------|----------|-------|
| OBJ-001 | {objectif} | {KPI mesurable} | {valeur cible} |

## 3. Règles métier

| ID | Règle | Catégorie | Priorité |
|----|-------|-----------|----------|
| BR-001 | {Description de la règle métier} | Validation/Calcul/Workflow | Must/Should/Could |
| BR-002 | {Description} | {catégorie} | {priorité} |

### 3.1 Détail des règles critiques

#### BR-001: {Nom règle}

**Énoncé:** {Formulation précise de la règle}

**Conditions:**
- SI {condition A}
- ET {condition B}
- ALORS {résultat}
- SINON {résultat alternatif}

**Exemples:**
| Entrée | Sortie attendue |
|--------|-----------------|
| {exemple 1} | {résultat 1} |
| {exemple 2} | {résultat 2} |

## 4. Processus métier

### 4.1 Processus principal

```
┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│   Étape 1   │────►│   Étape 2   │────►│   Étape 3   │
│  {action}   │     │  {action}   │     │  {action}   │
└─────────────┘     └─────────────┘     └─────────────┘
      │                   │                   │
      ▼                   ▼                   ▼
  {acteur}            {acteur}            {acteur}
```

### 4.2 Flux alternatifs

| Déclencheur | Flux | Résultat |
|-------------|------|----------|
| {condition} | {description du flux} | {état final} |

## 5. Données métier

### 5.1 Entités principales

| Entité | Description | Cardinalité |
|--------|-------------|-------------|
| {Entité} | {description} | 1:N avec {autre entité} |

### 5.2 Attributs clés (PAS de types techniques)

| Entité | Attribut | Description | Obligatoire |
|--------|----------|-------------|-------------|
| {Entité} | {attribut} | {description métier} | Oui/Non |

## 6. Intégrations

| Système | Direction | Données | Fréquence |
|---------|-----------|---------|-----------|
| {système} | Entrée/Sortie/Bidirectionnel | {données} | Temps réel/Batch |

---

## Historique des versions

| Version | Date | Auteur | Modifications |
|---------|------|--------|---------------|
| 1.0 | {date} | BA | Création initiale |
```

---

## Template 3-frd.md (Functional Requirements Document)

```markdown
# FRD - {FEAT-XXX} {Feature Name}

> **Module:** business/{application}/{module}
> **Version:** 1.0
> **Basé sur:** 2-brd.md v1.0
> **Permission path:** business.{application}.{module}.*

## 1. Vue d'ensemble

### 1.1 Objectif fonctionnel
{Description de ce que le système doit faire}

### 1.2 Acteurs

| Acteur | Description | Permissions requises |
|--------|-------------|---------------------|
| {Rôle} | {description} | `business.{app}.{module}.{action}` |

## 2. Cas d'utilisation

### UC-001: {Nom du cas d'utilisation}

| Attribut | Valeur |
|----------|--------|
| **ID** | UC-001 |
| **Nom** | {Nom} |
| **Acteur principal** | {Rôle} |
| **Préconditions** | {conditions requises} |
| **Postconditions** | {état final} |
| **Permission** | `business.{app}.{module}.{action}` |

**Scénario principal:**
1. L'utilisateur {action}
2. Le système {réponse}
3. L'utilisateur {action}
4. Le système {réponse}

**Scénarios alternatifs:**

| # | Condition | Étapes |
|---|-----------|--------|
| 3a | {condition} | 3a.1 {action}, 3a.2 {action} |

**Scénarios d'erreur:**

| # | Erreur | Message | Action |
|---|--------|---------|--------|
| E1 | {erreur} | {message utilisateur} | {comportement} |

## 3. Exigences fonctionnelles

| ID | Exigence | UC lié | Priorité |
|----|----------|--------|----------|
| FR-001 | {Le système DOIT...} | UC-001 | Must |
| FR-002 | {Le système DEVRAIT...} | UC-001 | Should |

### 3.1 Détail FR-001

**Énoncé:** Le système DOIT {action spécifique}

**Critères d'acceptation:**
- [ ] {Critère mesurable 1}
- [ ] {Critère mesurable 2}

**Règles associées:** BR-001, BR-002

## 4. Interface utilisateur

### 4.1 Wireframe - Écran principal

```
┌─────────────────────────────────────────────────────────────┐
│  [Logo]    {Module Name}                      [User] [Menu] │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ FILTRE                                               │   │
│  │ [Champ 1 ▼] [Champ 2 ▼] [Rechercher]               │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ TABLEAU                                              │   │
│  │ ┌────────┬────────┬────────┬─────────┐              │   │
│  │ │ Col 1  │ Col 2  │ Col 3  │ Actions │              │   │
│  │ ├────────┼────────┼────────┼─────────┤              │   │
│  │ │ data   │ data   │ data   │ [E] [D] │              │   │
│  │ └────────┴────────┴────────┴─────────┘              │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  [+ Nouveau]                           [< Prev] [Next >]   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
```

### 4.2 Description des éléments UI

| Élément | Type | Comportement | Permission |
|---------|------|--------------|------------|
| [+ Nouveau] | Bouton | Ouvre modal création | `{module}.create` |
| [E] | Icône | Ouvre modal édition | `{module}.update` |
| [D] | Icône | Confirmation + suppression | `{module}.delete` |

## 5. Validation et messages

### 5.1 Validations

| Champ | Règle | Message erreur |
|-------|-------|----------------|
| {champ} | {règle de validation} | {message i18n key} |

### 5.2 Messages système

| Code | Type | Message (clé i18n) |
|------|------|-------------------|
| MSG-001 | Success | `{module}.messages.created` |
| MSG-002 | Error | `{module}.errors.notFound` |

## 6. Permissions détaillées

### 6.1 Matrice Rôle-Permission

| Permission | Admin | Manager | User | ReadOnly |
|------------|-------|---------|------|----------|
| `business.{app}.{module}.read` | ✅ | ✅ | ✅ | ✅ |
| `business.{app}.{module}.create` | ✅ | ✅ | ❌ | ❌ |
| `business.{app}.{module}.update` | ✅ | ✅ | ❌ | ❌ |
| `business.{app}.{module}.delete` | ✅ | ❌ | ❌ | ❌ |

### 6.2 Mapping Endpoint-Permission

| Endpoint | Méthode | Permission requise |
|----------|---------|-------------------|
| `/api/business/{module}` | GET | `{module}.read` |
| `/api/business/{module}` | POST | `{module}.create` |
| `/api/business/{module}/{id}` | PUT | `{module}.update` |
| `/api/business/{module}/{id}` | DELETE | `{module}.delete` |

## 7. Scénarios Gherkin

```gherkin
Feature: {FEAT-XXX} {Feature Name}

  @permission @403
  Scenario: User without permission cannot create
    Given I am logged in as "user@test.com" with role "ReadOnly"
    When I send POST to "/api/business/{module}"
    Then the response status should be 403
    And the response should contain "Permission denied"

  @happy-path
  Scenario: Admin creates new item
    Given I am logged in as "admin@test.com" with role "Admin"
    And I have permission "business.{app}.{module}.create"
    When I send POST to "/api/business/{module}" with:
      | field1 | value1 |
      | field2 | value2 |
    Then the response status should be 201
    And the response should contain "id"
```

---

## Historique des versions

| Version | Date | Auteur | Modifications |
|---------|------|--------|---------------|
| 1.0 | {date} | BA | Création initiale |
```

---

## Template 4-handoff.md

```markdown
# Development Handoff - {FEAT-XXX} {Feature Name}

> **Module:** business/{application}/{module}
> **Version:** 1.0
> **Specs validées:** FRD v1.0 (validation.json)
> **Implémentation:** `/implement FEAT-XXX`

## INSTRUCTIONS DÉVELOPPEUR

Ce document est un prompt autonome pour Claude Code. Exécutez:
```
/implement FEAT-XXX
```

---

## 1. CONTEXTE RAPIDE

| Attribut | Valeur |
|----------|--------|
| Feature ID | FEAT-XXX |
| Module | business/{application}/{module} |
| Permission base | `business.{app}.{module}` |
| Complexité | {Simple/Moyenne/Complexe} |

## 2. [EXPLORE] PATTERNS EXISTANTS

AVANT de coder, explorer ces fichiers pour comprendre les patterns:

```
BACKEND:
- src/SmartStack.Domain/Entities/ → Structure entités
- src/SmartStack.Application/Features/ → Pattern CQRS
- src/SmartStack.Infrastructure/Persistence/Configurations/ → EF Core

FRONTEND:
- web/smartstack-web/src/pages/business/ → Pages existantes
- web/smartstack-web/src/components/ → Composants réutilisables
- web/smartstack-web/src/services/api/ → Appels API
```

## 3. FICHIERS À CRÉER

### 3.1 Backend

| Fichier | Template | Description |
|---------|----------|-------------|
| `Domain/Entities/{Entity}.cs` | Entité Domain | Propriétés + règles métier |
| `Application/Features/{Module}/` | CQRS Commands/Queries | Handlers MediatR |
| `Infrastructure/.../Configurations/` | EF Core Config | HasData si seed |
| `Api/Controllers/Business/` | Controller API | Endpoints REST |

### 3.2 Frontend

| Fichier | Template | Description |
|---------|----------|-------------|
| `pages/business/{app}/{module}/` | Page React | Liste + détail |
| `services/api/{module}Api.ts` | Service API | Appels axios |
| `i18n/locales/{lang}/{module}.json` | Traductions | FR, EN, IT, DE |

## 4. SPÉCIFICATIONS DÉTAILLÉES

### 4.1 Entité (attributs business, pas types C#)

| Attribut | Description | Obligatoire | Règles |
|----------|-------------|-------------|--------|
| Id | Identifiant unique | Oui | GUID aléatoire |
| {attr} | {description} | {Oui/Non} | {validation} |

### 4.2 Endpoints API

| Endpoint | Méthode | Permission | Body | Response |
|----------|---------|------------|------|----------|
| `/api/business/{module}` | GET | `.read` | - | Liste paginée |
| `/api/business/{module}` | POST | `.create` | CreateDto | 201 + entité |
| `/api/business/{module}/{id}` | GET | `.read` | - | Entité |
| `/api/business/{module}/{id}` | PUT | `.update` | UpdateDto | 200 + entité |
| `/api/business/{module}/{id}` | DELETE | `.delete` | - | 204 |

### 4.3 Règles métier à implémenter

| BR-ID | Règle | Implémentation |
|-------|-------|----------------|
| BR-001 | {règle} | {où l'implémenter} |

## 5. TESTS REQUIS

- [ ] Test unitaire: Validation entité
- [ ] Test integration: Endpoints API (200, 201, 400, 403, 404)
- [ ] Test permission: Refus 403 sans permission
- [ ] Test Postman: Collection générée

## 6. CHECKLIST POST-IMPLÉMENTATION

- [ ] Build backend OK
- [ ] Build frontend OK
- [ ] Tests passent
- [ ] Migration EF Core créée si entité
- [ ] Permissions ajoutées dans PermissionConfiguration.cs
- [ ] i18n complet (4 langues)
- [ ] Documentation générée: `/business-analyse:7-doc-html FEAT-XXX`

---

## EXÉCUTION

```bash
/implement FEAT-XXX
```

Options:
- `--phase=1` : Backend seulement
- `--phase=2` : Frontend seulement
- `--phase=3` : Tests seulement
- `--phase=4` : Documentation seulement
```

---

## Validation des templates

Chaque template DOIT:
- [ ] Être en Markdown pur (pas de code technique)
- [ ] Utiliser des tables pour les données structurées
- [ ] Inclure les permissions avec le path complet
- [ ] Avoir un historique de versions
- [ ] Référencer les BR/FR/UC avec des IDs uniques
