@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
|
@@ -1,134 +1,133 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: step-03b-provider
|
|
3
|
-
description: Generate IClientSeedDataProvider implementation for client projects
|
|
4
|
-
prev_step: steps/step-03-roles.md
|
|
5
|
-
next_step: steps/step-04-backend.md
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Step 3b: Client Seed Data Provider (Client Projects Only)
|
|
9
|
-
|
|
10
|
-
## CONDITION D'EXECUTION
|
|
11
|
-
|
|
12
|
-
> This step executes ONLY if `{seeding_strategy}` = "provider" (client project).
|
|
13
|
-
> If `{seeding_strategy}` = "hasdata", skip directly to step-04-backend.md.
|
|
14
|
-
|
|
15
|
-
## MANDATORY EXECUTION RULES
|
|
16
|
-
|
|
17
|
-
- ONLY execute for client projects (`{seeding_strategy}` = "provider")
|
|
18
|
-
- ALWAYS use factory methods (`NavigationModule.Create(...)`, etc.) - NEVER `new Entity()`
|
|
19
|
-
- ALWAYS implement idempotence (check existence before inserting)
|
|
20
|
-
- ALWAYS register the provider in DI
|
|
21
|
-
- ALWAYS consume the SeedData classes created in steps 01-03
|
|
22
|
-
|
|
23
|
-
## YOUR TASK
|
|
24
|
-
|
|
25
|
-
Generate the `IClientSeedDataProvider` implementation that wires the SeedData files
|
|
26
|
-
created in steps 01, 02, 03 into the SmartStack Core seeding pipeline.
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## AVAILABLE STATE
|
|
31
|
-
|
|
32
|
-
From previous steps:
|
|
33
|
-
|
|
34
|
-
| Variable | Description |
|
|
35
|
-
|----------|-------------|
|
|
36
|
-
| `{level}` |
|
|
37
|
-
| `{code}` | kebab-case identifier |
|
|
38
|
-
| `{full_path}` | Complete navigation path |
|
|
39
|
-
| `{labels}` | Object with fr, en, it, de |
|
|
40
|
-
| `{descriptions}` | Object with fr, en, it, de |
|
|
41
|
-
| `{icon}` | Lucide icon name |
|
|
42
|
-
| `{display_order}` | Numeric display order |
|
|
43
|
-
| `{navigation_guid}` | GUID of the navigation entity |
|
|
44
|
-
| `{permission_guids}` | GUIDs for generated permissions |
|
|
45
|
-
| `{project_type}` | "client" (guaranteed at this step) |
|
|
46
|
-
| `{seeding_strategy}` | "provider" (guaranteed at this step) |
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## FILES TO GENERATE
|
|
51
|
-
|
|
52
|
-
See [references/provider-template.md](../references/provider-template.md) for the complete implementation:
|
|
53
|
-
- **ApplicationRolesSeedData.cs** (once per application) — defines application-scoped roles (Admin, Manager, Contributor, Viewer)
|
|
54
|
-
- **Provider class** (`{AppPascalName}SeedDataProvider.cs`) with 4 seed methods (Navigation, Roles, Permissions, RolePermissions)
|
|
55
|
-
- **DI registration** pattern for `Infrastructure/DependencyInjection.cs`
|
|
56
|
-
- **7 critical rules** (factory methods, idempotence, execution order, SaveChangesAsync order, deterministic GUIDs, FK by Code, Order property)
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
## EXECUTION SEQUENCE
|
|
61
|
-
|
|
62
|
-
### 1. Read SeedData files from steps 01-03
|
|
63
|
-
|
|
64
|
-
Identify all SeedData files created in previous steps:
|
|
65
|
-
|
|
66
|
-
```
|
|
67
|
-
Glob: **/Persistence/Seeding/Data/{Domain}/*SeedData.cs
|
|
68
|
-
Glob: **/Persistence/Seeding/Data/ApplicationRolesSeedData.cs
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
Expected files:
|
|
72
|
-
- `ApplicationRolesSeedData.cs` (application-level, once per app)
|
|
73
|
-
- `{Module}NavigationSeedData.cs` (from step 01)
|
|
74
|
-
- `{Module}NavigationTranslationSeedData.cs` (from step 01)
|
|
75
|
-
- `{Module}PermissionSeedData.cs` (from step 02)
|
|
76
|
-
- `{Module}RolePermissionSeedData.cs` (from step 03)
|
|
77
|
-
|
|
78
|
-
### 2. Generate Provider Class
|
|
79
|
-
|
|
80
|
-
Using the SeedData files as data sources, generate the `{AppPascalName}SeedDataProvider.cs` following the pattern above.
|
|
81
|
-
|
|
82
|
-
Adapt the template:
|
|
83
|
-
- Replace `{AppPascalName}` with the PascalCase application name
|
|
84
|
-
- Replace `{app_code}` with the kebab-case application code
|
|
85
|
-
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
- [ ]
|
|
103
|
-
- [ ]
|
|
104
|
-
- [ ]
|
|
105
|
-
- [ ]
|
|
106
|
-
- [ ]
|
|
107
|
-
- [ ]
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
-
|
|
115
|
-
-
|
|
116
|
-
-
|
|
117
|
-
-
|
|
118
|
-
-
|
|
119
|
-
-
|
|
120
|
-
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
-
|
|
126
|
-
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
proceed to `./step-04-backend.md`
|
|
1
|
+
---
|
|
2
|
+
name: step-03b-provider
|
|
3
|
+
description: Generate IClientSeedDataProvider implementation for client projects
|
|
4
|
+
prev_step: steps/step-03-roles.md
|
|
5
|
+
next_step: steps/step-04-backend.md
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Step 3b: Client Seed Data Provider (Client Projects Only)
|
|
9
|
+
|
|
10
|
+
## CONDITION D'EXECUTION
|
|
11
|
+
|
|
12
|
+
> This step executes ONLY if `{seeding_strategy}` = "provider" (client project).
|
|
13
|
+
> If `{seeding_strategy}` = "hasdata", skip directly to step-04-backend.md.
|
|
14
|
+
|
|
15
|
+
## MANDATORY EXECUTION RULES
|
|
16
|
+
|
|
17
|
+
- ONLY execute for client projects (`{seeding_strategy}` = "provider")
|
|
18
|
+
- ALWAYS use factory methods (`NavigationModule.Create(...)`, etc.) - NEVER `new Entity()`
|
|
19
|
+
- ALWAYS implement idempotence (check existence before inserting)
|
|
20
|
+
- ALWAYS register the provider in DI
|
|
21
|
+
- ALWAYS consume the SeedData classes created in steps 01-03
|
|
22
|
+
|
|
23
|
+
## YOUR TASK
|
|
24
|
+
|
|
25
|
+
Generate the `IClientSeedDataProvider` implementation that wires the SeedData files
|
|
26
|
+
created in steps 01, 02, 03 into the SmartStack Core seeding pipeline.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## AVAILABLE STATE
|
|
31
|
+
|
|
32
|
+
From previous steps:
|
|
33
|
+
|
|
34
|
+
| Variable | Description |
|
|
35
|
+
|----------|-------------|
|
|
36
|
+
| `{level}` | application, module, section, or resource |
|
|
37
|
+
| `{code}` | kebab-case identifier |
|
|
38
|
+
| `{full_path}` | Complete navigation path |
|
|
39
|
+
| `{labels}` | Object with fr, en, it, de |
|
|
40
|
+
| `{descriptions}` | Object with fr, en, it, de |
|
|
41
|
+
| `{icon}` | Lucide icon name |
|
|
42
|
+
| `{display_order}` | Numeric display order |
|
|
43
|
+
| `{navigation_guid}` | GUID of the navigation entity |
|
|
44
|
+
| `{permission_guids}` | GUIDs for generated permissions |
|
|
45
|
+
| `{project_type}` | "client" (guaranteed at this step) |
|
|
46
|
+
| `{seeding_strategy}` | "provider" (guaranteed at this step) |
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## FILES TO GENERATE
|
|
51
|
+
|
|
52
|
+
See [references/provider-template.md](../references/provider-template.md) for the complete implementation:
|
|
53
|
+
- **ApplicationRolesSeedData.cs** (once per application) — defines application-scoped roles (Admin, Manager, Contributor, Viewer)
|
|
54
|
+
- **Provider class** (`{AppPascalName}SeedDataProvider.cs`) with 4 seed methods (Navigation, Roles, Permissions, RolePermissions)
|
|
55
|
+
- **DI registration** pattern for `Infrastructure/DependencyInjection.cs`
|
|
56
|
+
- **7 critical rules** (factory methods, idempotence, execution order, SaveChangesAsync order, deterministic GUIDs, FK by Code, Order property)
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## EXECUTION SEQUENCE
|
|
61
|
+
|
|
62
|
+
### 1. Read SeedData files from steps 01-03
|
|
63
|
+
|
|
64
|
+
Identify all SeedData files created in previous steps:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
Glob: **/Persistence/Seeding/Data/{Domain}/*SeedData.cs
|
|
68
|
+
Glob: **/Persistence/Seeding/Data/ApplicationRolesSeedData.cs
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Expected files:
|
|
72
|
+
- `ApplicationRolesSeedData.cs` (application-level, once per app)
|
|
73
|
+
- `{Module}NavigationSeedData.cs` (from step 01)
|
|
74
|
+
- `{Module}NavigationTranslationSeedData.cs` (from step 01)
|
|
75
|
+
- `{Module}PermissionSeedData.cs` (from step 02)
|
|
76
|
+
- `{Module}RolePermissionSeedData.cs` (from step 03)
|
|
77
|
+
|
|
78
|
+
### 2. Generate Provider Class
|
|
79
|
+
|
|
80
|
+
Using the SeedData files as data sources, generate the `{AppPascalName}SeedDataProvider.cs` following the pattern above.
|
|
81
|
+
|
|
82
|
+
Adapt the template:
|
|
83
|
+
- Replace `{AppPascalName}` with the PascalCase application name
|
|
84
|
+
- Replace `{app_code}` with the kebab-case application code
|
|
85
|
+
- Fill in the actual navigation, permission, and role-permission creation logic
|
|
86
|
+
using the helper methods from the SeedData classes
|
|
87
|
+
|
|
88
|
+
### 3. Register in DI
|
|
89
|
+
|
|
90
|
+
Find and update `Infrastructure/DependencyInjection.cs`:
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
Glob: **/Infrastructure/DependencyInjection.cs
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Add the `IClientSeedDataProvider` registration.
|
|
97
|
+
|
|
98
|
+
### 4. Verify
|
|
99
|
+
|
|
100
|
+
Before proceeding to step-04, verify:
|
|
101
|
+
- [ ] ApplicationRolesSeedData.cs created (once per application)
|
|
102
|
+
- [ ] Provider generated with 4 methods (SeedNavigationAsync, SeedRolesAsync, SeedPermissionsAsync, SeedRolePermissionsAsync)
|
|
103
|
+
- [ ] Execution order: Navigation → Roles → Permissions → RolePermissions
|
|
104
|
+
- [ ] Registered in DI (`services.AddScoped<IClientSeedDataProvider, ...>()`)
|
|
105
|
+
- [ ] Consumes SeedData classes from steps 01-03 + ApplicationRolesSeedData
|
|
106
|
+
- [ ] Idempotent (check existence before insert)
|
|
107
|
+
- [ ] Uses factory methods (no `new Entity()`)
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## SUCCESS METRICS
|
|
112
|
+
|
|
113
|
+
- ApplicationRolesSeedData.cs created (application-level)
|
|
114
|
+
- Provider class generated with all 4 seed methods (Navigation, Roles, Permissions, RolePermissions)
|
|
115
|
+
- Correct execution order enforced
|
|
116
|
+
- DI registration added
|
|
117
|
+
- SeedData classes from steps 01-03 + ApplicationRolesSeedData properly consumed
|
|
118
|
+
- All methods are idempotent
|
|
119
|
+
- Factory methods used throughout
|
|
120
|
+
- Proceeded to step-04-backend.md
|
|
121
|
+
|
|
122
|
+
## FAILURE MODES
|
|
123
|
+
|
|
124
|
+
- SeedData files not found from previous steps (return to step-01)
|
|
125
|
+
- DependencyInjection.cs not found (ask user for DI registration location)
|
|
126
|
+
- Missing IClientSeedDataProvider interface (verify SmartStack.Application reference)
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## NEXT STEP
|
|
131
|
+
|
|
132
|
+
After generating the provider and registering it in DI,
|
|
133
|
+
proceed to `./step-04-backend.md`
|