@atlashub/smartstack-cli 4.18.0 → 4.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/package.json +1 -1
  2. package/templates/agents/ba-reader.md +86 -80
  3. package/templates/agents/ba-writer.md +318 -415
  4. package/templates/agents/docs-context-reader.md +3 -3
  5. package/templates/mcp-scaffolding/frontend/nav-routes.ts.hbs +133 -0
  6. package/templates/mcp-scaffolding/frontend/routes.tsx.hbs +126 -0
  7. package/templates/skills/apex/SKILL.md +29 -16
  8. package/templates/skills/apex/_shared.md +62 -9
  9. package/templates/skills/apex/references/analysis-methods.md +8 -6
  10. package/templates/skills/apex/references/challenge-questions.md +5 -5
  11. package/templates/skills/apex/references/core-seed-data.md +68 -45
  12. package/templates/skills/apex/references/frontend-route-wiring-app-tsx.md +26 -21
  13. package/templates/skills/apex/references/parallel-execution.md +156 -0
  14. package/templates/skills/apex/references/person-extension-pattern.md +12 -12
  15. package/templates/skills/apex/references/post-checks.md +1748 -1726
  16. package/templates/skills/apex/references/smartstack-api.md +63 -57
  17. package/templates/skills/apex/references/smartstack-frontend-compliance.md +594 -0
  18. package/templates/skills/apex/references/smartstack-frontend.md +1246 -1842
  19. package/templates/skills/apex/references/smartstack-layers.md +98 -145
  20. package/templates/skills/apex/steps/step-00-init.md +30 -6
  21. package/templates/skills/apex/steps/step-01-analyze.md +27 -23
  22. package/templates/skills/apex/steps/step-02-plan.md +12 -12
  23. package/templates/skills/apex/steps/step-03-execute.md +198 -143
  24. package/templates/skills/apex/steps/step-04-examine.md +24 -93
  25. package/templates/skills/apex/steps/step-05-deep-review.md +16 -16
  26. package/templates/skills/apex/steps/step-06-resolve.md +9 -9
  27. package/templates/skills/apex/steps/step-07-tests.md +3 -1
  28. package/templates/skills/apex/steps/step-08-run-tests.md +1 -1
  29. package/templates/skills/business-analyse/SKILL.md +182 -301
  30. package/templates/skills/business-analyse/_shared.md +119 -336
  31. package/templates/skills/business-analyse/html/ba-interactive.html +706 -85
  32. package/templates/skills/business-analyse/html/build-html.js +41 -3
  33. package/templates/skills/business-analyse/html/src/partials/cadrage-context.html +34 -0
  34. package/templates/skills/business-analyse/html/src/partials/cadrage-risks.html +48 -0
  35. package/templates/skills/business-analyse/html/src/partials/cadrage-scope.html +49 -0
  36. package/templates/skills/business-analyse/html/src/partials/cadrage-stakeholders.html +55 -0
  37. package/templates/skills/business-analyse/html/src/partials/cadrage-success.html +34 -0
  38. package/templates/skills/business-analyse/html/src/partials/consol-datamodel.html +8 -0
  39. package/templates/skills/business-analyse/html/src/partials/consol-flows.html +29 -0
  40. package/templates/skills/business-analyse/html/src/partials/consol-interactions.html +8 -0
  41. package/templates/skills/business-analyse/html/src/partials/consol-permissions.html +8 -0
  42. package/templates/skills/business-analyse/html/src/partials/decomp-dependencies.html +38 -0
  43. package/templates/skills/business-analyse/html/src/partials/decomp-modules.html +51 -0
  44. package/templates/skills/business-analyse/html/src/partials/handoff-summary.html +24 -0
  45. package/templates/skills/business-analyse/html/src/partials/module-spec-container.html +4 -0
  46. package/templates/skills/business-analyse/html/src/scripts/01-data-init.js +17 -1
  47. package/templates/skills/business-analyse/html/src/scripts/02-navigation.js +32 -6
  48. package/templates/skills/business-analyse/html/src/scripts/05-render-specs.js +100 -63
  49. package/templates/skills/business-analyse/html/src/scripts/06-render-mockups.js +372 -0
  50. package/templates/skills/business-analyse/html/src/scripts/07-render-handoff.js +1 -1
  51. package/templates/skills/business-analyse/html/src/scripts/10-comments.js +41 -13
  52. package/templates/skills/business-analyse/html/src/styles/09-mockups-html.css +136 -0
  53. package/templates/skills/business-analyse/html/src/template.html +1 -1
  54. package/templates/skills/business-analyse/patterns/suggestion-catalog.md +7 -5
  55. package/templates/skills/business-analyse/questionnaire/01-context.md +11 -157
  56. package/templates/skills/business-analyse/questionnaire/02-stakeholders-scope.md +101 -0
  57. package/templates/skills/business-analyse/questionnaire/03-data-ui.md +92 -0
  58. package/templates/skills/business-analyse/questionnaire/04-risks-metrics.md +6 -0
  59. package/templates/skills/business-analyse/questionnaire/05-cross-module.md +69 -0
  60. package/templates/skills/business-analyse/questionnaire.md +22 -280
  61. package/templates/skills/business-analyse/react/application-viewer.md +2 -2
  62. package/templates/skills/business-analyse/react/components.md +4 -4
  63. package/templates/skills/business-analyse/react/i18n-template.md +1 -1
  64. package/templates/skills/business-analyse/react/schema.md +14 -14
  65. package/templates/skills/business-analyse/references/acceptance-criteria.md +21 -21
  66. package/templates/skills/business-analyse/references/analysis-semantic-checks.md +3 -3
  67. package/templates/skills/business-analyse/references/compilation-structure-cards.md +1 -1
  68. package/templates/skills/business-analyse/references/consolidation-structural-checks.md +5 -5
  69. package/templates/skills/business-analyse/references/deploy-data-build.md +12 -11
  70. package/templates/skills/business-analyse/references/deploy-modes.md +10 -10
  71. package/templates/skills/business-analyse/references/detection-strategies.md +6 -6
  72. package/templates/skills/business-analyse/references/html-data-mapping.md +15 -15
  73. package/templates/skills/business-analyse/references/naming-conventions.md +4 -4
  74. package/templates/skills/business-analyse/references/review-data-mapping.md +29 -29
  75. package/templates/skills/business-analyse/references/robustness-checks.md +36 -36
  76. package/templates/skills/business-analyse/references/spec-auto-inference.md +2 -2
  77. package/templates/skills/business-analyse/references/ui-dashboard-spec.md +1 -1
  78. package/templates/skills/business-analyse/references/ui-resource-cards.md +1 -1
  79. package/templates/skills/business-analyse/references/validation-checklist.md +3 -3
  80. package/templates/skills/business-analyse/references/wireframe-svg-style-guide.md +2 -2
  81. package/templates/skills/business-analyse/schemas/application-schema.json +8 -8
  82. package/templates/skills/business-analyse/schemas/feature-schema.json +3 -3
  83. package/templates/skills/business-analyse/schemas/index-schema.json +47 -0
  84. package/templates/skills/business-analyse/schemas/project-schema.json +6 -6
  85. package/templates/skills/business-analyse/schemas/sections/analysis-schema.json +1 -1
  86. package/templates/skills/business-analyse/schemas/sections/handoff-schema.json +5 -3
  87. package/templates/skills/business-analyse/schemas/sections/metadata-schema.json +4 -4
  88. package/templates/skills/business-analyse/schemas/sections/specification-schema.json +1 -1
  89. package/templates/skills/business-analyse/schemas/shared/common-defs.json +4 -4
  90. package/templates/skills/business-analyse/steps/step-00-init.md +68 -77
  91. package/templates/skills/business-analyse/steps/step-01-cadrage.md +50 -216
  92. package/templates/skills/business-analyse/steps/step-02-structure.md +175 -0
  93. package/templates/skills/business-analyse/steps/step-03-specify.md +198 -0
  94. package/templates/skills/business-analyse/steps/step-04-consolidate.md +478 -0
  95. package/templates/skills/business-analyse/steps/step-05-deploy.md +220 -0
  96. package/templates/skills/business-analyse/steps/step-06-review.md +51 -69
  97. package/templates/skills/business-analyse/templates/tpl-frd.md +1 -1
  98. package/templates/skills/business-analyse/templates/tpl-handoff.md +20 -17
  99. package/templates/skills/business-analyse/templates/tpl-launch-displays.md +2 -2
  100. package/templates/skills/business-analyse/templates-react.md +2 -2
  101. package/templates/skills/derive-prd/SKILL.md +92 -0
  102. package/templates/skills/derive-prd/references/acceptance-criteria.md +169 -0
  103. package/templates/skills/derive-prd/references/entity-domain-mapping.md +115 -0
  104. package/templates/skills/{business-analyse → derive-prd}/references/handoff-file-templates.md +131 -120
  105. package/templates/skills/{business-analyse → derive-prd}/references/handoff-mappings.md +95 -95
  106. package/templates/skills/{business-analyse → derive-prd}/references/handoff-seeddata-generation.md +312 -312
  107. package/templates/skills/{business-analyse → derive-prd}/references/prd-generation.md +262 -263
  108. package/templates/skills/derive-prd/references/readiness-scoring.md +104 -0
  109. package/templates/skills/derive-prd/schemas/handoff-schema.json +95 -0
  110. package/templates/skills/derive-prd/steps/step-00-validate.md +130 -0
  111. package/templates/skills/derive-prd/steps/step-01-transform.md +206 -0
  112. package/templates/skills/derive-prd/steps/step-02-export.md +181 -0
  113. package/templates/skills/{business-analyse → derive-prd}/templates/tpl-progress.md +172 -172
  114. package/templates/skills/documentation/SKILL.md +7 -0
  115. package/templates/skills/ralph-loop/SKILL.md +2 -1
  116. package/templates/skills/ralph-loop/references/init-resume-recovery.md +1 -1
  117. package/templates/skills/ralph-loop/steps/step-01-task.md +2 -2
  118. package/templates/skills/apex/references/agent-teams-protocol.md +0 -203
  119. package/templates/skills/business-analyse/_architecture.md +0 -124
  120. package/templates/skills/business-analyse/_elicitation.md +0 -206
  121. package/templates/skills/business-analyse/_module-loop.md +0 -115
  122. package/templates/skills/business-analyse/_rules.md +0 -142
  123. package/templates/skills/business-analyse/_suggestions.md +0 -34
  124. package/templates/skills/business-analyse/questionnaire/00-application.md +0 -160
  125. package/templates/skills/business-analyse/questionnaire/00b-project.md +0 -85
  126. package/templates/skills/business-analyse/questionnaire/02-stakeholders.md +0 -189
  127. package/templates/skills/business-analyse/questionnaire/03-scope.md +0 -164
  128. package/templates/skills/business-analyse/questionnaire/04-data.md +0 -88
  129. package/templates/skills/business-analyse/questionnaire/05-integrations.md +0 -58
  130. package/templates/skills/business-analyse/questionnaire/06-security.md +0 -68
  131. package/templates/skills/business-analyse/questionnaire/07-ui.md +0 -76
  132. package/templates/skills/business-analyse/questionnaire/08-performance.md +0 -42
  133. package/templates/skills/business-analyse/questionnaire/09-constraints.md +0 -45
  134. package/templates/skills/business-analyse/questionnaire/10-documentation.md +0 -58
  135. package/templates/skills/business-analyse/questionnaire/11-data-lifecycle.md +0 -59
  136. package/templates/skills/business-analyse/questionnaire/12-migration.md +0 -58
  137. package/templates/skills/business-analyse/questionnaire/13-cross-module.md +0 -69
  138. package/templates/skills/business-analyse/questionnaire/14-risk-assumptions.md +0 -135
  139. package/templates/skills/business-analyse/questionnaire/15-success-metrics.md +0 -136
  140. package/templates/skills/business-analyse/references/agent-module-prompt.md +0 -366
  141. package/templates/skills/business-analyse/references/agent-pooling-best-practices.md +0 -557
  142. package/templates/skills/business-analyse/references/cache-warming-strategy.md +0 -566
  143. package/templates/skills/business-analyse/references/cadrage-challenge-patterns.md +0 -41
  144. package/templates/skills/business-analyse/references/cadrage-coverage-matrix.md +0 -74
  145. package/templates/skills/business-analyse/references/cadrage-pre-analysis.md +0 -115
  146. package/templates/skills/business-analyse/references/cadrage-shared-modules.md +0 -68
  147. package/templates/skills/business-analyse/references/cadrage-structure-cards.md +0 -85
  148. package/templates/skills/business-analyse/references/team-orchestration.md +0 -1093
  149. package/templates/skills/business-analyse/references/validate-incremental-html.md +0 -121
  150. package/templates/skills/business-analyse/steps/step-01b-applications.md +0 -419
  151. package/templates/skills/business-analyse/steps/step-02-decomposition.md +0 -387
  152. package/templates/skills/business-analyse/steps/step-03a-data.md +0 -16
  153. package/templates/skills/business-analyse/steps/step-03a1-setup.md +0 -486
  154. package/templates/skills/business-analyse/steps/step-03a2-analysis.md +0 -300
  155. package/templates/skills/business-analyse/steps/step-03b-ui.md +0 -405
  156. package/templates/skills/business-analyse/steps/step-03c-compile.md +0 -516
  157. package/templates/skills/business-analyse/steps/step-03d-validate.md +0 -691
  158. package/templates/skills/business-analyse/steps/step-04-consolidation.md +0 -17
  159. package/templates/skills/business-analyse/steps/step-04a-collect.md +0 -415
  160. package/templates/skills/business-analyse/steps/step-04b-analyze.md +0 -163
  161. package/templates/skills/business-analyse/steps/step-04c-decide.md +0 -186
  162. package/templates/skills/business-analyse/steps/step-05a-handoff.md +0 -937
  163. package/templates/skills/business-analyse/steps/step-05b-deploy.md +0 -522
  164. package/templates/skills/business-analyse/steps/step-05c-ralph-readiness.md +0 -703
@@ -1,88 +0,0 @@
1
- # Category 4: Data
2
-
3
- > **Usage:** Definition of entities and data rules
4
- > **When to load:** If feature is data-centric or full module
5
-
6
- ---
7
-
8
- ## 4.1 Entities
9
-
10
- | # | Question | Answer Type |
11
- |---|----------|-------------|
12
- | Q4.1 | What are the main entities handled? | List |
13
- | Q4.2 | For each entity: important attributes? | Per entity |
14
- | Q4.3 | What relationships exist between entities? | Text schema |
15
- | Q4.4 | Expected data volume? | Estimation |
16
- | Q4.4b | For each entity: should the Code be auto-generated or user-provided? | Per entity |
17
- | Q4.4c | If auto-generated: what strategy? (sequential, daily timestamp, yearly, UUID short) | Per entity |
18
- | Q4.4d | What prefix represents this entity? (2-6 lowercase letters, e.g., emp, inv) | Per entity |
19
-
20
- ## 4.2 Data Rules
21
-
22
- | # | Question | Answer Type |
23
- |---|----------|-------------|
24
- | Q4.5 | What validations on data? | List of rules |
25
- | Q4.6 | Which fields are required vs optional? | Per field |
26
- | Q4.7 | What specific formats/constraints? | List |
27
- | Q4.8 | Sensitive data to protect? | List + level |
28
-
29
- ---
30
-
31
- ## Technical Mapping
32
-
33
- | Business Concept | Platform |
34
- |-----------------|------------|
35
- | Main entity | Domain Entity |
36
- | Required attribute | `[Required]` |
37
- | Unique attribute | `HasIndex().IsUnique()` |
38
- | 1:N relationship | Navigation property |
39
- | Sensitive data | Encryption + audit |
40
- | Code auto-generation | `ICodeGenerator<T>.NextCodeAsync()` with retry — see `apex/references/code-generation.md` |
41
- | Code pattern config | `analysis.entities[].codePattern` in feature.json |
42
-
43
- > **⚠️ RBAC EXCLUSION: The following concepts are handled by the platform's RBAC system
44
- > and MUST NOT be modeled as entity attributes or separate entities:**
45
- >
46
- > | Concept | ❌ Wrong (entity attribute) | ✅ Correct (RBAC) |
47
- > |---------|---------------------------|-------------------|
48
- > | User role | `User.Role` property | Permission set `{app}.{module}.*` |
49
- > | Access level | `User.AccessLevel` enum | Permission matrix per role |
50
- > | Is admin | `User.IsAdmin` boolean | `{app}.{module}.admin` permission |
51
- > | Can edit | `User.CanEdit` boolean | `{app}.{module}.update` permission |
52
- >
53
- > When Q4.2 asks for "important attributes", **exclude** any role/permission/access concept.
54
-
55
- ## Elicitation Guide
56
-
57
- ### Follow-ups by Question
58
-
59
- | Question | If answer is vague/insufficient | Probe |
60
- |----------|-------------------------------|-------|
61
- | Q4.1 (entities) | Single entity listed | "Cette entité a-t-elle des sous-éléments ? (lignes de commande, pièces jointes, historique)" |
62
- | Q4.1 (entities) | Mentions "User" as entity | "L'utilisateur est géré par la plateforme (Identity). Décrivez plutôt l'entité MÉTIER (Client, Employee, Contact...)" |
63
- | Q4.2 (attributes) | Liste de champs techniques (ID, CreatedDate) | "Les champs techniques (Id, TenantId, audit) sont auto-gérés. Quels sont les attributs MÉTIER ?" |
64
- | Q4.3 (relationships) | "1:N" without detail | "Un {Parent} peut avoir combien de {Children} max ? Un {Child} peut-il exister sans {Parent} ?" |
65
- | Q4.4 (volume) | "Beaucoup" | "Ordre de grandeur : dizaines, centaines, milliers, millions ? Croissance par mois ?" |
66
- | Q4.4b (code pattern) | "User enters the code" or no answer | "Le code doit-il suivre un format spécifique ? (numéro séquentiel, date, combinaison ?)" |
67
- | Q4.4c (code strategy) | No answer | Propose strategy based on entity type: invoices/orders → timestamp-daily, employees/customers → sequential, references/categories → uuid-short, contracts → year-sequential, tickets → timestamp-minute |
68
- | Q4.4d (code prefix) | Too long or ambiguous | "Le préfixe est limité à 2-6 lettres minuscules. Exemple : 'emp' pour Employee, 'inv' pour Invoice, 'ctr' pour Contract." |
69
- | Q4.5 (validations) | Validations basiques seulement | "Y a-t-il des règles inter-champs ? (date fin > date début, montant selon statut)" |
70
- | Q4.8 (sensitive) | "Non" | "Pas de données personnelles (nom, email, téléphone) ? Pas de données financières ?" |
71
-
72
- ### Anti-patterns to Detect
73
-
74
- | Signal | Anti-pattern | Action |
75
- |--------|-------------|--------|
76
- | Entity "User" avec attributs métier | **Confusion User/Identity** | La plateforme gère les Users via Identity. L'entité métier = Client, Employee, Contact |
77
- | Attributs Id, TenantId, CreatedBy listés | **Champs techniques comme métier** | Ces champs sont auto-générés par `AuditableEntity`. Ne pas les lister. |
78
- | Pas de soft delete mentionné | **Suppression non clarifiée** | "Les données supprimées sont-elles effacées définitivement ou archivées ?" → `SoftDeletableEntity` |
79
- | Aucune contrainte d'unicité | **Unicité non vérifiée** | "Deux entités peuvent-elles avoir le même nom/code/email ?" |
80
-
81
- ### Entity Patterns
82
-
83
- | Besoin métier | Base class plateforme | Inclut automatiquement |
84
- |---------------|----------------------|----------------------|
85
- | Entité simple | `Entity` | Id, TenantId |
86
- | Avec audit | `AuditableEntity` | + CreatedBy, CreatedDate, ModifiedBy, ModifiedDate |
87
- | Avec suppression logique | `SoftDeletableEntity` | + IsDeleted, DeletedBy, DeletedDate |
88
- | Avec hiérarchie | `HierarchicalEntity` | + ParentId, Level, Path |
@@ -1,58 +0,0 @@
1
- # Category 5: Integrations
2
-
3
- > **Usage:** Connections with internal and external systems
4
- > **When to load:** If feature involves integrations
5
-
6
- ---
7
-
8
- ## 5.1 Existing Systems
9
-
10
- | # | Question | Answer Type |
11
- |---|----------|-------------|
12
- | Q5.1 | What internal systems should we integrate with? | List |
13
- | Q5.2 | What external systems? | List |
14
- | Q5.3 | Existing APIs to use? | Documentation |
15
- | Q5.4 | Data to import from another system? | List + format |
16
-
17
- ## 5.2 Data Flows
18
-
19
- | # | Question | Answer Type |
20
- |---|----------|-------------|
21
- | Q5.5 | Flow direction? (inbound/outbound/bidirectional) | Per system |
22
- | Q5.6 | Synchronization frequency? | Real-time/Batch |
23
- | Q5.7 | Data conflict management? | Strategy |
24
- | Q5.8 | Fallback if external system unavailable? | Behavior |
25
-
26
- ---
27
-
28
- ## Integration Patterns
29
-
30
- | Integration Type | Pattern | When to use |
31
- |-----------------|---------|-------------|
32
- | REST API | HttpClient + Polly | Appel synchrone à un service externe avec retry/circuit-breaker |
33
- | Message Queue | MassTransit | Communication asynchrone entre modules/services |
34
- | Webhook | Controller endpoint | Réception d'événements depuis un système externe |
35
- | Real-time | SignalR | Notifications temps réel vers le navigateur |
36
- | Batch import | Background job (Hangfire) | Import/traitement de gros volumes en arrière-plan |
37
- | File storage | Azure Blob / local | Upload/download de documents et pièces jointes |
38
-
39
- ## Elicitation Guide
40
-
41
- ### Follow-ups by Question
42
-
43
- | Question | If answer is vague/insufficient | Probe |
44
- |----------|-------------------------------|-------|
45
- | Q5.1 (internal) | "Aucun" | "Ce module doit-il notifier d'autres modules ? Lire des données d'un autre contexte ?" |
46
- | Q5.2 (external) | "Aucun" | "Pas d'envoi d'emails ? Pas de connexion ERP, CRM, comptabilité ? Pas de SSO externe ?" |
47
- | Q5.3 (APIs) | "Oui il y a une API" | "Avez-vous la documentation (Swagger/OpenAPI) ? Quel format (REST/SOAP/GraphQL) ? Auth (API key, OAuth) ?" |
48
- | Q5.6 (frequency) | "Temps réel" | "Temps réel = chaque seconde (SignalR) ou à chaque modification (event-driven) ? Quelle latence acceptable ?" |
49
- | Q5.7 (conflicts) | "Pas de conflits" | "Si le système externe envoie une donnée qui existe déjà, on écrase, on ignore ou on signale ?" |
50
- | Q5.8 (fallback) | "Ça ne devrait pas arriver" | "Si le service est down 1h, que fait l'utilisateur ? File d'attente, mode dégradé, retry ?" |
51
-
52
- ### Anti-patterns to Detect
53
-
54
- | Signal | Anti-pattern | Action |
55
- |--------|-------------|--------|
56
- | Intégration synchrone pour tout | **Couplage fort** | Si l'autre système peut être lent/down, proposer pattern asynchrone (MassTransit) |
57
- | "On verra plus tard pour l'intégration" | **Intégration non planifiée** | Documenter minimum : système cible, direction du flux, format attendu |
58
- | Pas de stratégie d'erreur | **Pas de résilience** | Toute intégration externe DOIT avoir un fallback (Polly retry + circuit breaker) |
@@ -1,68 +0,0 @@
1
- # Category 6: Security & Permissions
2
-
3
- > **Usage:** Definition of access and restrictions
4
- > **When to load:** ALWAYS (core, minimal)
5
-
6
- ---
7
-
8
- ## 6.1 Access
9
-
10
- | # | Question | Answer Type |
11
- |---|----------|-------------|
12
- | Q6.1 | Who can VIEW data? | List of roles |
13
- | Q6.2 | Who can CREATE entries? | List of roles |
14
- | Q6.3 | Who can MODIFY? | List of roles |
15
- | Q6.4 | Who can DELETE? | List of roles |
16
-
17
- ## 6.2 Restrictions
18
-
19
- | # | Question | Answer Type |
20
- |---|----------|-------------|
21
- | Q6.5 | Geographic restrictions? | Countries/regions |
22
- | Q6.6 | Time-based restrictions? (hours, periods) | Ranges |
23
- | Q6.7 | Audit trail required? Which actions? | List |
24
- | Q6.8 | Regulatory compliance? (GDPR, etc.) | List of standards |
25
-
26
- ---
27
-
28
- ## Platform Permission
29
-
30
- **Format:** `{application}.{module}.{action}`
31
-
32
- | Action | Permission |
33
- |--------|------------|
34
- | Read | `.read` |
35
- | Create | `.create` |
36
- | Update | `.update` |
37
- | Delete | `.delete` |
38
- | Export | `.export` |
39
- | Import | `.import` |
40
- | Admin | `.admin` |
41
-
42
- > **⚠️ RBAC ARCHITECTURE: La plateforme gère les rôles et permissions via son système RBAC intégré (HasData).**
43
- >
44
- > - Les rôles identifiés en Q6.1-Q6.4 sont des **ensembles de permissions**, pas des données métier
45
- > - L'accès est contrôlé par des permissions attribuées aux rôles, pas par des propriétés d'entité
46
- > - Ne jamais proposer de créer une entité `Role`, `UserRole`, ou un attribut `User.Role`
47
- > - Le mapping rôle → permissions se fait dans la **Permission Matrix** (step-03c-compile)
48
-
49
- ## Elicitation Guide
50
-
51
- ### Follow-ups by Question
52
-
53
- | Question | If answer is vague/insufficient | Probe |
54
- |----------|-------------------------------|-------|
55
- | Q6.1-Q6.4 (access) | "Admin peut tout faire" | "Tout = aussi supprimer ? Aussi exporter des données sensibles ? Aussi modifier les données d'un autre tenant ?" |
56
- | Q6.1-Q6.4 (access) | Un seul rôle défini | "Qui ne fait que consulter ? Qui peut modifier mais pas supprimer ? Qui valide les actions critiques ?" |
57
- | Q6.4 (delete) | "Tout le monde peut supprimer" | "Suppression logique ou physique ? Confirmation requise ? Possibilité de restaurer ?" |
58
- | Q6.7 (audit) | "Non" | "Pas besoin de savoir qui a modifié quoi et quand ? Pas de traçabilité réglementaire ?" |
59
- | Q6.8 (compliance) | "Pas concerné" | "Données personnelles (RGPD) ? Données financières (SOX) ? Données de santé (HDS) ?" |
60
-
61
- ### Anti-patterns to Detect
62
-
63
- | Signal | Anti-pattern | Action |
64
- |--------|-------------|--------|
65
- | "Admin = accès total sans restriction" | **Super-admin sans granularité** | Même l'admin devrait avoir des permissions explicites, pas un bypass global |
66
- | Aucune mention de multi-tenant | **Isolation oubliée** | La plateforme est multi-tenant : chaque requête est filtrée par TenantId automatiquement |
67
- | Pas d'audit trail | **Traçabilité absente** | `AuditableEntity` fournit CreatedBy/ModifiedBy. Suffisant ou besoin d'un audit log détaillé ? |
68
- | Permissions uniquement CRUD | **Actions métier non couvertes** | Y a-t-il des actions spécifiques ? (valider, approuver, archiver, publier) → permissions custom |
@@ -1,76 +0,0 @@
1
- # Category 7: User Interface
2
-
3
- > **Usage:** Definition of user experience
4
- > **When to load:** If feature is UI-centric or full module
5
-
6
- ---
7
-
8
- ## 7.1 Experience
9
-
10
- | # | Question | Answer Type |
11
- |---|----------|-------------|
12
- | Q7.1 | Target devices? (desktop, mobile, tablet) | List |
13
- | Q7.2 | Browsers to support? | List + versions |
14
- | Q7.3 | Accessibility required? (WCAG level) | A/AA/AAA |
15
- | Q7.4 | Dark/light mode required? | Yes/No |
16
-
17
- ## 7.2 Screens
18
-
19
- | # | Question | Answer Type |
20
- |---|----------|-------------|
21
- | Q7.5 | Main screens needed? | List |
22
- | Q7.6 | Existing mockups/wireframes? | Documents |
23
- | Q7.7 | Key information per screen? | Per screen |
24
- | Q7.8 | Possible actions per screen? | Per screen |
25
-
26
- ## 7.3 Dashboards & Analytics
27
-
28
- | # | Question | Answer Type |
29
- |---|----------|-------------|
30
- | Q7.9 | Dashboards ou tableaux de bord requis ? | List (noms + descriptions) |
31
- | Q7.10 | KPIs à afficher par dashboard ? | Per dashboard: nom, métrique, format (number/currency/percent), seuils |
32
- | Q7.11 | Types de graphiques souhaités ? | Per KPI: bar, line, pie, area, scatter, kpi-card |
33
- | Q7.12 | Filtres temporels ? | Période par défaut + plages disponibles (jour/semaine/mois/trimestre/année) |
34
-
35
- ---
36
-
37
- ## UI Components
38
-
39
- | Need | Component | Détail |
40
- |------|-----------|--------|
41
- | List with pagination | DataTable | Tri, pagination, sélection, actions inline |
42
- | Creation form | Form page (`/create` route) | Validation FluentValidation, i18n des erreurs |
43
- | Edit form | Form page (`/:id/edit` route) | Pré-remplissage, dirty check, optimistic locking |
44
- | Filters | FilterBar | Filtres combinables, persistance URL params |
45
- | Export | ExportButton | CSV/Excel, respecte les filtres actifs |
46
- | Cards/Grid | CardGrid | Affichage visuel alternatif au tableau |
47
- | Detail view | DetailPanel | Side panel ou page dédiée |
48
- | Status/Workflow | StatusBadge + Timeline | Affichage état + historique transitions |
49
- | Tooltips/Infobulles | Tooltip | Info contextuelle sur champs/actions |
50
- | KPI Card | StatCard | Valeur numérique + tendance + icône |
51
- | Chart (Bar/Line/Pie) | RechartsChart | Graphique interactif via Recharts |
52
- | Dashboard layout | DashboardGrid | Grille responsive de KPI + charts |
53
-
54
- ## Elicitation Guide
55
-
56
- ### Follow-ups by Question
57
-
58
- | Question | If answer is vague/insufficient | Probe |
59
- |----------|-------------------------------|-------|
60
- | Q7.1 (devices) | "Desktop uniquement" | "Aucun accès mobile ? Même pas en consultation ? Tablette en atelier/terrain ?" |
61
- | Q7.5 (screens) | "Un écran de liste" | "Avec pages dédiées pour création et édition ? Détail en page avec onglets ?" |
62
- | Q7.5 (screens) | Pas de mention dashboard | "L'utilisateur a-t-il besoin d'un tableau de bord avec des KPIs avant de plonger dans les données ?" |
63
- | Q7.7 (key info) | "Toutes les colonnes" | "Sur mobile/petit écran, quelles 3-4 colonnes sont indispensables ? Le reste = détail secondaire" |
64
- | Q7.8 (actions) | "CRUD classique" | "Actions métier spécifiques ? (valider, dupliquer, archiver, changer statut, assigner)" |
65
- | Q7.9 (dashboards) | "Juste des chiffres" | "Les tendances/comparaisons ne seraient-elles pas plus lisibles en graphique ? Bar chart pour comparer, line chart pour évoluer ?" |
66
- | Q7.10 (KPIs) | Pas de seuils définis | "À partir de quel seuil un KPI est-il en alerte ? En critique ? (ex: stock < 10 = warning, < 3 = critique)" |
67
-
68
- ### Anti-patterns to Detect
69
-
70
- | Signal | Anti-pattern | Action |
71
- |--------|-------------|--------|
72
- | "Un seul gros formulaire avec tout" | **Formulaire monolithique** | Proposer des étapes/wizard ou des onglets par section logique |
73
- | Aucune mention de feedback utilisateur | **UX silencieuse** | "Quels messages de succès/erreur ? Toast, notification, redirect ?" |
74
- | "Identique à [autre app]" | **Copier sans adapter** | "Quelles différences de contexte ? L'utilisateur fait-il le même parcours ?" |
75
- | Actions sans confirmation | **Actions destructives non protégées** | "La suppression nécessite-t-elle une confirmation ? Un motif ? Une double validation ?" |
76
- | "Juste des chiffres sur la page" | **Dashboard sans visualisation** | "Les tendances/comparaisons ne seraient-elles pas plus lisibles en graphique ? Bar chart pour comparer, line chart pour évoluer ?" |
@@ -1,42 +0,0 @@
1
- # Category 8: Performance & Quality
2
-
3
- > **Usage:** Non-functional performance requirements
4
- > **When to load:** If feature is performance-critical or reporting
5
-
6
- ---
7
-
8
- ## 8.1 Performance & Quality
9
-
10
- | # | Question | Answer Type |
11
- |---|----------|-------------|
12
- | Q8.1 | Acceptable response time? | Milliseconds |
13
- | Q8.2 | Expected load peaks? | When + volume |
14
- | Q8.3 | Specific tests required? | Types |
15
- | Q8.4 | Overall acceptance criteria? | List |
16
-
17
- ---
18
-
19
- ## Platform Thresholds
20
-
21
- | Metric | Acceptable Threshold |
22
- |--------|---------------------|
23
- | API response time | < 200ms (P95) |
24
- | Page load | < 2s |
25
-
26
- ## Elicitation Guide
27
-
28
- ### Follow-ups by Question
29
-
30
- | Question | If answer is vague/insufficient | Probe |
31
- |----------|-------------------------------|-------|
32
- | Q8.1 (response time) | "Rapide" | "< 1 seconde ? < 200ms ? Différence acceptable entre liste et détail ?" |
33
- | Q8.2 (peaks) | "Non" | "Pas de clôture mensuelle ? Pas de période de saisie massive ? Pas d'import batch ?" |
34
- | Q8.3 (tests) | "Tests normaux" | "Tests unitaires ? Intégration ? E2E ? Tests de charge ? Tests de sécurité (OWASP) ?" |
35
- | Q8.4 (acceptance) | Vide | "Quels critères pour que le PO valide la livraison ? Performance, fonctionnel, UX ?" |
36
-
37
- ### Anti-patterns to Detect
38
-
39
- | Signal | Anti-pattern | Action |
40
- |--------|-------------|--------|
41
- | Aucune mention de volume de données | **Scalabilité non planifiée** | "Avec 1M de lignes dans 2 ans, la recherche sera-t-elle toujours performante ?" |
42
- | Pas de tests mentionnés | **Qualité non vérifiable** | Au minimum : tests unitaires services + tests intégration API |
@@ -1,45 +0,0 @@
1
- # Category 9: Constraints
2
-
3
- > **Usage:** Technical and organizational constraints
4
- > **When to load:** If constraints identified or workflow feature
5
-
6
- ---
7
-
8
- ## 9.1 Technical
9
-
10
- | # | Question | Answer Type |
11
- |---|----------|-------------|
12
- | Q9.1 | Mandated tech stack? | Technologies |
13
- | Q9.2 | Infrastructure limitations? | Description |
14
- | Q9.3 | Technology dependencies? | List |
15
- | Q9.4 | Compatibility constraints? | List |
16
-
17
- ---
18
-
19
- ## Platform Constraints
20
-
21
- | Constraint | Impact | Non-négociable |
22
- |-----------|--------|----------------|
23
- | Multi-tenant | TenantId sur toutes les entités, isolation par tenant | Oui |
24
- | .NET 8+ | Version minimum du backend | Oui |
25
- | React 19+ | Version minimum du frontend | Oui |
26
- | SQL Server/PostgreSQL | Bases de données supportées | Oui |
27
- | CQRS | Commands/Queries séparées via MediatR | Oui |
28
- | FluentValidation | Validation côté serveur | Oui |
29
- | i18n (4 langues) | FR, EN, IT, DE obligatoires | Oui |
30
-
31
- ## Elicitation Guide
32
-
33
- ### Follow-ups by Question
34
-
35
- | Question | If answer is vague/insufficient | Probe |
36
- |----------|-------------------------------|-------|
37
- | Q9.1 (tech stack) | Propose une technologie hors plateforme | "La plateforme impose .NET 8 + React 19. Cette contrainte est-elle compatible avec votre besoin ?" |
38
- | Q9.2 (infrastructure) | "Cloud" sans précision | "Azure, AWS, on-premise ? Contraintes de localisation des données (pays) ?" |
39
-
40
- ### Anti-patterns to Detect
41
-
42
- | Signal | Anti-pattern | Action |
43
- |--------|-------------|--------|
44
- | Technologie imposée hors stack | **Incompatibilité plateforme** | Clarifier : est-ce une intégration (OK) ou un remplacement de composant (risqué) ? |
45
- | "Pas de contrainte" | **Contraintes implicites oubliées** | Multi-tenant, RGPD, audit, i18n sont des contraintes de la plateforme obligatoires |
@@ -1,58 +0,0 @@
1
- # Category 10: Documentation & Support
2
-
3
- > **Usage:** Documentation and support needs
4
- > **When to load:** Toujours (chargé en step-01 §4g — every application requires documentation decisions)
5
-
6
- ---
7
-
8
- ## 10.1 Documentation
9
-
10
- | # | Question | Answer Type |
11
- |---|----------|-------------|
12
- | Q10.1 | User documentation needed? (tooltips intégrés, guide pas-à-pas, FAQ, vidéo tutoriel) | Yes/No + format |
13
- | Q10.2 | Technical documentation needed? (API Swagger, ERD schéma données, guide développeur) | Yes/No + type |
14
- | Q10.3 | Who is responsible for maintaining documentation after delivery? | Person/Role |
15
- | Q10.4 | Knowledge base or training planned? (onboarding, wiki, release notes) | Scope + timeline |
16
-
17
- ---
18
-
19
- ## Documentation
20
-
21
- | Type | Generated by | Format |
22
- |------|-------------|--------|
23
- | Documentation module | `/documentation` skill (après `/ralph-loop`) | React page intégrée via doc-data.ts + DocRenderer |
24
- | Swagger API | Automatic (Swashbuckle) | OpenAPI 3.0 |
25
- | User guide | Manual or AI | Markdown / PDF |
26
- | Release notes | `/gitflow finish` | Changelog automatique |
27
- | ERD (schéma données) | `/documentation` skill | Mermaid diagram |
28
-
29
- ## Génération automatique
30
-
31
- | Livrable | Quand | Comment |
32
- |----------|-------|---------|
33
- | Swagger API | Automatique (ASP.NET Core + Swashbuckle) | Disponible à `/swagger` dès le déploiement |
34
- | ERD (schéma données) | Après `/ralph-loop` | Skill `/documentation` type ERD |
35
- | Module documentation | Après `/ralph-loop` | Skill `/documentation` type user-module |
36
- | Release notes | À chaque release | Skill `/gitflow finish` |
37
- | Tooltips in-app (doc-data.ts) | Pendant `/ralph-loop` | Catégorie `documentation` du PRD |
38
-
39
- > **Flux recommandé :** `/business-analyse` capture les besoins → `/ralph-loop` génère les fichiers de base (doc-data.ts) → `/documentation` génère ERD + guides complets → `/gitflow finish` génère release notes.
40
-
41
- ---
42
-
43
- ## Elicitation Guide
44
-
45
- ### Follow-ups by Question
46
-
47
- | Question | If answer is vague/insufficient | Probe |
48
- |----------|-------------------------------|-------|
49
- | Q10.1 (user doc) | "Oui" sans détail | "Guide pas-à-pas ? FAQ ? Vidéo tutoriel ? Tooltips in-app ? Quel public cible ?" |
50
- | Q10.2 (tech doc) | "Non" | "Pas de documentation API ? Pas de schéma de données pour les développeurs futurs ?" |
51
- | Q10.3 (training) | "Pas prévu" | "Comment les utilisateurs apprendront-ils ? Formation, doc, auto-apprentissage ?" |
52
-
53
- ### Anti-patterns to Detect
54
-
55
- | Signal | Anti-pattern | Action |
56
- |--------|-------------|--------|
57
- | "La doc se fera après" | **Documentation en dette** | Le feature.json EST la doc. `/documentation` la génère automatiquement après `/ralph-loop`. |
58
- | "On n'a pas besoin de doc" | **Documentation inexistante** | Même sans guide utilisateur, Swagger + ERD sont générés automatiquement. Le skill `/documentation` ne coûte rien à lancer. |
@@ -1,59 +0,0 @@
1
- # Category 11: Data Lifecycle
2
-
3
- > **Usage:** Lifecycle, retention, archival and compliance for business data
4
- > **When to load:** If feature is data-centric or full module
5
-
6
- ---
7
-
8
- ## 11.1 Data Retention
9
-
10
- | # | Question | Answer Type |
11
- |---|----------|-------------|
12
- | Q11.1 | How long must data be kept active? | Duration |
13
- | Q11.2 | Is there a legal retention period? (GDPR, fiscal, regulatory) | Duration + regulation |
14
- | Q11.3 | What happens after the retention period? | Archive/Purge/Anonymize |
15
- | Q11.4 | Who decides when data is archived or purged? | Role |
16
-
17
- ## 11.2 Data States
18
-
19
- | # | Question | Answer Type |
20
- |---|----------|-------------|
21
- | Q11.5 | What states can a record go through? (draft, active, archived, deleted) | List of states |
22
- | Q11.6 | Can a deleted record be restored? | Yes/No + conditions |
23
- | Q11.7 | Should historical versions be kept? (versioning) | Yes/No + depth |
24
- | Q11.8 | Is there a "freeze" or "lock" state? (immutable after validation) | Yes/No + trigger |
25
-
26
- ---
27
-
28
- ## Lifecycle Patterns
29
-
30
- | Need | Platform Pattern | Impact |
31
- |------|-------------------|--------|
32
- | Soft delete | `SoftDeletableEntity` | IsDeleted, DeletedBy, DeletedDate auto-managed |
33
- | Audit trail | `AuditableEntity` | CreatedBy/Date, ModifiedBy/Date auto-managed |
34
- | Versioning | Custom `EntityVersion` table | Manual implementation per entity |
35
- | Archival | Status enum + background job | Scheduled job moves old records |
36
- | GDPR purge | Anonymization service | Replace personal data with `[REDACTED]` |
37
- | Immutable after state | Validation in Update command | `if (entity.Status == Locked) throw` |
38
-
39
- ## Elicitation Guide
40
-
41
- ### Follow-ups by Question
42
-
43
- | Question | If answer is vague/insufficient | Probe |
44
- |----------|-------------------------------|-------|
45
- | Q11.1 (retention) | "Toujours" | "Pas de limite légale ? Avec 1M de lignes dans 5 ans, les performances resteront-elles acceptables ?" |
46
- | Q11.2 (legal) | "Je ne sais pas" | "Données personnelles = RGPD (effacement après demande). Données fiscales = 10 ans. Données RH = 5 ans après départ." |
47
- | Q11.3 (after retention) | "On supprime" | "Suppression physique ou logique ? Anonymisation des données personnelles ? Export avant suppression ?" |
48
- | Q11.5 (states) | "Actif ou supprimé" | "Pas de brouillon ? Pas de 'en attente de validation' ? Pas d'archivé consultable mais non modifiable ?" |
49
- | Q11.6 (restore) | "Non" | "Si un utilisateur supprime par erreur, aucun recours ? Même pas l'admin ?" |
50
- | Q11.8 (freeze) | "Non" | "Une fois une facture validée, peut-on encore la modifier ? Une commande livrée, peut-on changer son contenu ?" |
51
-
52
- ### Anti-patterns to Detect
53
-
54
- | Signal | Anti-pattern | Action |
55
- |--------|-------------|--------|
56
- | "On garde tout pour toujours" | **Pas de stratégie de rétention** | Volume illimité = performance dégradée. Définir une politique d'archivage. |
57
- | Suppression physique de données personnelles | **Non-conformité RGPD** | RGPD exige la possibilité d'effacer/anonymiser. `SoftDeletableEntity` + anonymisation. |
58
- | Aucun état intermédiaire | **Lifecycle trop simple** | La plupart des entités métier passent par brouillon → actif → archivé minimum. |
59
- | Données modifiables sans limite | **Pas d'immutabilité** | Certains documents (factures, contrats) doivent être figés après validation. |
@@ -1,58 +0,0 @@
1
- # Category 12: Migration & Transition
2
-
3
- > **Usage:** Plan transition from AS-IS to TO-BE, handle existing data
4
- > **When to load:** ALWAYS for new modules (not enhancements)
5
-
6
- ---
7
-
8
- ## 12.1 Existing Data
9
-
10
- | # | Question | Answer Type |
11
- |---|----------|-------------|
12
- | Q12.1 | Is there existing data to migrate? | Yes/No + source |
13
- | Q12.2 | What format is the existing data in? | Excel/CSV/DB/API/Manual |
14
- | Q12.3 | What volume of data to migrate? | Estimation |
15
- | Q12.4 | What data quality issues exist? (duplicates, missing fields, inconsistencies) | List |
16
-
17
- ## 12.2 Transition Plan
18
-
19
- | # | Question | Answer Type |
20
- |---|----------|-------------|
21
- | Q12.5 | Is there a coexistence period? (old + new system in parallel) | Duration |
22
- | Q12.6 | What is the cutover strategy? | Big-bang / Progressive / Parallel |
23
- | Q12.7 | Who validates the migrated data? | Role |
24
- | Q12.8 | What is the rollback plan if migration fails? | Strategy |
25
-
26
- ---
27
-
28
- ## Migration Patterns
29
-
30
- | Need | Pattern | Tool |
31
- |------|---------|------|
32
- | CSV/Excel import | Background job + FluentValidation | Hangfire + custom importer |
33
- | Database migration | EF Core seed / SQL script | `dotnet ef` + seed data |
34
- | API import | HttpClient batch | Background job + Polly |
35
- | Data cleanup | Validation pipeline | FluentValidation + reporting |
36
- | Progressive rollout | Feature flag | LaunchDarkly / custom config |
37
-
38
- ## Elicitation Guide
39
-
40
- ### Follow-ups by Question
41
-
42
- | Question | If answer is vague/insufficient | Probe |
43
- |----------|-------------------------------|-------|
44
- | Q12.1 (existing data) | "Oui" sans détail | "Dans quel outil ? Excel, ERP, autre DB ? Combien de fichiers/tables ? Qui y a accès ?" |
45
- | Q12.2 (format) | "Excel" | "Un seul fichier ou plusieurs ? Avec des onglets ? Des macros ? Des formules ? Quelles colonnes ?" |
46
- | Q12.4 (quality) | "C'est propre" | "Pas de doublons ? Pas de champs vides obligatoires ? Pas de formats incohérents (dates, montants) ?" |
47
- | Q12.5 (coexistence) | "Non" | "Les utilisateurs passent directement au nouveau système ? Pas de période d'apprentissage en parallèle ?" |
48
- | Q12.6 (cutover) | "On verra" | "Big-bang (bascule à date fixe) ou progressif (équipe par équipe) ? Si progressif, quels groupes en premier ?" |
49
- | Q12.8 (rollback) | "Pas prévu" | "Si l'import échoue ou corrompt des données, comment revenir en arrière ? Backup avant migration ?" |
50
-
51
- ### Anti-patterns to Detect
52
-
53
- | Signal | Anti-pattern | Action |
54
- |--------|-------------|--------|
55
- | "On saisira tout à la main" | **Migration non planifiée** | Si > 100 enregistrements, l'import automatisé est indispensable |
56
- | Pas de validation post-migration | **Données non vérifiées** | Prévoir un rapport de migration : importés / rejetés / à corriger |
57
- | Aucun rollback plan | **Risque de perte de données** | Toujours faire un backup avant migration + possibilité de rollback |
58
- | "On migrera plus tard" | **Dette technique** | Si la migration est nécessaire, la planifier dès le départ même si simplifiée |
@@ -1,69 +0,0 @@
1
- # Category 13: Cross-Module Impact
2
-
3
- > **Usage:** Analyze impact on existing modules and shared dependencies
4
- > **When to load:** ALWAYS for new modules (not enhancements)
5
-
6
- ---
7
-
8
- ## 13.1 Existing Module Dependencies
9
-
10
- | # | Question | Answer Type |
11
- |---|----------|-------------|
12
- | Q13.1 | Which existing modules does this new module interact with? | List |
13
- | Q13.2 | What data is shared between modules? (entities, lookup tables) | Per module |
14
- | Q13.3 | Are there existing entities this module will reference? (FK relationships) | List |
15
- | Q13.4 | Will this module produce events that other modules consume? | List of events |
16
-
17
- ## 13.2 Impact Assessment
18
-
19
- | # | Question | Answer Type |
20
- |---|----------|-------------|
21
- | Q13.5 | Will existing modules need modifications to support this new module? | List of changes |
22
- | Q13.6 | Are there shared UI components or navigation changes? | List |
23
- | Q13.7 | Will this module affect existing permissions/roles? | Yes/No + detail |
24
- | Q13.8 | Is there a risk of data model conflicts? (same entity modified by 2 modules) | Risk assessment |
25
-
26
- ---
27
-
28
- ## Cross-Module Patterns
29
-
30
- | Need | Pattern | Example |
31
- |------|---------|---------|
32
- | Reference another entity | Navigation property + FK | `Order.ClientId → Client` |
33
- | Shared lookup data | Shared entity in Domain | `Status`, `Category` entities |
34
- | Event notification | MediatR notification | `OrderCreatedNotification` |
35
- | Cross-module query | Read-only DTO from other module | `IClientQueryService` |
36
- | Navigation link | Menu entry in NavRoute | `business/{app}/{module}` |
37
- | Shared permission | Permission hierarchy | `{app}.*` covers all modules |
38
-
39
- ## Elicitation Guide
40
-
41
- ### Follow-ups by Question
42
-
43
- | Question | If answer is vague/insufficient | Probe |
44
- |----------|-------------------------------|-------|
45
- | Q13.1 (interactions) | "Aucun" | "Ce module est totalement isolé ? Pas de lien avec des clients, produits, utilisateurs d'autres modules ?" |
46
- | Q13.2 (shared data) | "Je ne sais pas" | Use `{codebase_context}` from pre-research: "J'ai trouvé les entités {list} dans {app}. Ce module a-t-il besoin de les référencer ?" |
47
- | Q13.3 (FK references) | Vague | "Une {entity} de ce module appartient-elle à un {existing_entity} ? (ex: OrderLine → Product)" |
48
- | Q13.4 (events) | "Non" | "Quand un {entity} est créé/modifié/supprimé, faut-il notifier un autre module ? Mettre à jour un compteur ?" |
49
- | Q13.5 (modifications) | "Non" | "Pas de nouvelle colonne dans le menu ? Pas de lien depuis une page existante vers ce nouveau module ?" |
50
- | Q13.8 (conflicts) | "Pas de risque" | "Deux modules modifient-ils la même entité ? (ex: module A crée un Client, module B le modifie)" |
51
-
52
- ### Anti-patterns to Detect
53
-
54
- | Signal | Anti-pattern | Action |
55
- |--------|-------------|--------|
56
- | Module totalement isolé | **Silo de données** | Rare qu'un module métier n'ait aucune connexion. Vérifier avec le codebase context. |
57
- | Duplication d'entité existante | **Entité dupliquée** | Si `Client` existe déjà, ne pas créer `Customer`. Référencer l'existant. |
58
- | Modification d'entité d'un autre module | **Couplage fort** | Utiliser des événements (MediatR) plutôt que des modifications directes. |
59
- | Aucune mention de navigation | **Module orphelin dans l'UI** | Le module doit apparaître dans le menu de l'application (NavRoute). |
60
-
61
- ### Using Pre-Research Context
62
-
63
- > **IMPORTANT:** This category benefits most from step 3 (Pre-Research).
64
- >
65
- > Use `{codebase_context}` to:
66
- > - **List existing entities** and ask the user which ones this module references
67
- > - **Show existing modules** and ask about interactions
68
- > - **Detect potential duplicates** (entity names similar to what the user describes)
69
- > - **Propose event patterns** based on existing MediatR notifications