# Catégorie 5 : Impact cross-module

> **Usage :** Analyser l'impact sur les modules existants et les dépendances partagées
> **Quand charger :** TOUJOURS pour les nouveaux modules (pas les améliorations)
> **Objectif :** Détecter les interactions, les entités partagées et les impacts d'intégration

---

## 5.1 Dépendances avec les modules existants

| # | Question | Type de réponse |
|---|----------|-----------------|
| Q5.1 | Avec quels modules existants ce nouveau module interagit-il ? | Liste de modules |
| Q5.2 | Quelles données sont partagées entre modules ? (entités, tables de référence) | Par module |
| Q5.3 | Y a-t-il des entités existantes que ce module va référencer ? (relations FK) | Liste de références |
| Q5.4 | Ce module produira-t-il des événements que d'autres modules consomment ? | Liste d'événements |

## 5.2 Évaluation d'impact

| # | Question | Type de réponse |
|---|----------|-----------------|
| Q5.5 | Les modules existants doivent-ils être modifiés pour supporter ce nouveau module ? | Liste de changements |
| Q5.6 | Y a-t-il des composants UI ou des changements de navigation partagés ? | Liste |
| Q5.7 | Ce module affectera-t-il les permissions ou rôles existants ? Quel impact sur l'intégration ? | Oui/Non + détail |
| Q5.8 | Y a-t-il des entités partagées modifiées par plusieurs modules ? Quel impact sur l'intégration ? | Évaluation de l'impact |

---

## Cross-Module Patterns

| Besoin | Pattern | Exemple |
|--------|---------|---------|
| Référence une entité | Navigation property + FK | `Order.ClientId -> Client` |
| Données de référence partagées | Entité partagée dans Domain | `Status`, `Category` |
| Notification événementielle | MediatR notification | `OrderCreatedNotification` |
| Requête cross-module | DTO en lecture seule | `IClientQueryService` |
| Lien de navigation | NavRoute entry | `business/{app}/{module}` |
| Permission partagée | Hiérarchie de permissions | `{app}.*` covers all modules |

---

## Guide d'élicitation

### Techniques de relance

| Question | Si la réponse est vague | Relance recommandée |
|----------|------------------------|---------------------|
| Q5.1 (interactions) | "Aucun" | "Ce module est totalement isolé ? Pas de lien avec des clients, produits, utilisateurs d'autres modules ?" |
| Q5.2 (données partagées) | "Je ne sais pas" | Utiliser le `{codebase_context}` : "J'ai trouvé les entités {list}. Ce module a-t-il besoin de les référencer ?" |
| Q5.3 (FK références) | Vague | "Une {entity} de ce module appartient-elle à un {existing_entity} ?" |
| Q5.4 (événements) | "Non" | "Quand un {entity} est créé/modifié/supprimé, faut-il notifier un autre module ?" |
| Q5.8 (impact) | "Pas d'impact" | "Deux modules modifient-ils la même entité ? Quel est l'impact sur l'intégration ?" |

### Anti-patterns à détecter

| Signal | Anti-pattern | Action |
|--------|-------------|--------|
| Module totalement isolé | Silo de données | Rare qu'un module métier n'ait aucune connexion. Vérifier avec le codebase context. |
| Duplication d'entité existante | Entité dupliquée | Si `Client` existe déjà, ne pas créer `Customer`. Référencer l'existant. |
| Modification d'entité d'un autre module | Couplage fort | Utiliser des événements (MediatR) plutôt que des modifications directes. |

---

## Mapping vers la consolidation

| Réponse | Alimente |
|---------|----------|
| Q5.1-Q5.4 | `consolidation.crossModuleInteractions[]`, `consolidation.sharedEntities[]` |
| Q5.5-Q5.8 | `consolidation.impactAssessment[]`, `consolidation.permissionCoherence` |
