@atlashub/smartstack-cli 3.37.0 → 3.39.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 +16 -24
- package/dist/index.js.map +1 -1
- package/dist/mcp-entry.mjs +235 -265
- package/dist/mcp-entry.mjs.map +1 -1
- package/package.json +1 -1
- package/scripts/extract-api-endpoints.ts +5 -5
- package/scripts/generate-doc-with-mock-ui.ts +10 -17
- package/templates/agents/ba-reader.md +9 -9
- package/templates/agents/ba-writer.md +12 -15
- package/templates/agents/code-reviewer.md +1 -1
- package/templates/agents/docs-context-reader.md +1 -1
- package/templates/agents/efcore/scan.md +3 -1
- package/templates/agents/gitflow/commit.md +74 -0
- package/templates/agents/gitflow/finish.md +5 -2
- package/templates/agents/gitflow/init-clone.md +3 -3
- package/templates/agents/gitflow/init-validate.md +3 -2
- package/templates/agents/gitflow/merge.md +5 -4
- package/templates/agents/gitflow/pr.md +5 -4
- package/templates/agents/gitflow/start.md +37 -5
- package/templates/hooks/hooks.json +11 -0
- package/templates/hooks/wsl-dotnet-cleanup.sh +24 -0
- package/templates/mcp-scaffolding/frontend/nav-routes.ts.hbs +20 -20
- package/templates/mcp-scaffolding/frontend/routes.tsx.hbs +16 -24
- package/templates/mcp-scaffolding/migrations/seed-roles.cs.hbs +2 -2
- package/templates/skills/_resources/mcp-validate-documentation-spec.md +3 -3
- package/templates/skills/_shared.md +15 -17
- package/templates/skills/ai-prompt/SKILL.md +1 -1
- package/templates/skills/ai-prompt/steps/step-00-init.md +47 -0
- package/templates/skills/apex/SKILL.md +3 -4
- package/templates/skills/apex/_shared.md +10 -20
- package/templates/skills/apex/references/analysis-methods.md +141 -0
- package/templates/skills/apex/references/challenge-questions.md +1 -21
- package/templates/skills/apex/references/core-seed-data.md +35 -58
- package/templates/skills/apex/references/examine-build-validation.md +82 -0
- package/templates/skills/apex/references/execution-frontend-gates.md +177 -0
- package/templates/skills/apex/references/execution-frontend-patterns.md +105 -0
- package/templates/skills/apex/references/execution-layer1-rules.md +96 -0
- package/templates/skills/apex/references/initialization-challenge-flow.md +110 -0
- package/templates/skills/apex/references/planning-layer-mapping.md +151 -0
- package/templates/skills/apex/references/post-checks.md +145 -40
- package/templates/skills/apex/references/smartstack-api.md +35 -51
- package/templates/skills/apex/references/smartstack-frontend.md +18 -18
- package/templates/skills/apex/references/smartstack-layers.md +38 -62
- package/templates/skills/apex/steps/step-00-init.md +14 -26
- package/templates/skills/apex/steps/step-01-analyze.md +10 -143
- package/templates/skills/apex/steps/step-02-plan.md +10 -92
- package/templates/skills/apex/steps/step-03-execute.md +45 -252
- package/templates/skills/apex/steps/step-04-examine.md +14 -78
- package/templates/skills/apex/steps/step-05-deep-review.md +2 -2
- package/templates/skills/apex/steps/step-08-run-tests.md +1 -0
- package/templates/skills/application/SKILL.md +241 -242
- package/templates/skills/application/references/backend-controller-hierarchy.md +16 -16
- package/templates/skills/application/references/backend-seeding-and-dto-output.md +83 -0
- package/templates/skills/application/references/backend-table-prefix-mapping.md +79 -0
- package/templates/skills/application/references/backend-verification.md +1 -1
- package/templates/skills/application/references/frontend-i18n-and-output.md +67 -0
- package/templates/skills/application/references/frontend-route-naming.md +117 -0
- package/templates/skills/application/references/frontend-route-wiring-app-tsx.md +107 -0
- package/templates/skills/application/references/frontend-verification.md +12 -12
- package/templates/skills/application/references/init-parameter-detection.md +121 -0
- package/templates/skills/application/references/migration-checklist-troubleshooting.md +100 -0
- package/templates/skills/application/references/nav-fallback-procedure.md +199 -200
- package/templates/skills/application/references/provider-template.md +2 -6
- package/templates/skills/application/references/roles-client-project-handling.md +55 -0
- package/templates/skills/application/references/roles-fallback-procedure.md +149 -0
- package/templates/skills/application/references/test-coverage-requirements.md +213 -0
- package/templates/skills/application/references/test-frontend.md +3 -3
- package/templates/skills/application/steps/step-00-init.md +130 -260
- package/templates/skills/application/steps/step-01-navigation.md +170 -170
- package/templates/skills/application/steps/step-02-permissions.md +196 -196
- package/templates/skills/application/steps/step-03-roles.md +182 -339
- package/templates/skills/application/steps/step-03b-provider.md +133 -134
- package/templates/skills/application/steps/step-04-backend.md +174 -265
- package/templates/skills/application/steps/step-05-frontend.md +18 -144
- package/templates/skills/application/steps/step-06-migration.md +12 -60
- package/templates/skills/application/steps/step-07-tests.md +9 -76
- package/templates/skills/application/templates-backend.md +29 -27
- package/templates/skills/application/templates-frontend.md +49 -49
- package/templates/skills/application/templates-seed.md +57 -131
- package/templates/skills/business-analyse/SKILL.md +27 -30
- package/templates/skills/business-analyse/_architecture.md +6 -6
- package/templates/skills/business-analyse/_shared.md +60 -88
- package/templates/skills/business-analyse/questionnaire/04-data.md +3 -3
- package/templates/skills/business-analyse/questionnaire/06-security.md +1 -1
- package/templates/skills/business-analyse/questionnaire/13-cross-module.md +1 -1
- package/templates/skills/business-analyse/react/application-viewer.md +12 -12
- package/templates/skills/business-analyse/react/components.md +8 -12
- package/templates/skills/business-analyse/react/schema.md +836 -836
- package/templates/skills/business-analyse/references/agent-module-prompt.md +2 -3
- package/templates/skills/business-analyse/references/analysis-semantic-checks.md +190 -0
- package/templates/skills/business-analyse/references/cache-warming-strategy.md +2 -2
- package/templates/skills/business-analyse/references/cadrage-challenge-patterns.md +41 -0
- package/templates/skills/business-analyse/references/cadrage-coverage-matrix.md +74 -0
- package/templates/skills/business-analyse/references/cadrage-shared-modules.md +69 -0
- package/templates/skills/business-analyse/references/cadrage-structure-cards.md +1 -1
- package/templates/skills/business-analyse/references/compilation-structure-cards.md +297 -0
- package/templates/skills/business-analyse/references/consolidation-structural-checks.md +2 -2
- package/templates/skills/business-analyse/references/deploy-modes.md +5 -5
- package/templates/skills/business-analyse/references/detection-strategies.md +7 -7
- package/templates/skills/business-analyse/references/handoff-file-templates.md +14 -22
- package/templates/skills/business-analyse/references/handoff-mappings.md +4 -4
- package/templates/skills/business-analyse/references/handoff-seeddata-generation.md +312 -0
- package/templates/skills/business-analyse/references/init-schema-deployment.md +3 -3
- package/templates/skills/business-analyse/references/naming-conventions.md +22 -24
- package/templates/skills/business-analyse/references/prd-generation.md +2 -2
- package/templates/skills/business-analyse/references/review-data-mapping.md +2 -2
- package/templates/skills/business-analyse/references/robustness-checks.md +1 -1
- package/templates/skills/business-analyse/references/spec-auto-inference.md +3 -3
- package/templates/skills/business-analyse/references/team-orchestration.md +49 -6
- package/templates/skills/business-analyse/references/ui-dashboard-spec.md +1 -1
- package/templates/skills/business-analyse/references/ui-resource-cards.md +18 -18
- package/templates/skills/business-analyse/references/validate-incremental-html.md +2 -2
- package/templates/skills/business-analyse/references/validation-checklist.md +2 -2
- package/templates/skills/business-analyse/schemas/application-schema.json +4 -5
- package/templates/skills/business-analyse/schemas/project-schema.json +1 -6
- package/templates/skills/business-analyse/schemas/sections/metadata-schema.json +2 -3
- package/templates/skills/business-analyse/schemas/sections/specification-schema.json +4 -4
- package/templates/skills/business-analyse/steps/step-00-init.md +8 -17
- package/templates/skills/business-analyse/steps/step-01-cadrage.md +35 -198
- package/templates/skills/business-analyse/steps/step-01b-applications.md +16 -20
- package/templates/skills/business-analyse/steps/step-02-decomposition.md +1 -1
- package/templates/skills/business-analyse/steps/step-03a1-setup.md +4 -4
- package/templates/skills/business-analyse/steps/step-03a2-analysis.md +1 -1
- package/templates/skills/business-analyse/steps/step-03b-ui.md +4 -4
- package/templates/skills/business-analyse/steps/step-03c-compile.md +66 -140
- package/templates/skills/business-analyse/steps/step-03d-validate.md +2 -2
- package/templates/skills/business-analyse/steps/step-04a-collect.md +2 -2
- package/templates/skills/business-analyse/steps/step-04b-analyze.md +42 -160
- package/templates/skills/business-analyse/steps/step-04c-decide.md +1 -1
- package/templates/skills/business-analyse/steps/step-05a-handoff.md +74 -104
- package/templates/skills/business-analyse/steps/step-05b-deploy.md +13 -11
- package/templates/skills/business-analyse/steps/step-06-review.md +3 -3
- package/templates/skills/business-analyse/templates/tpl-frd.md +13 -13
- package/templates/skills/business-analyse/templates/tpl-handoff.md +12 -12
- package/templates/skills/business-analyse/templates/tpl-progress.md +1 -1
- package/templates/skills/business-analyse/templates-frd.md +25 -25
- package/templates/skills/business-analyse/templates-react.md +15 -21
- package/templates/skills/controller/SKILL.md +1 -1
- package/templates/skills/controller/postman-templates.md +1 -1
- package/templates/skills/controller/references/controller-code-templates.md +2 -2
- package/templates/skills/controller/references/mcp-scaffold-workflow.md +209 -0
- package/templates/skills/controller/references/permission-sync-templates.md +13 -16
- package/templates/skills/controller/steps/step-00-init.md +11 -11
- package/templates/skills/controller/steps/step-03-generate.md +64 -103
- package/templates/skills/controller/templates.md +67 -71
- package/templates/skills/debug/SKILL.md +13 -218
- package/templates/skills/debug/steps/step-00-init.md +57 -0
- package/templates/skills/debug/steps/step-01-analyze.md +219 -0
- package/templates/skills/debug/steps/step-02-resolve.md +85 -0
- package/templates/skills/documentation/SKILL.md +49 -345
- package/templates/skills/documentation/data-schema.md +11 -8
- package/templates/skills/documentation/steps/step-00-init.md +70 -0
- package/templates/skills/documentation/steps/step-01-scan.md +113 -0
- package/templates/skills/documentation/steps/step-02-generate.md +231 -0
- package/templates/skills/documentation/steps/step-03-validate.md +238 -0
- package/templates/skills/documentation/templates.md +480 -322
- package/templates/skills/efcore/SKILL.md +1 -1
- package/templates/skills/efcore/references/both-contexts.md +32 -0
- package/templates/skills/efcore/references/database-operations.md +67 -0
- package/templates/skills/efcore/references/destructive-operations.md +38 -0
- package/templates/skills/efcore/references/reset-operations.md +81 -0
- package/templates/skills/efcore/references/seed-methods.md +86 -0
- package/templates/skills/efcore/references/shared-init-functions.md +250 -0
- package/templates/skills/efcore/references/sql-objects-injection.md +61 -0
- package/templates/skills/efcore/references/troubleshooting.md +81 -0
- package/templates/skills/efcore/steps/db/step-deploy.md +1 -32
- package/templates/skills/efcore/steps/db/step-reset.md +7 -103
- package/templates/skills/efcore/steps/db/step-seed.md +10 -132
- package/templates/skills/efcore/steps/db/step-status.md +5 -44
- package/templates/skills/efcore/steps/migration/step-02-create.md +1 -14
- package/templates/skills/efcore/steps/migration/step-03-validate.md +8 -62
- package/templates/skills/efcore/steps/rebase-snapshot/step-03-create.md +1 -57
- package/templates/skills/efcore/steps/shared/step-00-init.md +11 -254
- package/templates/skills/efcore/steps/squash/step-03-create.md +1 -58
- package/templates/skills/feature-full/SKILL.md +1 -1
- package/templates/skills/feature-full/steps/step-00-init.md +57 -0
- package/templates/skills/feature-full/steps/step-01-implementation.md +1 -1
- package/templates/skills/gitflow/SKILL.md +28 -5
- package/templates/skills/gitflow/_shared.md +109 -12
- package/templates/skills/gitflow/phases/abort.md +4 -0
- package/templates/skills/gitflow/phases/cleanup.md +4 -0
- package/templates/skills/gitflow/references/commit-message-generation.md +58 -0
- package/templates/skills/gitflow/references/commit-migration-validation.md +49 -0
- package/templates/skills/gitflow/references/finish-cleanup.md +55 -0
- package/templates/skills/gitflow/references/finish-version-bumping.md +45 -0
- package/templates/skills/gitflow/references/init-environment-detection.md +41 -0
- package/templates/skills/gitflow/references/init-questions.md +185 -0
- package/templates/skills/gitflow/references/init-structure-creation.md +75 -0
- package/templates/skills/gitflow/references/init-version-detection.md +21 -0
- package/templates/skills/gitflow/references/init-workspace-detection.md +43 -0
- package/templates/skills/gitflow/references/merge-ci-status.md +36 -0
- package/templates/skills/gitflow/references/merge-execution.md +62 -0
- package/templates/skills/gitflow/references/merge-pr-context.md +76 -0
- package/templates/skills/gitflow/references/pr-build-checks.md +60 -0
- package/templates/skills/gitflow/references/pr-generation.md +58 -0
- package/templates/skills/gitflow/references/start-branch-normalization.md +28 -0
- package/templates/skills/gitflow/references/start-worktree-creation.md +50 -0
- package/templates/skills/gitflow/references/sync-push-verify.md +44 -0
- package/templates/skills/gitflow/references/sync-rebase-conflicts.md +38 -0
- package/templates/skills/gitflow/steps/step-commit.md +12 -91
- package/templates/skills/gitflow/steps/step-finish.md +15 -159
- package/templates/skills/gitflow/steps/step-init.md +24 -326
- package/templates/skills/gitflow/steps/step-merge.md +17 -176
- package/templates/skills/gitflow/steps/step-pr.md +10 -116
- package/templates/skills/gitflow/steps/step-start.md +16 -109
- package/templates/skills/gitflow/steps/step-sync.md +6 -69
- package/templates/skills/ralph-loop/SKILL.md +6 -0
- package/templates/skills/ralph-loop/references/category-completeness.md +185 -0
- package/templates/skills/ralph-loop/references/compact-loop.md +1 -1
- package/templates/skills/ralph-loop/references/init-resume-recovery.md +127 -0
- package/templates/skills/ralph-loop/references/module-transition.md +151 -0
- package/templates/skills/ralph-loop/references/multi-module-queue.md +171 -0
- package/templates/skills/ralph-loop/references/parallel-execution.md +246 -0
- package/templates/skills/ralph-loop/references/task-transform-legacy.md +6 -9
- package/templates/skills/ralph-loop/references/team-orchestration.md +45 -3
- package/templates/skills/ralph-loop/steps/step-00-init.md +36 -109
- package/templates/skills/ralph-loop/steps/step-01-task.md +15 -163
- package/templates/skills/ralph-loop/steps/step-02-execute.md +8 -154
- package/templates/skills/ralph-loop/steps/step-04-check.md +20 -73
- package/templates/skills/review-code/references/owasp-api-top10.md +5 -5
- package/templates/skills/review-code/references/smartstack-conventions.md +568 -568
- package/templates/skills/validate-feature/references/api-smoke-tests.md +140 -0
- package/templates/skills/validate-feature/references/db-validation-checks.md +180 -0
- package/templates/skills/validate-feature/steps/step-01-compile.md +1 -3
- package/templates/skills/validate-feature/steps/step-04-api-smoke.md +34 -145
- package/templates/skills/validate-feature/steps/step-05-db-validation.md +74 -260
- package/templates/skills/workflow/SKILL.md +1 -1
- package/templates/skills/workflow/steps/step-00-init.md +57 -0
|
@@ -22,69 +22,6 @@ private static Guid GenerateGuid(int index)
|
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
25
|
-
## TEMPLATE: CONTEXT
|
|
26
|
-
|
|
27
|
-
### Navigation Entity
|
|
28
|
-
|
|
29
|
-
```csharp
|
|
30
|
-
// In NavigationContextConfiguration.cs - HasData()
|
|
31
|
-
new {
|
|
32
|
-
Id = Guid.Parse("$CONTEXT_GUID"),
|
|
33
|
-
Code = "$CODE", // e.g.: "erp"
|
|
34
|
-
Label = "$LABEL_EN", // e.g.: "ERP"
|
|
35
|
-
Description = "$DESC_EN", // e.g.: "Enterprise management"
|
|
36
|
-
Icon = "$ICON", // e.g.: "Building2"
|
|
37
|
-
IconType = IconType.Lucide,
|
|
38
|
-
Route = "/$CODE", // e.g.: "/erp"
|
|
39
|
-
DisplayOrder = $ORDER, // e.g.: 4
|
|
40
|
-
IsActive = true,
|
|
41
|
-
CreatedAt = seedDate
|
|
42
|
-
}
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### Translations (4 languages)
|
|
46
|
-
|
|
47
|
-
```csharp
|
|
48
|
-
// In NavigationTranslationConfiguration.cs - GetSeedData()
|
|
49
|
-
// Context translations
|
|
50
|
-
translations.Add(new {
|
|
51
|
-
Id = GenerateGuid(index++),
|
|
52
|
-
EntityType = NavigationEntityType.Context,
|
|
53
|
-
EntityId = $CONTEXT_GUID,
|
|
54
|
-
LanguageCode = "fr",
|
|
55
|
-
Label = "$LABEL_FR",
|
|
56
|
-
Description = "$DESC_FR",
|
|
57
|
-
CreatedAt = seedDate
|
|
58
|
-
});
|
|
59
|
-
translations.Add(new {
|
|
60
|
-
Id = GenerateGuid(index++),
|
|
61
|
-
EntityType = NavigationEntityType.Context,
|
|
62
|
-
EntityId = $CONTEXT_GUID,
|
|
63
|
-
LanguageCode = "en",
|
|
64
|
-
Label = "$LABEL_EN",
|
|
65
|
-
Description = "$DESC_EN",
|
|
66
|
-
CreatedAt = seedDate
|
|
67
|
-
});
|
|
68
|
-
translations.Add(new {
|
|
69
|
-
Id = GenerateGuid(index++),
|
|
70
|
-
EntityType = NavigationEntityType.Context,
|
|
71
|
-
EntityId = $CONTEXT_GUID,
|
|
72
|
-
LanguageCode = "it",
|
|
73
|
-
Label = "$LABEL_IT",
|
|
74
|
-
Description = "$DESC_IT",
|
|
75
|
-
CreatedAt = seedDate
|
|
76
|
-
});
|
|
77
|
-
translations.Add(new {
|
|
78
|
-
Id = GenerateGuid(index++),
|
|
79
|
-
EntityType = NavigationEntityType.Context,
|
|
80
|
-
EntityId = $CONTEXT_GUID,
|
|
81
|
-
LanguageCode = "de",
|
|
82
|
-
Label = "$LABEL_DE",
|
|
83
|
-
Description = "$DESC_DE",
|
|
84
|
-
CreatedAt = seedDate
|
|
85
|
-
});
|
|
86
|
-
```
|
|
87
|
-
|
|
88
25
|
---
|
|
89
26
|
|
|
90
27
|
## TEMPLATE: APPLICATION
|
|
@@ -95,13 +32,12 @@ translations.Add(new {
|
|
|
95
32
|
// In NavigationApplicationConfiguration.cs - HasData()
|
|
96
33
|
new {
|
|
97
34
|
Id = Guid.Parse("$APP_GUID"),
|
|
98
|
-
ContextId = Guid.Parse("$CONTEXT_GUID"),
|
|
99
35
|
Code = "$CODE", // e.g.: "sales"
|
|
100
36
|
Label = "$LABEL_EN", // e.g.: "Sales"
|
|
101
37
|
Description = "$DESC_EN", // e.g.: "Sales management"
|
|
102
38
|
Icon = "$ICON", // e.g.: "TrendingUp"
|
|
103
39
|
IconType = IconType.Lucide,
|
|
104
|
-
Route = "/$
|
|
40
|
+
Route = "/$CODE", // e.g.: "/sales"
|
|
105
41
|
DisplayOrder = $ORDER,
|
|
106
42
|
IsActive = true,
|
|
107
43
|
CreatedAt = seedDate
|
|
@@ -166,7 +102,7 @@ new {
|
|
|
166
102
|
Description = "$DESC_EN", // e.g.: "Product management"
|
|
167
103
|
Icon = "$ICON", // e.g.: "Package"
|
|
168
104
|
IconType = IconType.Lucide,
|
|
169
|
-
Route = "/$
|
|
105
|
+
Route = "/$APP/$CODE", // e.g.: "/sales/products"
|
|
170
106
|
DisplayOrder = $ORDER,
|
|
171
107
|
IsActive = true,
|
|
172
108
|
CreatedAt = seedDate
|
|
@@ -231,7 +167,7 @@ new {
|
|
|
231
167
|
Description = "$DESC_EN", // e.g.: "Inventory management"
|
|
232
168
|
Icon = "$ICON", // e.g.: "Warehouse"
|
|
233
169
|
IconType = IconType.Lucide,
|
|
234
|
-
Route = "/$
|
|
170
|
+
Route = "/$APP/$MODULE/$CODE", // e.g.: "/sales/products/inventory"
|
|
235
171
|
DisplayOrder = $ORDER,
|
|
236
172
|
IsActive = true,
|
|
237
173
|
CreatedAt = seedDate
|
|
@@ -293,37 +229,37 @@ translations.Add(new {
|
|
|
293
229
|
// Read
|
|
294
230
|
new {
|
|
295
231
|
Id = Guid.Parse("$PERM_READ_GUID"),
|
|
296
|
-
Code = "$
|
|
232
|
+
Code = "$APP.$MODULE.read",
|
|
297
233
|
Name = "View $MODULE_LABEL",
|
|
298
234
|
Description = "View $MODULE_LABEL list and details",
|
|
299
|
-
Category = "$
|
|
235
|
+
Category = "$APP.$MODULE",
|
|
300
236
|
CreatedAt = seedDate
|
|
301
237
|
},
|
|
302
238
|
// Create
|
|
303
239
|
new {
|
|
304
240
|
Id = Guid.Parse("$PERM_CREATE_GUID"),
|
|
305
|
-
Code = "$
|
|
241
|
+
Code = "$APP.$MODULE.create",
|
|
306
242
|
Name = "Create $MODULE_LABEL",
|
|
307
243
|
Description = "Create new $MODULE_LABEL",
|
|
308
|
-
Category = "$
|
|
244
|
+
Category = "$APP.$MODULE",
|
|
309
245
|
CreatedAt = seedDate
|
|
310
246
|
},
|
|
311
247
|
// Update
|
|
312
248
|
new {
|
|
313
249
|
Id = Guid.Parse("$PERM_UPDATE_GUID"),
|
|
314
|
-
Code = "$
|
|
250
|
+
Code = "$APP.$MODULE.update",
|
|
315
251
|
Name = "Update $MODULE_LABEL",
|
|
316
252
|
Description = "Modify existing $MODULE_LABEL",
|
|
317
|
-
Category = "$
|
|
253
|
+
Category = "$APP.$MODULE",
|
|
318
254
|
CreatedAt = seedDate
|
|
319
255
|
},
|
|
320
256
|
// Delete
|
|
321
257
|
new {
|
|
322
258
|
Id = Guid.Parse("$PERM_DELETE_GUID"),
|
|
323
|
-
Code = "$
|
|
259
|
+
Code = "$APP.$MODULE.delete",
|
|
324
260
|
Name = "Delete $MODULE_LABEL",
|
|
325
261
|
Description = "Remove $MODULE_LABEL",
|
|
326
|
-
Category = "$
|
|
262
|
+
Category = "$APP.$MODULE",
|
|
327
263
|
CreatedAt = seedDate
|
|
328
264
|
}
|
|
329
265
|
```
|
|
@@ -346,7 +282,7 @@ new { RoleId = Guid.Parse("...StandardUserRoleId..."), PermissionId = $PERM_READ
|
|
|
346
282
|
|
|
347
283
|
---
|
|
348
284
|
|
|
349
|
-
## TEMPLATE: SECTION PERMISSIONS SEED (Level
|
|
285
|
+
## TEMPLATE: SECTION PERMISSIONS SEED (Level 3)
|
|
350
286
|
|
|
351
287
|
> **Usage:** When a Module has sub-pages with different permissions
|
|
352
288
|
|
|
@@ -354,7 +290,7 @@ new { RoleId = Guid.Parse("...StandardUserRoleId..."), PermissionId = $PERM_READ
|
|
|
354
290
|
|
|
355
291
|
```csharp
|
|
356
292
|
// In PermissionConfiguration.cs - HasData()
|
|
357
|
-
// Pattern: {
|
|
293
|
+
// Pattern: {application}.{module}.{section}.{action}
|
|
358
294
|
|
|
359
295
|
// Declare SectionId (must match NavigationSectionConfiguration.cs)
|
|
360
296
|
var {section}SectionId = Guid.Parse("$SECTION_GUID");
|
|
@@ -362,7 +298,7 @@ var {section}SectionId = Guid.Parse("$SECTION_GUID");
|
|
|
362
298
|
// Wildcard Section
|
|
363
299
|
new {
|
|
364
300
|
Id = Guid.Parse("$PERM_SECTION_WILDCARD_GUID"),
|
|
365
|
-
Path = "$
|
|
301
|
+
Path = "$APP.$MODULE.$SECTION.*",
|
|
366
302
|
Level = PermissionLevel.Section,
|
|
367
303
|
IsWildcard = true,
|
|
368
304
|
SectionId = {section}SectionId,
|
|
@@ -372,7 +308,7 @@ new {
|
|
|
372
308
|
// Read
|
|
373
309
|
new {
|
|
374
310
|
Id = Guid.Parse("$PERM_SECTION_READ_GUID"),
|
|
375
|
-
Path = "$
|
|
311
|
+
Path = "$APP.$MODULE.$SECTION.read",
|
|
376
312
|
Level = PermissionLevel.Section,
|
|
377
313
|
Action = PermissionAction.Read,
|
|
378
314
|
IsWildcard = false,
|
|
@@ -383,7 +319,7 @@ new {
|
|
|
383
319
|
// Create
|
|
384
320
|
new {
|
|
385
321
|
Id = Guid.Parse("$PERM_SECTION_CREATE_GUID"),
|
|
386
|
-
Path = "$
|
|
322
|
+
Path = "$APP.$MODULE.$SECTION.create",
|
|
387
323
|
Level = PermissionLevel.Section,
|
|
388
324
|
Action = PermissionAction.Create,
|
|
389
325
|
IsWildcard = false,
|
|
@@ -394,7 +330,7 @@ new {
|
|
|
394
330
|
// Update
|
|
395
331
|
new {
|
|
396
332
|
Id = Guid.Parse("$PERM_SECTION_UPDATE_GUID"),
|
|
397
|
-
Path = "$
|
|
333
|
+
Path = "$APP.$MODULE.$SECTION.update",
|
|
398
334
|
Level = PermissionLevel.Section,
|
|
399
335
|
Action = PermissionAction.Update,
|
|
400
336
|
IsWildcard = false,
|
|
@@ -405,7 +341,7 @@ new {
|
|
|
405
341
|
// Delete
|
|
406
342
|
new {
|
|
407
343
|
Id = Guid.Parse("$PERM_SECTION_DELETE_GUID"),
|
|
408
|
-
Path = "$
|
|
344
|
+
Path = "$APP.$MODULE.$SECTION.delete",
|
|
409
345
|
Level = PermissionLevel.Section,
|
|
410
346
|
Action = PermissionAction.Delete,
|
|
411
347
|
IsWildcard = false,
|
|
@@ -416,7 +352,7 @@ new {
|
|
|
416
352
|
// Execute (optional)
|
|
417
353
|
new {
|
|
418
354
|
Id = Guid.Parse("$PERM_SECTION_EXECUTE_GUID"),
|
|
419
|
-
Path = "$
|
|
355
|
+
Path = "$APP.$MODULE.$SECTION.execute",
|
|
420
356
|
Level = PermissionLevel.Section,
|
|
421
357
|
Action = PermissionAction.Execute,
|
|
422
358
|
IsWildcard = false,
|
|
@@ -428,7 +364,7 @@ new {
|
|
|
428
364
|
|
|
429
365
|
---
|
|
430
366
|
|
|
431
|
-
## TEMPLATE: RESOURCE PERMISSIONS SEED (Level
|
|
367
|
+
## TEMPLATE: RESOURCE PERMISSIONS SEED (Level 4)
|
|
432
368
|
|
|
433
369
|
> **Usage:** Finest level - sub-resources with distinct permissions (e.g.: Prompts → Blocks)
|
|
434
370
|
|
|
@@ -436,7 +372,7 @@ new {
|
|
|
436
372
|
|
|
437
373
|
```csharp
|
|
438
374
|
// In PermissionConfiguration.cs - HasData()
|
|
439
|
-
// Pattern: {
|
|
375
|
+
// Pattern: {application}.{module}.{section}.{resource}.{action}
|
|
440
376
|
|
|
441
377
|
// Declare ResourceId (must match NavigationResourceConfiguration.cs)
|
|
442
378
|
var {resource}ResourceId = Guid.Parse("$RESOURCE_GUID");
|
|
@@ -444,7 +380,7 @@ var {resource}ResourceId = Guid.Parse("$RESOURCE_GUID");
|
|
|
444
380
|
// Wildcard Resource
|
|
445
381
|
new {
|
|
446
382
|
Id = Guid.Parse("$PERM_RESOURCE_WILDCARD_GUID"),
|
|
447
|
-
Path = "$
|
|
383
|
+
Path = "$APP.$MODULE.$SECTION.$RESOURCE.*",
|
|
448
384
|
Level = PermissionLevel.Resource,
|
|
449
385
|
IsWildcard = true,
|
|
450
386
|
ResourceId = {resource}ResourceId,
|
|
@@ -454,7 +390,7 @@ new {
|
|
|
454
390
|
// Read
|
|
455
391
|
new {
|
|
456
392
|
Id = Guid.Parse("$PERM_RESOURCE_READ_GUID"),
|
|
457
|
-
Path = "$
|
|
393
|
+
Path = "$APP.$MODULE.$SECTION.$RESOURCE.read",
|
|
458
394
|
Level = PermissionLevel.Resource,
|
|
459
395
|
Action = PermissionAction.Read,
|
|
460
396
|
IsWildcard = false,
|
|
@@ -465,7 +401,7 @@ new {
|
|
|
465
401
|
// Create
|
|
466
402
|
new {
|
|
467
403
|
Id = Guid.Parse("$PERM_RESOURCE_CREATE_GUID"),
|
|
468
|
-
Path = "$
|
|
404
|
+
Path = "$APP.$MODULE.$SECTION.$RESOURCE.create",
|
|
469
405
|
Level = PermissionLevel.Resource,
|
|
470
406
|
Action = PermissionAction.Create,
|
|
471
407
|
IsWildcard = false,
|
|
@@ -476,7 +412,7 @@ new {
|
|
|
476
412
|
// Update
|
|
477
413
|
new {
|
|
478
414
|
Id = Guid.Parse("$PERM_RESOURCE_UPDATE_GUID"),
|
|
479
|
-
Path = "$
|
|
415
|
+
Path = "$APP.$MODULE.$SECTION.$RESOURCE.update",
|
|
480
416
|
Level = PermissionLevel.Resource,
|
|
481
417
|
Action = PermissionAction.Update,
|
|
482
418
|
IsWildcard = false,
|
|
@@ -487,7 +423,7 @@ new {
|
|
|
487
423
|
// Delete
|
|
488
424
|
new {
|
|
489
425
|
Id = Guid.Parse("$PERM_RESOURCE_DELETE_GUID"),
|
|
490
|
-
Path = "$
|
|
426
|
+
Path = "$APP.$MODULE.$SECTION.$RESOURCE.delete",
|
|
491
427
|
Level = PermissionLevel.Resource,
|
|
492
428
|
Action = PermissionAction.Delete,
|
|
493
429
|
IsWildcard = false,
|
|
@@ -512,7 +448,7 @@ new {
|
|
|
512
448
|
// Bulk Create
|
|
513
449
|
new {
|
|
514
450
|
Id = Guid.Parse("$PERM_BULK_CREATE_GUID"),
|
|
515
|
-
Path = "$
|
|
451
|
+
Path = "$APP.$MODULE.bulk-create",
|
|
516
452
|
Level = PermissionLevel.Module,
|
|
517
453
|
Action = PermissionAction.Create,
|
|
518
454
|
IsWildcard = false,
|
|
@@ -523,7 +459,7 @@ new {
|
|
|
523
459
|
// Bulk Update
|
|
524
460
|
new {
|
|
525
461
|
Id = Guid.Parse("$PERM_BULK_UPDATE_GUID"),
|
|
526
|
-
Path = "$
|
|
462
|
+
Path = "$APP.$MODULE.bulk-update",
|
|
527
463
|
Level = PermissionLevel.Module,
|
|
528
464
|
Action = PermissionAction.Update,
|
|
529
465
|
IsWildcard = false,
|
|
@@ -534,7 +470,7 @@ new {
|
|
|
534
470
|
// Bulk Delete
|
|
535
471
|
new {
|
|
536
472
|
Id = Guid.Parse("$PERM_BULK_DELETE_GUID"),
|
|
537
|
-
Path = "$
|
|
473
|
+
Path = "$APP.$MODULE.bulk-delete",
|
|
538
474
|
Level = PermissionLevel.Module,
|
|
539
475
|
Action = PermissionAction.Delete,
|
|
540
476
|
IsWildcard = false,
|
|
@@ -545,7 +481,7 @@ new {
|
|
|
545
481
|
// Export
|
|
546
482
|
new {
|
|
547
483
|
Id = Guid.Parse("$PERM_EXPORT_GUID"),
|
|
548
|
-
Path = "$
|
|
484
|
+
Path = "$APP.$MODULE.export",
|
|
549
485
|
Level = PermissionLevel.Module,
|
|
550
486
|
Action = PermissionAction.Execute,
|
|
551
487
|
IsWildcard = false,
|
|
@@ -556,7 +492,7 @@ new {
|
|
|
556
492
|
// Import
|
|
557
493
|
new {
|
|
558
494
|
Id = Guid.Parse("$PERM_IMPORT_GUID"),
|
|
559
|
-
Path = "$
|
|
495
|
+
Path = "$APP.$MODULE.import",
|
|
560
496
|
Level = PermissionLevel.Module,
|
|
561
497
|
Action = PermissionAction.Create,
|
|
562
498
|
IsWildcard = false,
|
|
@@ -568,13 +504,11 @@ new {
|
|
|
568
504
|
|
|
569
505
|
---
|
|
570
506
|
|
|
571
|
-
## COMPLETE EXAMPLE: "Products" Module in "
|
|
507
|
+
## COMPLETE EXAMPLE: "Products" Module in "Sales"
|
|
572
508
|
|
|
573
509
|
### Variables
|
|
574
510
|
|
|
575
511
|
```
|
|
576
|
-
$CONTEXT = erp
|
|
577
|
-
$CONTEXT_GUID = e1e1e1e1-1111-1111-1111-111111111111
|
|
578
512
|
$APP = sales
|
|
579
513
|
$APP_GUID = e2e2e2e2-2222-2222-2222-222222222222
|
|
580
514
|
$MODULE = products
|
|
@@ -596,12 +530,11 @@ $ORDER = 1
|
|
|
596
530
|
|
|
597
531
|
### Files to modify
|
|
598
532
|
|
|
599
|
-
1. `
|
|
600
|
-
2. `
|
|
601
|
-
3. `
|
|
602
|
-
4. `
|
|
603
|
-
5. `
|
|
604
|
-
6. `RolePermissionConfiguration.cs` - Assign to default roles
|
|
533
|
+
1. `NavigationApplicationConfiguration.cs` - Add Sales application
|
|
534
|
+
2. `NavigationModuleConfiguration.cs` - Add Products module
|
|
535
|
+
3. `NavigationTranslationConfiguration.cs` - Add 4 translations × number of entities
|
|
536
|
+
4. `PermissionConfiguration.cs` - Add CRUD permissions
|
|
537
|
+
5. `RolePermissionConfiguration.cs` - Assign to default roles
|
|
605
538
|
|
|
606
539
|
---
|
|
607
540
|
|
|
@@ -627,7 +560,7 @@ Domain entity seeds use the SeedData provider pattern below.
|
|
|
627
560
|
```csharp
|
|
628
561
|
// Infrastructure/Persistence/Seeding/Data/{Domain}/{EntityName}SeedData.cs
|
|
629
562
|
|
|
630
|
-
using SmartStack.Domain.{
|
|
563
|
+
using SmartStack.Domain.{Application}.{Module};
|
|
631
564
|
|
|
632
565
|
namespace SmartStack.Infrastructure.Persistence.Seeding.Data.{Domain};
|
|
633
566
|
|
|
@@ -854,7 +787,7 @@ InitializeSmartStackAsync()
|
|
|
854
787
|
using Microsoft.EntityFrameworkCore;
|
|
855
788
|
using SmartStack.Application.Common.Interfaces;
|
|
856
789
|
using SmartStack.Domain.Navigation;
|
|
857
|
-
using SmartStack.Domain.
|
|
790
|
+
using SmartStack.Domain.Administration.Roles;
|
|
858
791
|
|
|
859
792
|
namespace {BaseNamespace}.Infrastructure.Persistence.Seeding;
|
|
860
793
|
|
|
@@ -877,13 +810,10 @@ public class {AppPascalName}SeedDataProvider : IClientSeedDataProvider
|
|
|
877
810
|
}
|
|
878
811
|
else
|
|
879
812
|
{
|
|
880
|
-
var parentContext = await context.NavigationContexts
|
|
881
|
-
.FirstAsync(c => c.Code == "{context_code}", ct);
|
|
882
|
-
|
|
883
813
|
app = NavigationApplication.Create(
|
|
884
|
-
|
|
814
|
+
"{app_code}", "{app_label_en}",
|
|
885
815
|
"{app_desc_en}", "{app_icon}", IconType.Lucide,
|
|
886
|
-
"/{
|
|
816
|
+
"/{app_code}", {display_order});
|
|
887
817
|
context.NavigationApplications.Add(app);
|
|
888
818
|
await ((DbContext)context).SaveChangesAsync(ct);
|
|
889
819
|
|
|
@@ -980,11 +910,11 @@ public class {AppPascalName}SeedDataProvider : IClientSeedDataProvider
|
|
|
980
910
|
| ☐ Index translations continue existing sequence | |
|
|
981
911
|
| ☐ Route aligned with permission path | |
|
|
982
912
|
| ☐ DisplayOrder consistent | |
|
|
983
|
-
| ☐ CRUD permissions created (Level
|
|
984
|
-
| ☐ Section permissions if sub-pages (Level
|
|
913
|
+
| ☐ CRUD permissions created (Level 2 - Module) | |
|
|
914
|
+
| ☐ Section permissions if sub-pages (Level 3) | |
|
|
985
915
|
| ☐ NavigationSections seeded (if `seedDataCore.navigationSections` in feature.json) | |
|
|
986
916
|
| ☐ NavigationResources seeded (if `seedDataCore.navigationResources` in feature.json) | |
|
|
987
|
-
| ☐ Resource permissions if sub-resources (Level
|
|
917
|
+
| ☐ Resource permissions if sub-resources (Level 4) | |
|
|
988
918
|
| ☐ Bulk Operations permissions created | |
|
|
989
919
|
| ☐ RolePermissions assigned | |
|
|
990
920
|
| ☐ Entity SeedData.cs created (if user opted in) | |
|
|
@@ -994,28 +924,24 @@ public class {AppPascalName}SeedDataProvider : IClientSeedDataProvider
|
|
|
994
924
|
|
|
995
925
|
---
|
|
996
926
|
|
|
997
|
-
## PERMISSIONS HIERARCHY (
|
|
927
|
+
## PERMISSIONS HIERARCHY (4 Levels)
|
|
998
928
|
|
|
999
929
|
```
|
|
1000
|
-
Level 1:
|
|
1001
|
-
└─ Path: {
|
|
1002
|
-
└─ E.g.:
|
|
1003
|
-
|
|
1004
|
-
Level 2: APPLICATION
|
|
1005
|
-
└─ Path: {context}.{application}.*
|
|
1006
|
-
└─ E.g.: platform.administration.* → Full app access
|
|
930
|
+
Level 1: APPLICATION
|
|
931
|
+
└─ Path: {application}.*
|
|
932
|
+
└─ E.g.: administration.* → Full app access
|
|
1007
933
|
|
|
1008
|
-
Level
|
|
1009
|
-
└─ Path: {
|
|
1010
|
-
└─ E.g.:
|
|
934
|
+
Level 2: MODULE
|
|
935
|
+
└─ Path: {application}.{module}.{action}
|
|
936
|
+
└─ E.g.: administration.users.read
|
|
1011
937
|
|
|
1012
|
-
Level
|
|
1013
|
-
└─ Path: {
|
|
1014
|
-
└─ E.g.:
|
|
938
|
+
Level 3: SECTION
|
|
939
|
+
└─ Path: {application}.{module}.{section}.{action}
|
|
940
|
+
└─ E.g.: administration.ai.settings.update
|
|
1015
941
|
|
|
1016
|
-
Level
|
|
1017
|
-
└─ Path: {
|
|
1018
|
-
└─ E.g.:
|
|
942
|
+
Level 4: RESOURCE (finest granularity)
|
|
943
|
+
└─ Path: {application}.{module}.{section}.{resource}.{action}
|
|
944
|
+
└─ E.g.: administration.ai.prompts.blocks.delete
|
|
1019
945
|
```
|
|
1020
946
|
|
|
1021
947
|
---
|
|
@@ -12,7 +12,7 @@ Execute business analysis workflows. This skill produces feature.json files prog
|
|
|
12
12
|
2. **Update** — delta changes on an existing application or module
|
|
13
13
|
3. **Multi-application project** — when a project spans multiple independent applications (e.g., HR Management + Employee Self-Service)
|
|
14
14
|
|
|
15
|
-
The skill auto-detects which use case applies by scanning existing features in `docs/
|
|
15
|
+
The skill auto-detects which use case applies by scanning existing features in `docs/{app}/` and `docs/business-analyse/`.
|
|
16
16
|
|
|
17
17
|
**Architecture highlights:**
|
|
18
18
|
- Conditional context loading: each step loads only the shared files it needs (~54% context reduction)
|
|
@@ -42,7 +42,7 @@ The skill auto-detects which use case applies by scanning existing features in `
|
|
|
42
42
|
| `-review` | Mode review — lit `ba-review.json`, cree une nouvelle version avec les corrections appliquees |
|
|
43
43
|
|
|
44
44
|
Step-00 handles detection automatically:
|
|
45
|
-
- **New vs Update**: scans `docs
|
|
45
|
+
- **New vs Update**: scans `docs/` for existing applications
|
|
46
46
|
- **Single vs Multi-app**: multi-app detection in step-01, application identity confirmed in step-01b (always)
|
|
47
47
|
- **Single vs Multi-module**: determined during step-02 decomposition
|
|
48
48
|
- **Language**: detected from config or asked once
|
|
@@ -57,15 +57,15 @@ Step-00 handles detection automatically:
|
|
|
57
57
|
docs/
|
|
58
58
|
business-analyse/v{X.Y}/
|
|
59
59
|
feature.json # PROJECT-level master (only if multi-app: applications, dependencies)
|
|
60
|
-
{
|
|
60
|
+
{app}/
|
|
61
61
|
index.json # BA manifest (auto-updated at handoff, consumed by web app viewer)
|
|
62
|
-
|
|
62
|
+
business-analyse/v{X.Y}/
|
|
63
63
|
feature.json # APPLICATION-level master (modules, dependencies, roles)
|
|
64
64
|
ba-interactive.html # Client-facing interactive review document (deployed at handoff)
|
|
65
65
|
{app}/{module}/business-analyse/v{X.Y}/
|
|
66
66
|
feature.json # MODULE-level detail (entities, UC, FR, permissions, mockups)
|
|
67
67
|
```
|
|
68
|
-
> In standalone mode (single app), the project-level file is NOT created
|
|
68
|
+
> In standalone mode (single app), the project-level file is NOT created.
|
|
69
69
|
|
|
70
70
|
**Ralph Loop files (generated by step-05):**
|
|
71
71
|
```
|
|
@@ -75,25 +75,24 @@ docs/
|
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
**Documentation integrated in SmartStack app:**
|
|
78
|
-
- Application view: `/docs/
|
|
79
|
-
- Module view: `/docs/
|
|
78
|
+
- Application view: `/docs/{app}` (module overview, dependency graph, roles)
|
|
79
|
+
- Module view: `/docs/{app}/{module}` (full specification, mockups)
|
|
80
80
|
|
|
81
81
|
**No intermediate markdown files - all state in feature.json**
|
|
82
82
|
</output_structure>
|
|
83
83
|
|
|
84
84
|
<navigation_hierarchy>
|
|
85
|
-
**SmartStack uses a
|
|
85
|
+
**SmartStack uses a 4-level navigation structure mapped to database tables:**
|
|
86
86
|
|
|
87
87
|
| Level | Entity | Table DB | Created in Step | Description |
|
|
88
88
|
|-------|--------|----------|-----------------|-------------|
|
|
89
|
-
| 1 |
|
|
90
|
-
| 2 |
|
|
91
|
-
| 3 |
|
|
92
|
-
| 4 | **
|
|
93
|
-
| 5 | **Resource** | **`core.nav_Resources`** | **03b-03c** | **React component (SmartTable, SmartForm, Chart, KpiCard, etc.)** |
|
|
89
|
+
| 1 | Application | `core.nav_Applications` | 00-01 | Top-level application (e.g., "HumanResources") |
|
|
90
|
+
| 2 | Module | `core.nav_Modules` | 02 | Functional module (e.g., "Employees", "TimeManagement") |
|
|
91
|
+
| 3 | **Section** | **`core.nav_Sections`** | **03a-03c** | **Page within module (e.g., "list", "detail", "dashboard")** |
|
|
92
|
+
| 4 | **Resource** | **`core.nav_Resources`** | **03b-03c** | **React component (SmartTable, SmartForm, Chart, KpiCard, etc.)** |
|
|
94
93
|
|
|
95
94
|
**Hierarchical relationship:**
|
|
96
|
-
-
|
|
95
|
+
- Application → Module → **Section** → **Resource**
|
|
97
96
|
- Each Section MUST have ≥1 Resource
|
|
98
97
|
- Each Section corresponds to 1 React page route
|
|
99
98
|
- Each Resource corresponds to 1 SmartStack UI component
|
|
@@ -104,11 +103,11 @@ The `specification.seedDataCore` contains **9 mandatory arrays** for database se
|
|
|
104
103
|
|
|
105
104
|
| Array | Table | Source | Description |
|
|
106
105
|
|-------|-------|--------|-------------|
|
|
107
|
-
| `navigationApplications` | `core.nav_Applications` | Manual (step-03c) | Application entry (Level
|
|
106
|
+
| `navigationApplications` | `core.nav_Applications` | Manual (step-03c) | Application entry (Level 1) — created ONCE per application |
|
|
108
107
|
| `applicationRoles` | `core.auth_Roles` | Manual (step-03c) | Application-scoped roles (admin, manager, contributor, viewer) |
|
|
109
|
-
| `navigationModules` | `core.nav_Modules` | Manual (step-03c) | Module entry (Level
|
|
110
|
-
| **`navigationSections`** | **`core.nav_Sections`** | **Derived from `specification.sections[]`** | **Section entries (Level
|
|
111
|
-
| **`navigationResources`** | **`core.nav_Resources`** | **Derived from `specification.sections[].resources[]`** | **Resource entries (Level
|
|
108
|
+
| `navigationModules` | `core.nav_Modules` | Manual (step-03c) | Module entry (Level 2) |
|
|
109
|
+
| **`navigationSections`** | **`core.nav_Sections`** | **Derived from `specification.sections[]`** | **Section entries (Level 3)** |
|
|
110
|
+
| **`navigationResources`** | **`core.nav_Resources`** | **Derived from `specification.sections[].resources[]`** | **Resource entries (Level 4)** |
|
|
112
111
|
| `navigationTranslations` | `core.nav_Translations` | Manual (i18n) | Multi-language labels |
|
|
113
112
|
| `permissions` | `core.Permissions` | Manual (step-03c) | Permission definitions ({path, action, description}) |
|
|
114
113
|
| `rolePermissions` | `core.RolePermissions` | Manual (step-03c) | Role-permission mappings |
|
|
@@ -119,13 +118,13 @@ The `specification.seedDataCore` contains **9 mandatory arrays** for database se
|
|
|
119
118
|
- `navigationResources` = transform `specification.sections[].resources[]` → flatten to { code, type, entity, parentCode, permission }
|
|
120
119
|
|
|
121
120
|
**Example:**
|
|
122
|
-
- Module: `Employees` (Level
|
|
123
|
-
- Section: `list` (Level
|
|
124
|
-
- Resource: `employees-grid` (SmartTable) (Level
|
|
125
|
-
- Resource: `status-filter` (FilterBar) (Level
|
|
126
|
-
- Section: `detail` (Level
|
|
127
|
-
- Resource: `employee-card` (DetailCard) (Level
|
|
128
|
-
- Resource: `contract-history` (SmartTable) (Level
|
|
121
|
+
- Module: `Employees` (Level 2)
|
|
122
|
+
- Section: `list` (Level 3) → contains resources:
|
|
123
|
+
- Resource: `employees-grid` (SmartTable) (Level 4)
|
|
124
|
+
- Resource: `status-filter` (FilterBar) (Level 4)
|
|
125
|
+
- Section: `detail` (Level 3) → contains resources:
|
|
126
|
+
- Resource: `employee-card` (DetailCard) (Level 4)
|
|
127
|
+
- Resource: `contract-history` (SmartTable) (Level 4)
|
|
129
128
|
|
|
130
129
|
</navigation_hierarchy>
|
|
131
130
|
|
|
@@ -144,7 +143,7 @@ When step-00 detects that the description matches an existing application:
|
|
|
144
143
|
**Step-00 routing (auto-detection):**
|
|
145
144
|
|
|
146
145
|
1. Read `{feature_description}`
|
|
147
|
-
2. Scan `docs
|
|
146
|
+
2. Scan `docs/` for existing applications
|
|
148
147
|
3. If match found → ask user: "New application" or "Update {app}" ?
|
|
149
148
|
4. If no match → new application
|
|
150
149
|
5. Create master feature.json and proceed to step-01
|
|
@@ -188,10 +187,9 @@ When step-00 detects that the description matches an existing application:
|
|
|
188
187
|
| `{application_name}` | string | Target application name |
|
|
189
188
|
| `{module_name}` | string | Target module name |
|
|
190
189
|
| `{project_id}` | string | Project identifier (e.g., `PROJ-001`) — only in multi-app mode |
|
|
191
|
-
| `{context}` | string | "business" (default), "platform", or "personal" per application |
|
|
192
190
|
| `{workflow_mode}` | string | "project" (multi-app), "application" (single-app multi-module), or "module" (single) |
|
|
193
191
|
| `{analysisMode}` | string | Always "interactive" — analysis phase is always interactive with the user |
|
|
194
|
-
| `{docs_dir}` | string | `docs/
|
|
192
|
+
| `{docs_dir}` | string | `docs/{app}/{module}/business-analyse/v{X.Y}/` |
|
|
195
193
|
|
|
196
194
|
</state_variables>
|
|
197
195
|
|
|
@@ -281,7 +279,6 @@ Load ONLY relevant categories based on feature type:
|
|
|
281
279
|
- **Use ba-writer agent** for all JSON writes
|
|
282
280
|
- **Use ba-reader agent** for all JSON reads
|
|
283
281
|
- **Follow next_step directive** at end of each step
|
|
284
|
-
- **Context:** business-only in standalone mode; business/platform/personal per-application in project mode
|
|
285
282
|
- **Use parallel agents** for codebase exploration
|
|
286
283
|
- **Team mode** (2+ modules): After step-02, load `references/team-orchestration.md` and follow team protocol
|
|
287
284
|
- **Inline mode** (1 module): Classic sequential execution, no team
|
|
@@ -326,5 +323,5 @@ Load ONLY relevant categories based on feature type:
|
|
|
326
323
|
- Cross-module consolidation passed (step-04)
|
|
327
324
|
- Development handoff ready for `/ralph-loop`
|
|
328
325
|
- Ralph Loop prd.json generated (per module or consolidated)
|
|
329
|
-
- All outputs renderable by SmartStack app viewer at `/docs/
|
|
326
|
+
- All outputs renderable by SmartStack app viewer at `/docs/{app}/`
|
|
330
327
|
</success_criteria>
|
|
@@ -63,11 +63,11 @@
|
|
|
63
63
|
| **Domain** | `{Project}.Domain/Business/{Application}/{Module}/` | `Domain/Business/Operations/FreeBicke/FreeBicke.cs` |
|
|
64
64
|
| **Application/DTOs** | `{Project}.Application/Business/{Application}/{Module}/DTOs/` | `Application/Business/Operations/FreeBicke/DTOs/FreeBickeDto.cs` |
|
|
65
65
|
| **Application/Interfaces** | `{Project}.Application/Common/Interfaces/` | `Application/Common/Interfaces/IFreeBickeService.cs` |
|
|
66
|
-
| **Infrastructure/Config** | `{Project}.Infrastructure/Persistence/Configurations/{
|
|
67
|
-
| **Infrastructure/Services** | `{Project}.Infrastructure/Services/{
|
|
68
|
-
| **Infrastructure/SeedData** | `{Project}.Infrastructure/Persistence/Seeding/Data/{
|
|
66
|
+
| **Infrastructure/Config** | `{Project}.Infrastructure/Persistence/Configurations/{Application}/{Module}/` | `Configurations/Operations/FreeBicke/FreeBickeConfiguration.cs` |
|
|
67
|
+
| **Infrastructure/Services** | `{Project}.Infrastructure/Services/{Application}/{Module}/` | `Services/Operations/FreeBicke/FreeBickeService.cs` |
|
|
68
|
+
| **Infrastructure/SeedData** | `{Project}.Infrastructure/Persistence/Seeding/Data/{Application}/{Module}/` | `Seeding/Data/Operations/FreeBicke/FreeBickeSeedData.cs` |
|
|
69
69
|
| **API/Controllers** | `{Project}.Api/Controllers/Business/{Application}/` | `Controllers/Business/Operations/FreeBickeController.cs` |
|
|
70
|
-
| **Frontend/Pages** | `web/src/pages/
|
|
70
|
+
| **Frontend/Pages** | `web/src/pages/{application}/{module}/` | `pages/operations/freebicke/page.tsx` |
|
|
71
71
|
| **Frontend/i18n** | `web/src/i18n/locales/{lang}/{module}.json` | `locales/fr/freebicke.json` |
|
|
72
72
|
|
|
73
73
|
> **IMPORTANT :** Chaque module a son **propre sous-dossier** dans chaque couche. Ne JAMAIS mettre tous les fichiers a la racine d'une couche.
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
|
|
91
91
|
| Role | Permissions | Description |
|
|
92
92
|
|------|-------------|-------------|
|
|
93
|
-
| **{App} Admin** | `{
|
|
93
|
+
| **{App} Admin** | `{app}.*` (wildcard) | Acces complet a l'application |
|
|
94
94
|
| **{App} Manager** | `read`, `create`, `update`, `assign` | Gestion complete sans suppression |
|
|
95
95
|
| **{App} Contributor** | `read`, `create`, `update` | Contribution active |
|
|
96
96
|
| **{App} Viewer** | `read` uniquement | Consultation seule |
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
| Contrainte | Detail |
|
|
105
105
|
|------------|--------|
|
|
106
106
|
| **Multi-tenant** | `TenantId` sur toute entite metier, isolation automatique |
|
|
107
|
-
| **RBAC** | Permissions `
|
|
107
|
+
| **RBAC** | Permissions `{app}.{module}.{action}`, HasData pattern |
|
|
108
108
|
| **CQRS** | Commands (write) et Queries (read) separes via MediatR |
|
|
109
109
|
| **Validation** | FluentValidation pour toute commande |
|
|
110
110
|
| **i18n** | 4 langues obligatoires (fr, en, it, de) |
|