# Categorie 3 : Donnees et interface

> **Usage :** Definir les entites, les regles de donnees et l'experience utilisateur
> **Quand charger :** Par module, lors de la specification (step-03)
> **Objectif :** Comprendre les donnees manipulees et comment elles sont presentees

---

## 3.1 Entites et attributs

| # | Question | Type de reponse |
|---|----------|-----------------|
| Q3.1 | Quelles sont les entites principales gerees par ce module ? | Liste d'entites |
| Q3.2 | Pour chaque entite : quels sont les attributs importants ? | Par entite |
| Q3.3 | Quelles relations existent entre les entites ? (appartient a, contient, reference) | Schema relationnel |
| Q3.5 | Pour chaque entite : le Code doit-il etre auto-genere ou saisi par l'utilisateur ? | Par entite |
| Q3.6 | Si auto-genere : quelle strategie ? (sequentiel, timestamp, annee, UUID court) | Par entite |

## 3.2 Regles de donnees

| # | Question | Type de reponse |
|---|----------|-----------------|
| Q3.7 | Quelles validations sur les donnees ? (champs obligatoires, formats, plages de valeurs) | Liste de regles |
| Q3.8 | Y a-t-il des regles inter-champs ? (date fin > date debut, montant selon statut) | Liste de contraintes |
| Q3.9 | Donnees sensibles a proteger ? (donnees personnelles, financieres, medicales) | Liste + niveau |

---

## 3.3 Interface et ecrans

| # | Question | Type de reponse |
|---|----------|-----------------|
| Q3.10 | Peripheriques cibles ? (desktop, mobile, tablette) | Liste |
| Q3.11 | Ecrans principaux necessaires pour ce module ? | Liste d'ecrans |
| Q3.12 | Informations cles par ecran ? Quelles colonnes dans la liste, quels champs dans le formulaire ? | Par ecran |
| Q3.13 | Actions possibles par ecran ? (creer, editer, supprimer, valider, exporter, changer statut) | Par ecran |

## 3.4 Tableaux de bord

| # | Question | Type de reponse |
|---|----------|-----------------|
| Q3.14 | Des tableaux de bord ou indicateurs sont-ils requis pour ce module ? | Oui/Non + description |
| Q3.15 | KPIs a afficher ? (nom, metrique, format, seuils d'alerte) | Par dashboard |
| Q3.16 | Types de graphiques souhaites ? (barres, lignes, camembert, cartes KPI) | Par KPI |

---

## Guide d'elicitation approfondi

### Techniques de relance

| Question | Si la reponse est vague | Relance recommandee |
|----------|------------------------|---------------------|
| Q3.1 (entites) | Une seule entite | "Cette entite a-t-elle des sous-elements ? (lignes de detail, pieces jointes, historique)" |
| Q3.1 (entites) | Mention de "User" | "L'utilisateur est gere par la plateforme. Decrivez l'entite METIER (Client, Employee, Contact...)" |
| Q3.2 (attributs) | Champs techniques (ID, CreatedDate) | "Les champs techniques sont auto-geres. Quels sont les attributs METIER ?" |
| Q3.3 (relations) | "1:N" sans detail | "Un {Parent} peut avoir combien de {Children} max ? Un {Child} peut-il exister sans {Parent} ?" |
| Q3.11 (ecrans) | "Un ecran de liste" | "Avec pages dediees pour creation et edition ? Detail en page avec onglets ?" |
| Q3.13 (actions) | "CRUD classique" | "Actions metier specifiques ? (valider, dupliquer, archiver, changer statut, assigner)" |
| Q3.14 (dashboards) | "Juste des chiffres" | "Les tendances ne seraient-elles pas plus lisibles en graphique ?" |

### Anti-patterns a detecter

| Signal | Anti-pattern | Action |
|--------|-------------|--------|
| Entite "User" avec attributs metier | Confusion User/Identity | La plateforme gere les Users via Identity |
| Attributs Id, TenantId, CreatedBy | Champs techniques comme metier | Ces champs sont auto-generes par AuditableEntity |
| "Un seul gros formulaire avec tout" | Formulaire monolithique | Proposer des onglets ou wizard par section logique |
| Actions sans confirmation | Actions destructives non protegees | "La suppression necessite-t-elle une confirmation ?" |

---

## RBAC Exclusion

> Les concepts suivants sont geres par le systeme RBAC de la plateforme et NE DOIVENT PAS etre modelises comme attributs d'entite :

| Concept | Wrong (attribut) | Correct (RBAC) |
|---------|-----------------|----------------|
| Role utilisateur | `User.Role` | Permission set `{app}.{module}.*` |
| Niveau d'acces | `User.AccessLevel` | Permission matrix per role |
| Est admin | `User.IsAdmin` | `{app}.{module}.admin` permission |

---

## Mapping vers le feature

| Reponse | Alimente |
|---------|----------|
| Q3.1-Q3.3, Q3.5-Q3.6 | `entities.json` (entites, attributs, relations, codePattern) |
| Q3.7-Q3.9 | `rules.json` (regles metier de validation et securite) |
| Q3.10-Q3.13 | `screens.json` (sections, resources, colonnes, actions) |
| Q3.14-Q3.16 | `screens.json` (sections dashboard, KPI resources) |
