---
description: Phase 10 - Change Request - Formal specification change during development
agent: ba-change-request
model: sonnet
---

# Change Request - Modification Post-Handoff

> **Modèle:** Sonnet (analyse d'impact)
> **Usage:** Changement de scope après validation/handoff
> **Output:** `.business-analyse/.../tracking/changes/CR-FEAT-XXX-NNN.md`

---

## QUAND UTILISER

```
╔══════════════════════════════════════════════════════════════════════════════╗
║  CHANGE REQUEST: Modification formelle des spécifications                    ║
╠══════════════════════════════════════════════════════════════════════════════╣
║                                                                              ║
║  Utiliser APRÈS validation (phase 5) ou handoff (phase 6) quand:             ║
║                                                                              ║
║  • Le stakeholder demande une modification de scope                          ║
║  • Une nouvelle exigence est découverte                                      ║
║  • Un cas d'usage manquant est identifié                                     ║
║  • Une règle métier doit être modifiée                                       ║
║                                                                              ║
║  PROCESSUS:                                                                  ║
║  1. Documenter le changement demandé                                         ║
║  2. Analyser l'impact sur les specs existantes                               ║
║  3. Estimer l'effort                                                         ║
║  4. Obtenir approbation                                                      ║
║  5. Mettre à jour les documents (avec versioning)                            ║
║                                                                              ║
╚══════════════════════════════════════════════════════════════════════════════╝
```

---

## STEP 1: Identification

```bash
FEATURE_ID=$1
FEATURE_DIR=$(find .business-analyse -type d -name "${FEATURE_ID}*" | head -1)

if [ -z "$FEATURE_DIR" ]; then
  echo "❌ ERREUR: Feature $FEATURE_ID non trouvée"
  exit 1
fi

# Générer CR ID
EXISTING_CRS=$(find "$FEATURE_DIR/tracking/changes" -name "CR-*.md" 2>/dev/null | wc -l)
CR_NUM=$(printf "%03d" $((EXISTING_CRS + 1)))
CR_ID="CR-${FEATURE_ID}-${CR_NUM}"

CR_DIR="$FEATURE_DIR/tracking/changes"
mkdir -p "$CR_DIR"
```

---

## STEP 2: Collecte du changement

```javascript
AskUserQuestion({
  questions: [
    {
      question: "Quel type de changement est demandé?",
      header: "Type",
      options: [
        { label: "Nouvelle fonctionnalité", description: "Ajouter quelque chose de nouveau" },
        { label: "Modification existant", description: "Changer un comportement" },
        { label: "Suppression", description: "Retirer une fonctionnalité" },
        { label: "Clarification", description: "Préciser une spec ambiguë" }
      ],
      multiSelect: false
    },
    {
      question: "Quelle est la priorité de ce changement?",
      header: "Priorité",
      options: [
        { label: "Critique", description: "Bloque la release" },
        { label: "Haute", description: "Important pour le MVP" },
        { label: "Moyenne", description: "Souhaitable" },
        { label: "Basse", description: "Nice-to-have" }
      ],
      multiSelect: false
    },
    {
      question: "Ce changement est-il approuvé par le sponsor?",
      header: "Approbation",
      options: [
        { label: "Oui, approuvé", description: "Sponsor a validé" },
        { label: "En attente", description: "Discussion en cours" },
        { label: "À soumettre", description: "Pas encore discuté" }
      ],
      multiSelect: false
    }
  ]
})
```

---

## STEP 3: Description détaillée

Collecter:
- Description du changement demandé
- Justification business
- Demandeur (qui a demandé)

---

## STEP 4: Analyse d'impact

### 4.1 Impact sur les documents

Analyser automatiquement les documents existants:

```bash
# Lire les documents
DISCOVERY=$(cat "$FEATURE_DIR/1-discovery.md" 2>/dev/null)
BRD=$(cat "$FEATURE_DIR/2-business-requirements.md" 2>/dev/null)
FRD=$(cat "$FEATURE_DIR/3-functional-specification.md" 2>/dev/null)
HANDOFF=$(cat "$FEATURE_DIR/4-development-handoff.md" 2>/dev/null)

# Identifier les sections impactées
echo "Analyse d'impact en cours..."
```

### 4.2 Matrice d'impact

| Document | Section | Impact | Modification requise |
|----------|---------|--------|---------------------|
| Discovery | Périmètre | {Aucun/Mineur/Majeur} | {description} |
| BRD | Règles métier | {Aucun/Mineur/Majeur} | {description} |
| FRD | Use Cases | {Aucun/Mineur/Majeur} | {description} |
| FRD | Wireframes | {Aucun/Mineur/Majeur} | {description} |
| FRD | Permissions | {Aucun/Mineur/Majeur} | {description} |
| Handoff | Instructions | {Aucun/Mineur/Majeur} | {description} |

### 4.3 Impact sur le code (si déjà implémenté)

| Couche | Fichiers impactés | Type de modification |
|--------|-------------------|---------------------|
| Domain | {fichiers} | {ajouter/modifier/supprimer} |
| Application | {fichiers} | {ajouter/modifier/supprimer} |
| Infrastructure | {fichiers} | {ajouter/modifier/supprimer} |
| API | {fichiers} | {ajouter/modifier/supprimer} |
| Frontend | {fichiers} | {ajouter/modifier/supprimer} |

---

## STEP 5: Estimation effort

| Composant | Effort estimé | Complexité |
|-----------|---------------|------------|
| Mise à jour specs | {heures} | {Simple/Moyen/Complexe} |
| Backend | {heures} | {Simple/Moyen/Complexe} |
| Frontend | {heures} | {Simple/Moyen/Complexe} |
| Tests | {heures} | {Simple/Moyen/Complexe} |
| **Total** | **{heures}** | |

---

## STEP 6: Génération du document CR

### Template CR-FEAT-XXX-NNN.md

```markdown
# {CR_ID} - Change Request

> **Feature:** {FEATURE_ID}
> **Type:** {Nouvelle fonctionnalité/Modification/Suppression/Clarification}
> **Priorité:** {Critique/Haute/Moyenne/Basse}
> **Status:** {En attente/Approuvé/Rejeté/Implémenté}
> **Date:** {YYYY-MM-DD}

---

## 1. Changement demandé

### Description
{Description détaillée du changement}

### Justification business
{Pourquoi ce changement est nécessaire}

### Demandeur
{Nom et rôle du demandeur}

---

## 2. Analyse d'impact

### 2.1 Documents impactés

| Document | Version actuelle | Impact | Action |
|----------|-----------------|--------|--------|
| 1-discovery.md | 1.0 | {impact} | {action} |
| 2-brd.md | 1.0 | {impact} | {action} |
| 3-frd.md | 1.0 | {impact} | {action} |
| 4-handoff.md | 1.0 | {impact} | {action} |

### 2.2 Specs impactées

| Type | ID | Modification |
|------|----|----|
| Règle métier | BR-XXX | {Modifier/Ajouter/Supprimer: description} |
| Use Case | UC-XXX | {Modifier/Ajouter/Supprimer: description} |
| Exigence | FR-XXX | {Modifier/Ajouter/Supprimer: description} |

### 2.3 Code impacté (si déjà développé)

| Fichier | Modification |
|---------|--------------|
| `{path}` | {description} |

---

## 3. Effort estimé

| Composant | Effort | Risque |
|-----------|--------|--------|
| Specs | {heures} | {Faible/Moyen/Élevé} |
| Backend | {heures} | {Faible/Moyen/Élevé} |
| Frontend | {heures} | {Faible/Moyen/Élevé} |
| Tests | {heures} | {Faible/Moyen/Élevé} |
| **Total** | **{heures}** | |

---

## 4. Décision

### Recommandation
{Accepter/Rejeter/Reporter} ce changement

### Justification
{Pourquoi cette recommandation}

### Conditions (si accepté)
- {Condition 1}
- {Condition 2}

---

## 5. Approbation

| Rôle | Nom | Décision | Date |
|------|-----|----------|------|
| Product Owner | {nom} | {Approuvé/Rejeté} | {date} |
| Tech Lead | {nom} | {Approuvé/Rejeté} | {date} |

---

## 6. Implémentation (si approuvé)

### 6.1 Mise à jour des specs

| Document | Nouvelle version | Modifications |
|----------|-----------------|---------------|
| 3-frd.md | 1.1 | {description} |

### 6.2 Prompt de modification

```
CHANGE REQUEST: {CR_ID}

CHANGEMENT À IMPLÉMENTER:
{description du changement}

FICHIERS À MODIFIER:
{liste des fichiers}

TESTS À AJOUTER:
{scénarios Gherkin}

VALIDATION:
{critères de validation}
```

---

## 7. Historique

| Date | Action | Par |
|------|--------|-----|
| {date} | CR créé | {auteur} |
| {date} | Analyse complétée | {auteur} |
| {date} | {Approuvé/Rejeté} | {décideur} |
| {date} | Implémenté | {dev} |
| {date} | Validé | {qa} |
```

---

## STEP 7: Actions post-approbation

Si le CR est approuvé:

### 7.1 Mise à jour des documents

```bash
# Incrémenter version des documents impactés
# 1.0 → 1.1 pour changement mineur
# 1.0 → 2.0 pour changement majeur

# Ajouter dans l'historique de chaque document:
# | 1.1 | {date} | BA | CR-FEAT-XXX-001: {description} |
```

### 7.2 Options d'implémentation

```javascript
AskUserQuestion({
  questions: [{
    question: "Comment souhaitez-vous implémenter ce changement?",
    header: "Action",
    options: [
      { label: "Implémentation immédiate", description: "Générer prompt et implémenter maintenant" },
      { label: "Planifier", description: "Ajouter au backlog pour plus tard" },
      { label: "Mettre à jour specs seulement", description: "Modifier les documents, implémenter plus tard" }
    ],
    multiSelect: false
  }]
})
```

---

## STEP 8: Résumé

```
================================================================================
                    CHANGE REQUEST CRÉÉ - {CR_ID}
================================================================================

FEATURE:           {FEATURE_ID}
TYPE:              {type}
PRIORITÉ:          {priorité}
STATUS:            {status}

IMPACT:
  Documents:       {N} impactés
  Règles métier:   {N} modifiées
  Code:            {N} fichiers

EFFORT ESTIMÉ:     {N} heures

================================================================================
PROCHAINES ÉTAPES
================================================================================

SI APPROUVÉ:
1. Mettre à jour les specs avec versioning
2. Générer prompt de modification
3. Implémenter les changements
4. Valider et fermer le CR

SI REJETÉ:
1. Documenter la raison
2. Archiver le CR

================================================================================

Contact support: support@atlshub.ch
```
