@atlashub/smartstack-cli 4.29.0 → 4.30.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.
- package/.documentation/business-analyse.html +217 -0
- package/package.json +1 -1
- package/templates/skills/ba-generate-html/html/ba-interactive.html +207 -199
- package/templates/skills/ba-generate-html/html/src/partials/cadrage-context.html +9 -9
- package/templates/skills/ba-generate-html/html/src/partials/cadrage-scope.html +15 -15
- package/templates/skills/ba-generate-html/html/src/partials/cadrage-stakeholders.html +7 -7
- package/templates/skills/ba-generate-html/html/src/partials/cadrage-success.html +13 -13
- package/templates/skills/ba-generate-html/html/src/partials/consol-datamodel.html +4 -4
- package/templates/skills/ba-generate-html/html/src/partials/consol-flows.html +5 -5
- package/templates/skills/ba-generate-html/html/src/partials/consol-interactions.html +2 -2
- package/templates/skills/ba-generate-html/html/src/partials/consol-permissions.html +4 -4
- package/templates/skills/ba-generate-html/html/src/partials/decomp-dependencies.html +11 -11
- package/templates/skills/ba-generate-html/html/src/partials/decomp-modules.html +9 -9
- package/templates/skills/ba-generate-html/html/src/partials/handoff-summary.html +5 -5
- package/templates/skills/ba-generate-html/html/src/scripts/01-data-init.js +10 -2
- package/templates/skills/ba-generate-html/html/src/scripts/02-navigation.js +10 -10
- package/templates/skills/ba-generate-html/html/src/scripts/03-render-cadrage.js +1 -1
- package/templates/skills/ba-generate-html/html/src/scripts/04-render-modules.js +4 -4
- package/templates/skills/ba-generate-html/html/src/scripts/05-render-specs.js +57 -57
- package/templates/skills/ba-generate-html/html/src/scripts/06-render-consolidation.js +4 -4
- package/templates/skills/ba-generate-html/html/src/scripts/06-render-mockups.js +5 -5
- package/templates/skills/ba-generate-html/html/src/scripts/07-render-handoff.js +8 -8
- package/templates/skills/ba-generate-html/html/src/scripts/08-editing.js +3 -3
- package/templates/skills/ba-generate-html/html/src/scripts/09-export.js +2 -2
- package/templates/skills/ba-generate-html/html/src/scripts/10-comments.js +2 -2
- package/templates/skills/ba-generate-html/html/src/scripts/11-review-panel.js +8 -8
- package/templates/skills/ba-generate-html/html/src/styles/03-navigation.css +1 -1
- package/templates/skills/ba-generate-html/html/src/template.html +92 -92
- package/templates/skills/ba-generate-html/steps/step-02-build-data.md +5 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>{{APPLICATION_NAME}} - Analyse
|
|
6
|
+
<title>{{APPLICATION_NAME}} - Analyse métier</title>
|
|
7
7
|
<style>
|
|
8
8
|
<!-- CSS_PLACEHOLDER -->
|
|
9
9
|
</style>
|
|
@@ -15,15 +15,15 @@
|
|
|
15
15
|
============================================ -->
|
|
16
16
|
<header class="header">
|
|
17
17
|
<div class="header-logo">BA</div>
|
|
18
|
-
<span class="header-title">Analyse
|
|
18
|
+
<span class="header-title">Analyse métier</span>
|
|
19
19
|
<div class="header-sep"></div>
|
|
20
20
|
<span class="header-app-name" id="appName">{{APPLICATION_NAME}}</span>
|
|
21
21
|
<div class="header-spacer"></div>
|
|
22
22
|
<div class="header-actions">
|
|
23
|
-
<button class="btn btn-sm" onclick="resetToEmbedded()" title="
|
|
23
|
+
<button class="btn btn-sm" onclick="resetToEmbedded()" title="Réinitialiser depuis les données d'origine (supprime les modifications locales)">Reset</button>
|
|
24
24
|
<button class="btn btn-sm" onclick="saveToLocalStorage()" title="Sauvegarder les modifications dans le navigateur">Sauvegarder</button>
|
|
25
|
-
<button class="btn btn-sm btn-review" onclick="saveReviewJSON()" title="Sauvegarder les corrections pour
|
|
26
|
-
<button class="btn btn-sm btn-primary" onclick="exportJSON()" title="Exporter les
|
|
25
|
+
<button class="btn btn-sm btn-review" onclick="saveReviewJSON()" title="Sauvegarder les corrections pour créer une nouvelle version">Sauvegarder corrections</button>
|
|
26
|
+
<button class="btn btn-sm btn-primary" onclick="exportJSON()" title="Exporter les données au format JSON pour l'extraction">Exporter JSON</button>
|
|
27
27
|
<button class="btn btn-sm review-toggle-btn" id="reviewToggleBtn" onclick="toggleReviewPanel()" title="Ouvrir/fermer le panneau de review">
|
|
28
28
|
Review
|
|
29
29
|
<span class="review-badge hidden" id="reviewBadge">0</span>
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
|
|
34
34
|
<div class="body" id="appBody">
|
|
35
35
|
<!-- ============================================
|
|
36
|
-
SIDEBAR - Navigation
|
|
36
|
+
SIDEBAR - Navigation hiérarchique
|
|
37
37
|
============================================ -->
|
|
38
38
|
<aside class="sidebar">
|
|
39
39
|
<!-- Application Name -->
|
|
@@ -54,15 +54,15 @@
|
|
|
54
54
|
<!-- SECTION: Contexte (merged: problem + current + vision) -->
|
|
55
55
|
<div class="section" id="cadrage-context">
|
|
56
56
|
<h2 class="section-title">Contexte du projet</h2>
|
|
57
|
-
<p class="section-subtitle">Vue
|
|
57
|
+
<p class="section-subtitle">Vue synthétique du besoin : problème, situation actuelle et objectif visé.</p>
|
|
58
58
|
|
|
59
59
|
<div style="display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1.5rem;">
|
|
60
60
|
<div class="card" style="border-left:3px solid #f87171;">
|
|
61
|
-
<div class="card-label" style="color:#f87171;">
|
|
62
|
-
<div class="editable" contenteditable="true" data-field="context.problem" data-placeholder="Quel
|
|
61
|
+
<div class="card-label" style="color:#f87171;">Problème identifié</div>
|
|
62
|
+
<div class="editable" contenteditable="true" data-field="context.problem" data-placeholder="Quel problème ce projet doit-il résoudre ?"></div>
|
|
63
63
|
<div style="margin-top:0.75rem;font-size:0.8rem;color:var(--text-muted);">
|
|
64
|
-
<strong>
|
|
65
|
-
<div class="editable" contenteditable="true" data-field="context.trigger" data-placeholder="
|
|
64
|
+
<strong>Déclencheur :</strong>
|
|
65
|
+
<div class="editable" contenteditable="true" data-field="context.trigger" data-placeholder="Événement déclencheur" style="display:inline;"></div>
|
|
66
66
|
</div>
|
|
67
67
|
</div>
|
|
68
68
|
|
|
@@ -77,10 +77,10 @@
|
|
|
77
77
|
|
|
78
78
|
<div class="card" style="border-left:3px solid #4ade80;">
|
|
79
79
|
<div class="card-label" style="color:#4ade80;">Objectif</div>
|
|
80
|
-
<div class="editable" contenteditable="true" data-field="context.desiredSituation" data-placeholder="Que doit permettre le
|
|
80
|
+
<div class="editable" contenteditable="true" data-field="context.desiredSituation" data-placeholder="Que doit permettre le système cible ?"></div>
|
|
81
81
|
<div style="margin-top:0.75rem;font-size:0.8rem;color:var(--text-muted);">
|
|
82
|
-
<strong>
|
|
83
|
-
<div class="editable" contenteditable="true" data-field="context.acceptanceCriteria" data-placeholder="
|
|
82
|
+
<strong>Critères :</strong>
|
|
83
|
+
<div class="editable" contenteditable="true" data-field="context.acceptanceCriteria" data-placeholder="Critères de succès" style="display:inline;"></div>
|
|
84
84
|
</div>
|
|
85
85
|
</div>
|
|
86
86
|
</div>
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
<!-- SECTION: Parties prenantes -->
|
|
90
90
|
<div class="section" id="cadrage-stakeholders" style="display:none;">
|
|
91
91
|
<h2 class="section-title">Parties prenantes</h2>
|
|
92
|
-
<p class="section-subtitle">Toutes les personnes
|
|
92
|
+
<p class="section-subtitle">Toutes les personnes concernées par ce projet et leurs besoins.</p>
|
|
93
93
|
|
|
94
94
|
<div class="stakeholder-grid" id="stakeholderGrid">
|
|
95
95
|
<!-- Populated dynamically -->
|
|
@@ -108,12 +108,12 @@
|
|
|
108
108
|
<input type="text" class="form-input" id="sh-function" placeholder="Ce qu'il fait dans l'organisation">
|
|
109
109
|
</div>
|
|
110
110
|
<div class="form-group">
|
|
111
|
-
<label class="form-label">
|
|
112
|
-
<textarea class="form-textarea" id="sh-tasks" placeholder="
|
|
111
|
+
<label class="form-label">Tâches principales (une par ligne)</label>
|
|
112
|
+
<textarea class="form-textarea" id="sh-tasks" placeholder="Tâche 1 Tâche 2 Tâche 3"></textarea>
|
|
113
113
|
</div>
|
|
114
114
|
<div class="form-row">
|
|
115
115
|
<div class="form-group">
|
|
116
|
-
<label class="form-label">
|
|
116
|
+
<label class="form-label">Fréquence d'utilisation</label>
|
|
117
117
|
<select class="form-select" id="sh-frequency">
|
|
118
118
|
<option value="daily">Quotidienne</option>
|
|
119
119
|
<option value="weekly">Hebdomadaire</option>
|
|
@@ -122,9 +122,9 @@
|
|
|
122
122
|
</select>
|
|
123
123
|
</div>
|
|
124
124
|
<div class="form-group">
|
|
125
|
-
<label class="form-label">Niveau d'
|
|
125
|
+
<label class="form-label">Niveau d'accès</label>
|
|
126
126
|
<select class="form-select" id="sh-access">
|
|
127
|
-
<option value="admin">Administration
|
|
127
|
+
<option value="admin">Administration complète</option>
|
|
128
128
|
<option value="manager">Supervision et validation</option>
|
|
129
129
|
<option value="contributor">Saisie et modification</option>
|
|
130
130
|
<option value="viewer">Consultation seule</option>
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
</div>
|
|
134
134
|
<div class="form-group">
|
|
135
135
|
<label class="form-label">Frustrations actuelles</label>
|
|
136
|
-
<textarea class="form-textarea" id="sh-frustrations" placeholder="Quelles sont les 2-3 plus grandes frustrations de ce profil avec la
|
|
136
|
+
<textarea class="form-textarea" id="sh-frustrations" placeholder="Quelles sont les 2-3 plus grandes frustrations de ce profil avec la façon de travailler actuelle ?"></textarea>
|
|
137
137
|
</div>
|
|
138
138
|
<div class="form-actions">
|
|
139
139
|
<button class="btn" onclick="toggleForm('addStakeholderForm')">Annuler</button>
|
|
@@ -142,87 +142,87 @@
|
|
|
142
142
|
</div>
|
|
143
143
|
</div>
|
|
144
144
|
|
|
145
|
-
<!-- SECTION:
|
|
145
|
+
<!-- SECTION: Périmètre fonctionnel -->
|
|
146
146
|
<div class="section" id="cadrage-scope" style="display:none;">
|
|
147
|
-
<h2 class="section-title">
|
|
148
|
-
<p class="section-subtitle">Ce que le
|
|
147
|
+
<h2 class="section-title">Périmètre fonctionnel</h2>
|
|
148
|
+
<p class="section-subtitle">Ce que le système doit faire et ne pas faire, par ordre de priorité.</p>
|
|
149
149
|
|
|
150
150
|
<h3 style="color: var(--text-bright); font-size: 1rem; margin-bottom: 0.75rem;">
|
|
151
|
-
<span style="color: #f87171;">■</span>
|
|
151
|
+
<span style="color: #f87171;">■</span> Fonctionnalités indispensables
|
|
152
152
|
</h3>
|
|
153
153
|
<div id="scopeVital" class="uc-list"></div>
|
|
154
|
-
<button class="add-btn" onclick="toggleForm('addScopeForm-vital')">+ Ajouter une
|
|
154
|
+
<button class="add-btn" onclick="toggleForm('addScopeForm-vital')">+ Ajouter une fonctionnalité indispensable</button>
|
|
155
155
|
<div class="inline-form" id="addScopeForm-vital">
|
|
156
|
-
<div class="form-group"><label class="form-label">Nom de la
|
|
156
|
+
<div class="form-group"><label class="form-label">Nom de la fonctionnalité</label><input type="text" class="form-input" id="scope-name-vital" placeholder="Ex: Gestion des commandes"></div>
|
|
157
157
|
<div class="form-group"><label class="form-label">Description (optionnel)</label><input type="text" class="form-input" id="scope-desc-vital" placeholder="Courte description"></div>
|
|
158
158
|
<div class="form-actions"><button class="btn" onclick="toggleForm('addScopeForm-vital')">Annuler</button><button class="btn btn-primary" onclick="addScopeItem('vital')">Ajouter</button></div>
|
|
159
159
|
</div>
|
|
160
160
|
|
|
161
161
|
<h3 style="color: var(--text-bright); font-size: 1rem; margin: 1.5rem 0 0.75rem;">
|
|
162
|
-
<span style="color: #facc15;">■</span>
|
|
162
|
+
<span style="color: #facc15;">■</span> Fonctionnalités importantes
|
|
163
163
|
</h3>
|
|
164
164
|
<div id="scopeImportant" class="uc-list"></div>
|
|
165
|
-
<button class="add-btn" onclick="toggleForm('addScopeForm-important')">+ Ajouter une
|
|
165
|
+
<button class="add-btn" onclick="toggleForm('addScopeForm-important')">+ Ajouter une fonctionnalité importante</button>
|
|
166
166
|
<div class="inline-form" id="addScopeForm-important">
|
|
167
|
-
<div class="form-group"><label class="form-label">Nom de la
|
|
167
|
+
<div class="form-group"><label class="form-label">Nom de la fonctionnalité</label><input type="text" class="form-input" id="scope-name-important" placeholder="Ex: Export PDF"></div>
|
|
168
168
|
<div class="form-group"><label class="form-label">Description (optionnel)</label><input type="text" class="form-input" id="scope-desc-important" placeholder="Courte description"></div>
|
|
169
169
|
<div class="form-actions"><button class="btn" onclick="toggleForm('addScopeForm-important')">Annuler</button><button class="btn btn-primary" onclick="addScopeItem('important')">Ajouter</button></div>
|
|
170
170
|
</div>
|
|
171
171
|
|
|
172
172
|
<h3 style="color: var(--text-bright); font-size: 1rem; margin: 1.5rem 0 0.75rem;">
|
|
173
|
-
<span style="color: #4ade80;">■</span>
|
|
173
|
+
<span style="color: #4ade80;">■</span> Fonctionnalités optionnelles
|
|
174
174
|
</h3>
|
|
175
175
|
<div id="scopeOptional" class="uc-list"></div>
|
|
176
|
-
<button class="add-btn" onclick="toggleForm('addScopeForm-optional')">+ Ajouter une
|
|
176
|
+
<button class="add-btn" onclick="toggleForm('addScopeForm-optional')">+ Ajouter une fonctionnalité optionnelle</button>
|
|
177
177
|
<div class="inline-form" id="addScopeForm-optional">
|
|
178
|
-
<div class="form-group"><label class="form-label">Nom de la
|
|
178
|
+
<div class="form-group"><label class="form-label">Nom de la fonctionnalité</label><input type="text" class="form-input" id="scope-name-optional" placeholder="Ex: Calendrier partagé"></div>
|
|
179
179
|
<div class="form-group"><label class="form-label">Description (optionnel)</label><input type="text" class="form-input" id="scope-desc-optional" placeholder="Courte description"></div>
|
|
180
180
|
<div class="form-actions"><button class="btn" onclick="toggleForm('addScopeForm-optional')">Annuler</button><button class="btn btn-primary" onclick="addScopeItem('optional')">Ajouter</button></div>
|
|
181
181
|
</div>
|
|
182
182
|
|
|
183
183
|
<h3 style="color: var(--text-bright); font-size: 1rem; margin: 1.5rem 0 0.75rem;">
|
|
184
|
-
<span style="color: #94a3b8;">■</span> Hors
|
|
184
|
+
<span style="color: #94a3b8;">■</span> Hors périmètre
|
|
185
185
|
</h3>
|
|
186
186
|
<div id="scopeExcluded" class="uc-list"></div>
|
|
187
187
|
<button class="add-btn" onclick="toggleForm('addScopeForm-excluded')">+ Ajouter une exclusion</button>
|
|
188
188
|
<div class="inline-form" id="addScopeForm-excluded">
|
|
189
|
-
<div class="form-group"><label class="form-label"
|
|
190
|
-
<div class="form-group"><label class="form-label">Raison (optionnel)</label><input type="text" class="form-input" id="scope-desc-excluded" placeholder="Pourquoi hors
|
|
189
|
+
<div class="form-group"><label class="form-label">Élément hors périmètre</label><input type="text" class="form-input" id="scope-name-excluded" placeholder="Ex: Gestion de la paie"></div>
|
|
190
|
+
<div class="form-group"><label class="form-label">Raison (optionnel)</label><input type="text" class="form-input" id="scope-desc-excluded" placeholder="Pourquoi hors périmètre"></div>
|
|
191
191
|
<div class="form-actions"><button class="btn" onclick="toggleForm('addScopeForm-excluded')">Annuler</button><button class="btn btn-primary" onclick="addScopeItem('excluded')">Ajouter</button></div>
|
|
192
192
|
</div>
|
|
193
193
|
</div>
|
|
194
194
|
|
|
195
|
-
<!-- SECTION:
|
|
195
|
+
<!-- SECTION: Critères de réussite -->
|
|
196
196
|
<div class="section" id="cadrage-success" style="display:none;">
|
|
197
|
-
<h2 class="section-title">
|
|
198
|
-
<p class="section-subtitle">Comment mesurer objectivement que le projet est un
|
|
197
|
+
<h2 class="section-title">Critères de réussite</h2>
|
|
198
|
+
<p class="section-subtitle">Comment mesurer objectivement que le projet est un succès.</p>
|
|
199
199
|
|
|
200
200
|
<div class="card">
|
|
201
|
-
<div class="card-label">
|
|
202
|
-
<div class="editable" contenteditable="true" data-field="success.definition" data-placeholder="Comment saurez-vous que le projet est un
|
|
201
|
+
<div class="card-label">Définition du succès</div>
|
|
202
|
+
<div class="editable" contenteditable="true" data-field="success.definition" data-placeholder="Comment saurez-vous que le projet est un succès ? Quel changement concret observerez-vous ?"></div>
|
|
203
203
|
</div>
|
|
204
204
|
|
|
205
205
|
<div class="card" data-vibe-hide>
|
|
206
206
|
<div class="card-label">Objectifs mesurables</div>
|
|
207
|
-
<div class="editable" contenteditable="true" data-field="success.metrics" data-placeholder="Quels chiffres
|
|
207
|
+
<div class="editable" contenteditable="true" data-field="success.metrics" data-placeholder="Quels chiffres présenteriez-vous à votre direction pour prouver le succès ? (temps, erreurs, satisfaction...)"></div>
|
|
208
208
|
</div>
|
|
209
209
|
|
|
210
210
|
<div class="card" data-vibe-hide>
|
|
211
|
-
<div class="card-label">
|
|
212
|
-
<div class="editable" contenteditable="true" data-field="success.timeline" data-placeholder="Au bout de combien de temps pourrez-vous juger si
|
|
211
|
+
<div class="card-label">Délai d'évaluation</div>
|
|
212
|
+
<div class="editable" contenteditable="true" data-field="success.timeline" data-placeholder="Au bout de combien de temps pourrez-vous juger si ça fonctionne ? 1 semaine ? 1 mois ? 3 mois ?"></div>
|
|
213
213
|
</div>
|
|
214
214
|
|
|
215
215
|
<div class="card" data-vibe-hide>
|
|
216
216
|
<div class="card-label">Conditions minimales de mise en service</div>
|
|
217
|
-
<div class="editable" contenteditable="true" data-field="success.minimumConditions" data-placeholder="Quelles conditions minimales pour mettre le
|
|
217
|
+
<div class="editable" contenteditable="true" data-field="success.minimumConditions" data-placeholder="Quelles conditions minimales pour mettre le système en service ? (fonctionnalités présentes, données migrées, formation faite...)"></div>
|
|
218
218
|
</div>
|
|
219
219
|
|
|
220
|
-
<h3 style="color: var(--text-bright); font-size: 1rem; margin: 2rem 0 0.75rem;">
|
|
221
|
-
<p style="font-size:0.85rem;color:var(--text-muted);margin-bottom:1rem;">
|
|
220
|
+
<h3 style="color: var(--text-bright); font-size: 1rem; margin: 2rem 0 0.75rem;">Critères d'acceptation</h3>
|
|
221
|
+
<p style="font-size:0.85rem;color:var(--text-muted);margin-bottom:1rem;">Critères concrets et mesurables pour valider le succès du projet.</p>
|
|
222
222
|
<div id="criteriaList" class="uc-list"></div>
|
|
223
|
-
<button class="add-btn" onclick="toggleForm('addCriterionForm')">+ Ajouter un
|
|
223
|
+
<button class="add-btn" onclick="toggleForm('addCriterionForm')">+ Ajouter un critère d'acceptation</button>
|
|
224
224
|
<div class="inline-form" id="addCriterionForm">
|
|
225
|
-
<div class="form-group"><label class="form-label">
|
|
225
|
+
<div class="form-group"><label class="form-label">Critère (mesurable)</label><input type="text" class="form-input" id="criterion-text" placeholder="Ex: 80% des employés saisissent leurs heures chaque semaine"></div>
|
|
226
226
|
<div class="form-actions"><button class="btn" onclick="toggleForm('addCriterionForm')">Annuler</button><button class="btn btn-primary" onclick="addCriterion()">Ajouter</button></div>
|
|
227
227
|
</div>
|
|
228
228
|
</div>
|
|
@@ -234,7 +234,7 @@
|
|
|
234
234
|
<!-- SECTION: Domaines fonctionnels -->
|
|
235
235
|
<div class="section" id="decomp-modules" style="display:none;">
|
|
236
236
|
<h2 class="section-title">Domaines fonctionnels</h2>
|
|
237
|
-
<p class="section-subtitle">Identifiez les grands domaines de votre application. Chaque domaine regroupe des
|
|
237
|
+
<p class="section-subtitle">Identifiez les grands domaines de votre application. Chaque domaine regroupe des fonctionnalités cohérentes et indépendantes.</p>
|
|
238
238
|
|
|
239
239
|
<div class="module-grid" id="moduleGrid">
|
|
240
240
|
<!-- Populated dynamically -->
|
|
@@ -250,21 +250,21 @@
|
|
|
250
250
|
</div>
|
|
251
251
|
<div class="form-group">
|
|
252
252
|
<label class="form-label">Description en une ou deux phrases</label>
|
|
253
|
-
<textarea class="form-textarea" id="mod-desc" placeholder="
|
|
253
|
+
<textarea class="form-textarea" id="mod-desc" placeholder="À quoi sert ce domaine ? Quel problème résout-il ?"></textarea>
|
|
254
254
|
</div>
|
|
255
255
|
<div class="form-row">
|
|
256
256
|
<div class="form-group">
|
|
257
257
|
<label class="form-label">Type de domaine</label>
|
|
258
258
|
<select class="form-select" id="mod-type">
|
|
259
|
-
<option value="data-centric">Gestion de
|
|
260
|
-
<option value="workflow">Processus
|
|
259
|
+
<option value="data-centric">Gestion de données (listes, fiches, formulaires)</option>
|
|
260
|
+
<option value="workflow">Processus métier (étapes, validations, approbations)</option>
|
|
261
261
|
<option value="reporting">Tableaux de bord et rapports</option>
|
|
262
|
-
<option value="integration">
|
|
263
|
-
<option value="full-module">Domaine complet (
|
|
262
|
+
<option value="integration">Intégration avec des systèmes externes</option>
|
|
263
|
+
<option value="full-module">Domaine complet (données + processus + rapports)</option>
|
|
264
264
|
</select>
|
|
265
265
|
</div>
|
|
266
266
|
<div class="form-group">
|
|
267
|
-
<label class="form-label">
|
|
267
|
+
<label class="form-label">Priorité</label>
|
|
268
268
|
<select class="form-select" id="mod-priority">
|
|
269
269
|
<option value="must">Indispensable</option>
|
|
270
270
|
<option value="should">Important</option>
|
|
@@ -273,7 +273,7 @@
|
|
|
273
273
|
</div>
|
|
274
274
|
</div>
|
|
275
275
|
<div class="form-group">
|
|
276
|
-
<label class="form-label">Principales
|
|
276
|
+
<label class="form-label">Principales données gérées (une par ligne)</label>
|
|
277
277
|
<textarea class="form-textarea" id="mod-entities" placeholder="Commande Ligne de commande Facture"></textarea>
|
|
278
278
|
</div>
|
|
279
279
|
<div class="form-actions">
|
|
@@ -283,41 +283,41 @@
|
|
|
283
283
|
</div>
|
|
284
284
|
</div>
|
|
285
285
|
|
|
286
|
-
<!-- SECTION:
|
|
286
|
+
<!-- SECTION: Dépendances -->
|
|
287
287
|
<div class="section" id="decomp-dependencies" style="display:none;">
|
|
288
|
-
<h2 class="section-title">
|
|
289
|
-
<p class="section-subtitle">Indiquez quels domaines
|
|
288
|
+
<h2 class="section-title">Dépendances entre domaines</h2>
|
|
289
|
+
<p class="section-subtitle">Indiquez quels domaines dépendent d'autres domaines. Par exemple, les Commandes dépendent des Clients et des Produits.</p>
|
|
290
290
|
|
|
291
291
|
<div id="depGraphContainer">
|
|
292
292
|
<div class="dep-graph" id="depGraph">
|
|
293
|
-
<p style="color:var(--text-muted);text-align:center;padding:2rem;">Ajoutez des domaines fonctionnels pour visualiser les
|
|
293
|
+
<p style="color:var(--text-muted);text-align:center;padding:2rem;">Ajoutez des domaines fonctionnels pour visualiser les dépendances.</p>
|
|
294
294
|
</div>
|
|
295
295
|
</div>
|
|
296
296
|
|
|
297
297
|
<div style="margin-top:1.5rem;">
|
|
298
|
-
<h3 style="color:var(--text-bright);font-size:1rem;margin-bottom:0.75rem;">Ajouter une
|
|
298
|
+
<h3 style="color:var(--text-bright);font-size:1rem;margin-bottom:0.75rem;">Ajouter une dépendance</h3>
|
|
299
299
|
<div class="form-row">
|
|
300
300
|
<div class="form-group">
|
|
301
301
|
<label class="form-label">Ce domaine...</label>
|
|
302
302
|
<select class="form-select" id="dep-from"></select>
|
|
303
303
|
</div>
|
|
304
304
|
<div class="form-group">
|
|
305
|
-
<label class="form-label">...
|
|
305
|
+
<label class="form-label">...dépend de</label>
|
|
306
306
|
<select class="form-select" id="dep-to"></select>
|
|
307
307
|
</div>
|
|
308
308
|
</div>
|
|
309
309
|
<div class="form-group">
|
|
310
|
-
<label class="form-label">Nature de la
|
|
311
|
-
<input type="text" class="form-input" id="dep-desc" placeholder="Exemple : La commande
|
|
310
|
+
<label class="form-label">Nature de la dépendance</label>
|
|
311
|
+
<input type="text" class="form-input" id="dep-desc" placeholder="Exemple : La commande référence un client existant">
|
|
312
312
|
</div>
|
|
313
|
-
<button class="btn btn-primary" onclick="addDependency()" style="margin-top:0.5rem;">Ajouter cette
|
|
313
|
+
<button class="btn btn-primary" onclick="addDependency()" style="margin-top:0.5rem;">Ajouter cette dépendance</button>
|
|
314
314
|
</div>
|
|
315
315
|
|
|
316
316
|
<div id="depList" style="margin-top:1.5rem;"></div>
|
|
317
317
|
|
|
318
318
|
<div style="margin-top:2rem;">
|
|
319
|
-
<h3 style="color:var(--text-bright);font-size:1rem;margin-bottom:0.75rem;">Ordre de traitement
|
|
320
|
-
<p class="section-subtitle">Les domaines sont
|
|
319
|
+
<h3 style="color:var(--text-bright);font-size:1rem;margin-bottom:0.75rem;">Ordre de traitement proposé</h3>
|
|
320
|
+
<p class="section-subtitle">Les domaines sont traités dans l'ordre de leurs dépendances : les fondations d'abord, puis les domaines qui en dépendent.</p>
|
|
321
321
|
<div id="processingOrder" class="process-flow"></div>
|
|
322
322
|
</div>
|
|
323
323
|
</div>
|
|
@@ -335,37 +335,37 @@
|
|
|
335
335
|
PHASE 4 : CONSOLIDATION
|
|
336
336
|
================================================================ -->
|
|
337
337
|
|
|
338
|
-
<!-- SECTION:
|
|
338
|
+
<!-- SECTION: Modèle de données -->
|
|
339
339
|
<div class="section" id="consol-datamodel" style="display:none;">
|
|
340
|
-
<h2 class="section-title">
|
|
341
|
-
<p class="section-subtitle">Vue d'ensemble de toutes les
|
|
340
|
+
<h2 class="section-title">Modèle de données</h2>
|
|
341
|
+
<p class="section-subtitle">Vue d'ensemble de toutes les entités métier, leurs attributs et leurs relations entre domaines.</p>
|
|
342
342
|
<div id="dataModelContainer">
|
|
343
|
-
<p style="color:var(--text-muted);text-align:center;padding:2rem;">Le
|
|
343
|
+
<p style="color:var(--text-muted);text-align:center;padding:2rem;">Le modèle de données sera généré à partir des spécifications de chaque domaine.</p>
|
|
344
344
|
</div>
|
|
345
345
|
</div>
|
|
346
346
|
|
|
347
347
|
<!-- SECTION: Interactions cross-module -->
|
|
348
348
|
<div class="section" id="consol-interactions" style="display:none;">
|
|
349
349
|
<h2 class="section-title">Interactions entre domaines</h2>
|
|
350
|
-
<p class="section-subtitle">Vue d'ensemble de la
|
|
350
|
+
<p class="section-subtitle">Vue d'ensemble de la façon dont les domaines communiquent et partagent des données.</p>
|
|
351
351
|
<div id="consolInteractions">
|
|
352
|
-
<p style="color:var(--text-muted);text-align:center;padding:2rem;">Les interactions seront
|
|
352
|
+
<p style="color:var(--text-muted);text-align:center;padding:2rem;">Les interactions seront calculées automatiquement à partir des dépendances et des données partagées entre domaines.</p>
|
|
353
353
|
</div>
|
|
354
354
|
</div>
|
|
355
355
|
|
|
356
|
-
<!-- SECTION:
|
|
356
|
+
<!-- SECTION: Cohérence des accès -->
|
|
357
357
|
<div class="section" id="consol-permissions" style="display:none;">
|
|
358
|
-
<h2 class="section-title">
|
|
359
|
-
<p class="section-subtitle">
|
|
358
|
+
<h2 class="section-title">Cohérence des droits d'accès</h2>
|
|
359
|
+
<p class="section-subtitle">Vérification que les profils utilisateurs ont des droits cohérents dans tous les domaines.</p>
|
|
360
360
|
<div id="consolPermissions">
|
|
361
|
-
<p style="color:var(--text-muted);text-align:center;padding:2rem;">La
|
|
361
|
+
<p style="color:var(--text-muted);text-align:center;padding:2rem;">La cohérence sera vérifiée quand les permissions de chaque domaine seront définies.</p>
|
|
362
362
|
</div>
|
|
363
363
|
</div>
|
|
364
364
|
|
|
365
365
|
<!-- SECTION: Parcours bout en bout -->
|
|
366
366
|
<div class="section" id="consol-flows" style="display:none;">
|
|
367
367
|
<h2 class="section-title">Parcours bout en bout</h2>
|
|
368
|
-
<p class="section-subtitle">Les processus
|
|
368
|
+
<p class="section-subtitle">Les processus métier qui traversent plusieurs domaines, de bout en bout.</p>
|
|
369
369
|
|
|
370
370
|
<div id="e2eFlowsList"></div>
|
|
371
371
|
|
|
@@ -374,16 +374,16 @@
|
|
|
374
374
|
<div class="inline-form" id="addFlowForm">
|
|
375
375
|
<div class="inline-form-title">Nouveau parcours bout en bout</div>
|
|
376
376
|
<div class="form-group">
|
|
377
|
-
<label class="form-label">Nom du parcours (exemple : De la commande
|
|
377
|
+
<label class="form-label">Nom du parcours (exemple : De la commande à la facture)</label>
|
|
378
378
|
<input type="text" class="form-input" id="flow-name" placeholder="Nom descriptif du parcours">
|
|
379
379
|
</div>
|
|
380
380
|
<div class="form-group">
|
|
381
|
-
<label class="form-label"
|
|
382
|
-
<textarea class="form-textarea" id="flow-steps" placeholder="Clients - Le client existe dans le
|
|
381
|
+
<label class="form-label">Étapes du parcours (une par ligne : Domaine - Action)</label>
|
|
382
|
+
<textarea class="form-textarea" id="flow-steps" placeholder="Clients - Le client existe dans le système Commandes - Créer la commande Commandes - Valider la commande Factures - Générer la facture"></textarea>
|
|
383
383
|
</div>
|
|
384
384
|
<div class="form-group">
|
|
385
385
|
<label class="form-label">Qui intervient dans ce parcours ?</label>
|
|
386
|
-
<input type="text" class="form-input" id="flow-actors" placeholder="Exemple : Contributeur (
|
|
386
|
+
<input type="text" class="form-input" id="flow-actors" placeholder="Exemple : Contributeur (création), Responsable (validation)">
|
|
387
387
|
</div>
|
|
388
388
|
<div class="form-actions">
|
|
389
389
|
<button class="btn" onclick="toggleForm('addFlowForm')">Annuler</button>
|
|
@@ -397,8 +397,8 @@
|
|
|
397
397
|
================================================================ -->
|
|
398
398
|
|
|
399
399
|
<div class="section" id="handoff-summary" style="display:none;">
|
|
400
|
-
<h2 class="section-title">
|
|
401
|
-
<p class="section-subtitle">Vue d'ensemble de toute l'analyse
|
|
400
|
+
<h2 class="section-title">Synthèse de l'analyse</h2>
|
|
401
|
+
<p class="section-subtitle">Vue d'ensemble de toute l'analyse métier, prête pour le développement.</p>
|
|
402
402
|
|
|
403
403
|
<div class="stat-grid" id="handoffStats">
|
|
404
404
|
<!-- Populated dynamically -->
|
|
@@ -415,9 +415,9 @@
|
|
|
415
415
|
</div>
|
|
416
416
|
|
|
417
417
|
<div style="margin-top:2rem;padding:1.5rem;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;text-align:center;">
|
|
418
|
-
<p style="color:var(--text-bright);font-size:1.1rem;font-weight:600;margin-bottom:0.5rem;">Analyse
|
|
419
|
-
<p style="color:var(--text-muted);font-size:0.85rem;margin-bottom:1rem;">Exportez le fichier JSON pour lancer la
|
|
420
|
-
<button class="btn btn-primary" onclick="exportJSON()" style="font-size:0.9rem;padding:0.6rem 1.5rem;">Exporter l'analyse
|
|
418
|
+
<p style="color:var(--text-bright);font-size:1.1rem;font-weight:600;margin-bottom:0.5rem;">Analyse prête pour l'extraction</p>
|
|
419
|
+
<p style="color:var(--text-muted);font-size:0.85rem;margin-bottom:1rem;">Exportez le fichier JSON pour lancer la génération automatique du système.</p>
|
|
420
|
+
<button class="btn btn-primary" onclick="exportJSON()" style="font-size:0.9rem;padding:0.6rem 1.5rem;">Exporter l'analyse complète en JSON</button>
|
|
421
421
|
</div>
|
|
422
422
|
</div>
|
|
423
423
|
|
|
@@ -433,8 +433,8 @@
|
|
|
433
433
|
</div>
|
|
434
434
|
<div class="review-filters">
|
|
435
435
|
<button class="review-filter-btn active" onclick="filterReviewComments('all')" data-filter="all">Tous</button>
|
|
436
|
-
<button class="review-filter-btn" onclick="filterReviewComments('to-review')" data-filter="to-review"
|
|
437
|
-
<button class="review-filter-btn" onclick="filterReviewComments('validated')" data-filter="validated">
|
|
436
|
+
<button class="review-filter-btn" onclick="filterReviewComments('to-review')" data-filter="to-review">À revoir</button>
|
|
437
|
+
<button class="review-filter-btn" onclick="filterReviewComments('validated')" data-filter="validated">Validés</button>
|
|
438
438
|
</div>
|
|
439
439
|
<div class="review-comments" id="reviewCommentsList">
|
|
440
440
|
<div class="review-empty">Aucun commentaire pour le moment.</div>
|
|
@@ -446,11 +446,11 @@
|
|
|
446
446
|
</div>
|
|
447
447
|
<div class="review-stat">
|
|
448
448
|
<div class="review-stat-value" id="reviewStatToReview">0</div>
|
|
449
|
-
<div class="review-stat-label"
|
|
449
|
+
<div class="review-stat-label">À revoir</div>
|
|
450
450
|
</div>
|
|
451
451
|
<div class="review-stat">
|
|
452
452
|
<div class="review-stat-value" id="reviewStatValidated">0</div>
|
|
453
|
-
<div class="review-stat-label">
|
|
453
|
+
<div class="review-stat-label">Validés</div>
|
|
454
454
|
</div>
|
|
455
455
|
</div>
|
|
456
456
|
</aside>
|
|
@@ -50,7 +50,11 @@ context: {
|
|
|
50
50
|
stakeholders: master.cadrage.stakeholders.map(s => ({
|
|
51
51
|
role: s.role,
|
|
52
52
|
function: s.function || "",
|
|
53
|
-
tasks: s.tasks
|
|
53
|
+
tasks: Array.isArray(s.tasks)
|
|
54
|
+
? s.tasks
|
|
55
|
+
: typeof s.tasks === 'string'
|
|
56
|
+
? s.tasks.split(',').map(t => t.trim()).filter(Boolean)
|
|
57
|
+
: [],
|
|
54
58
|
frequency: mapFrequency(s.frequency), // "Quotidien"→"daily", "Hebdomadaire"→"weekly", "Mensuel"→"monthly"
|
|
55
59
|
access: mapAccess(s.involvement), // "decision-maker"→"admin", "end-user"→"contributor", "observer"→"viewer"
|
|
56
60
|
frustrations: (s.painPoints || []).join("\n")
|