@atlashub/smartstack-cli 4.62.0 → 4.63.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/dist/index.js +134 -4
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/skills/business-analyse-html/html/ba-interactive.html +217 -39
- package/templates/skills/business-analyse-html/html/src/scripts/05-render-specs.js +1 -5
- package/templates/skills/business-analyse-html/html/src/scripts/06-render-mockups.js +132 -25
- package/templates/skills/business-analyse-html/html/src/styles/06-wireframes.css +0 -9
- package/templates/skills/business-analyse-html/html/src/styles/09-mockups-html.css +84 -0
- package/templates/skills/business-analyse-html/references/data-build.md +3 -1
- package/templates/skills/business-analyse-html/steps/step-01-collect.md +2 -1
- package/templates/skills/business-analyse-html/steps/step-02-build-data.md +33 -0
|
@@ -40,7 +40,9 @@ const FEATURE_DATA = {
|
|
|
40
40
|
frequency: s.frequency || "",
|
|
41
41
|
access: s.involvement || "",
|
|
42
42
|
frustrations: (s.painPoints || []).join("\n")
|
|
43
|
-
}))
|
|
43
|
+
})),
|
|
44
|
+
// CRITERIA: acceptance criteria (fallback: validation.json if cadrage is empty)
|
|
45
|
+
criteria: [/* { text, validated, module?, type? } — see step-02-build-data.md */]
|
|
44
46
|
},
|
|
45
47
|
modules: [
|
|
46
48
|
// FOR EACH module in master.modules[]:
|
|
@@ -64,7 +64,8 @@ ELSE:
|
|
|
64
64
|
collected_data = {
|
|
65
65
|
master: {
|
|
66
66
|
index: READ(index.json), // metadata, modules[], consolidation, handoff
|
|
67
|
-
cadrage: READ(cadrage.json)
|
|
67
|
+
cadrage: READ(cadrage.json), // context, stakeholders, scope
|
|
68
|
+
validation: READ(validation.json) || null // acceptance criteria (fallback for cadrage.criteria)
|
|
68
69
|
},
|
|
69
70
|
modules: {}
|
|
70
71
|
}
|
|
@@ -80,6 +80,27 @@ scope: {
|
|
|
80
80
|
|
|
81
81
|
> Safety net: also check `master.cadrage.coverageMatrix` as alternative source for scope items.
|
|
82
82
|
|
|
83
|
+
**cadrage.criteria** (acceptance criteria with validation.json fallback):
|
|
84
|
+
```javascript
|
|
85
|
+
// Build structured criteria for the checklist UI
|
|
86
|
+
let criteria = (master.cadrage.acceptanceCriteria || []).map(ac => ({
|
|
87
|
+
text: ac.criterion || ac.text || "",
|
|
88
|
+
validated: false
|
|
89
|
+
}));
|
|
90
|
+
|
|
91
|
+
// FALLBACK: if cadrage has no criteria, use validation.json acceptance criteria
|
|
92
|
+
if (criteria.length === 0 && collected_data.master.validation) {
|
|
93
|
+
const valAC = collected_data.master.validation.acceptanceCriteria || [];
|
|
94
|
+
criteria = valAC.map(ac => ({
|
|
95
|
+
text: (ac.module ? '[' + ac.module + '] ' : '') + (ac.criteria || ac.criterion || ac.text || ""),
|
|
96
|
+
validated: false,
|
|
97
|
+
module: ac.module || null,
|
|
98
|
+
type: ac.type || null
|
|
99
|
+
}));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
cadrage.criteria = criteria;
|
|
103
|
+
```
|
|
83
104
|
|
|
84
105
|
**modules[]:**
|
|
85
106
|
```javascript
|
|
@@ -192,6 +213,15 @@ function normalizeAction(a) {
|
|
|
192
213
|
return a.code || a.id || a.label || a.actionCode || "";
|
|
193
214
|
}
|
|
194
215
|
|
|
216
|
+
// Helper: normalize a chart definition
|
|
217
|
+
function normalizeChart(c) {
|
|
218
|
+
if (typeof c === 'string') return { type: 'bar', label: c };
|
|
219
|
+
return {
|
|
220
|
+
type: c.type || c.chartType || 'bar',
|
|
221
|
+
label: c.label || c.displayName || c.title || 'Graphique'
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
|
|
195
225
|
// Helper: normalize a KPI — replace formula values with sample display values
|
|
196
226
|
function normalizeKpi(k) {
|
|
197
227
|
if (typeof k !== 'object') return { label: String(k), value: "0" };
|
|
@@ -238,6 +268,7 @@ if (flatScr.length > 0) {
|
|
|
238
268
|
})),
|
|
239
269
|
actions: (s.actions || []).map(normalizeAction),
|
|
240
270
|
kpis: (s.kpis || []).map(normalizeKpi),
|
|
271
|
+
charts: (s.charts || []).map(normalizeChart),
|
|
241
272
|
options: s.options || [],
|
|
242
273
|
permission: s.permission || "",
|
|
243
274
|
notes: s.description || s.sectionDescription || ""
|
|
@@ -267,6 +298,7 @@ if (flatScr.length > 0) {
|
|
|
267
298
|
})),
|
|
268
299
|
actions: (res.actions || []).map(normalizeAction),
|
|
269
300
|
kpis: (res.kpis || []).map(normalizeKpi),
|
|
301
|
+
charts: (res.charts || []).map(normalizeChart),
|
|
270
302
|
options: res.options || [],
|
|
271
303
|
permission: res.permission || "",
|
|
272
304
|
notes: res.notes || res.description || ""
|
|
@@ -297,6 +329,7 @@ if (flatScr.length > 0) {
|
|
|
297
329
|
})),
|
|
298
330
|
actions: (sec.actions || []).map(normalizeAction),
|
|
299
331
|
kpis: (sec.kpis || []).map(normalizeKpi),
|
|
332
|
+
charts: (sec.charts || []).map(normalizeChart),
|
|
300
333
|
options: sec.options || [],
|
|
301
334
|
permission: (typeof sec.permissions === 'object' ? sec.permissions?.view : sec.permission) || "",
|
|
302
335
|
notes: sec.description || ""
|