@atlashub/smartstack-cli 3.39.0 → 3.41.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/apex.html +644 -644
- package/.documentation/css/styles.css +2320 -2320
- package/.documentation/init.html +1377 -1377
- package/.documentation/js/app.js +780 -780
- package/.documentation/prd-json-v2.0.0.md +396 -396
- package/.documentation/testing-ba-e2e.md +462 -462
- package/config/default-config.json +95 -95
- package/config/mcp-defaults.json +62 -62
- package/config/settings.json +53 -53
- package/config/settings.local.example.json +16 -16
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp-entry.mjs +6 -4
- package/dist/mcp-entry.mjs.map +1 -1
- package/package.json +115 -115
- package/scripts/extract-api-endpoints.ts +325 -325
- package/scripts/extract-business-rules.ts +440 -440
- package/scripts/generate-doc-with-mock-ui.ts +804 -804
- package/scripts/health-check.sh +168 -168
- package/scripts/postinstall.js +18 -18
- package/templates/agents/action.md +37 -37
- package/templates/agents/ba-reader.md +378 -378
- package/templates/agents/ba-writer.md +861 -861
- package/templates/agents/code-reviewer.md +163 -163
- package/templates/agents/db-reader.md +149 -149
- package/templates/agents/docs-context-reader.md +143 -143
- package/templates/agents/docs-sync-checker.md +122 -122
- package/templates/agents/efcore/conflicts.md +95 -84
- package/templates/agents/efcore/db-deploy.md +85 -74
- package/templates/agents/efcore/db-reset.md +96 -85
- package/templates/agents/efcore/db-seed.md +72 -61
- package/templates/agents/efcore/db-status.md +97 -86
- package/templates/agents/efcore/migration.md +197 -186
- package/templates/agents/efcore/rebase-snapshot.md +119 -108
- package/templates/agents/efcore/scan.md +103 -92
- package/templates/agents/efcore/squash.md +172 -161
- package/templates/agents/explore-codebase.md +66 -66
- package/templates/agents/explore-docs.md +98 -98
- package/templates/agents/fix-grammar.md +50 -50
- package/templates/agents/gitflow/abort.md +45 -45
- package/templates/agents/gitflow/cleanup.md +96 -96
- package/templates/agents/gitflow/commit.md +236 -236
- package/templates/agents/gitflow/exec.md +48 -48
- package/templates/agents/gitflow/finish.md +146 -146
- package/templates/agents/gitflow/init-clone.md +199 -199
- package/templates/agents/gitflow/init-detect.md +137 -137
- package/templates/agents/gitflow/init-validate.md +225 -225
- package/templates/agents/gitflow/init.md +340 -340
- package/templates/agents/gitflow/merge.md +145 -145
- package/templates/agents/gitflow/plan.md +42 -42
- package/templates/agents/gitflow/pr.md +191 -191
- package/templates/agents/gitflow/review.md +49 -49
- package/templates/agents/gitflow/start.md +147 -147
- package/templates/agents/gitflow/status.md +95 -95
- package/templates/agents/mcp-healthcheck.md +163 -163
- package/templates/agents/snipper.md +37 -37
- package/templates/agents/websearch.md +46 -46
- package/templates/hooks/appsettings-guard.sh +76 -76
- package/templates/hooks/docs-drift-check.md +96 -96
- package/templates/hooks/ef-migration-check.md +139 -139
- package/templates/hooks/hooks.json +58 -58
- package/templates/hooks/mcp-check.md +64 -64
- package/templates/hooks/ralph-mcp-logger.sh +46 -46
- package/templates/hooks/ralph-session-end.sh +69 -69
- package/templates/hooks/stop-hook.sh +177 -177
- package/templates/hooks/wsl-dotnet-cleanup.sh +24 -24
- package/templates/mcp-scaffolding/component.tsx.hbs +318 -318
- package/templates/mcp-scaffolding/controller.cs.hbs +192 -192
- package/templates/mcp-scaffolding/entity-extension.cs.hbs +239 -239
- package/templates/mcp-scaffolding/frontend/api-client.ts.hbs +116 -116
- package/templates/mcp-scaffolding/frontend/nav-routes.ts.hbs +133 -133
- package/templates/mcp-scaffolding/frontend/routes.tsx.hbs +126 -126
- package/templates/mcp-scaffolding/migrations/seed-roles.cs.hbs +261 -261
- package/templates/mcp-scaffolding/service-extension.cs.hbs +53 -53
- package/templates/mcp-scaffolding/tests/controller.test.cs.hbs +436 -436
- package/templates/mcp-scaffolding/tests/entity.test.cs.hbs +239 -239
- package/templates/mcp-scaffolding/tests/repository.test.cs.hbs +441 -441
- package/templates/mcp-scaffolding/tests/security.test.cs.hbs +442 -442
- package/templates/mcp-scaffolding/tests/service.test.cs.hbs +402 -402
- package/templates/mcp-scaffolding/tests/validator.test.cs.hbs +428 -428
- package/templates/project/DependencyInjection.Application.cs.template +25 -25
- package/templates/project/DependencyInjection.Infrastructure.cs.template +61 -61
- package/templates/project/DesignTimeExtensionsDbContextFactory.cs.template +70 -70
- package/templates/project/ExampleEntity.cs.template +116 -116
- package/templates/project/ExampleEntityConfiguration.cs.template +64 -64
- package/templates/project/ExampleService.cs.template +146 -146
- package/templates/project/ExtensionsDbContext.cs.template +41 -41
- package/templates/project/IExtensionsDbContext.cs.template +22 -22
- package/templates/project/Program.cs.template +47 -47
- package/templates/project/README.md +79 -79
- package/templates/project/api.ts.template +12 -12
- package/templates/project/appsettings.json.template +170 -170
- package/templates/project/claude-settings.json.template +5 -5
- package/templates/project/test-frontend/msw/handlers.ts +58 -58
- package/templates/project/test-frontend/msw/server.ts +25 -25
- package/templates/project/test-frontend/setup.ts +16 -16
- package/templates/project/test-frontend/test-utils.tsx +59 -59
- package/templates/project/test-frontend/vitest.config.ts +31 -31
- package/templates/ralph/README.md +93 -93
- package/templates/ralph/ralph.config.yaml +113 -113
- package/templates/scripts/setup-ralph-loop.sh +173 -173
- package/templates/skills/_resources/config-safety.md +61 -61
- package/templates/skills/_resources/context-digest-template.md +53 -53
- package/templates/skills/_resources/doc-context-cache.md +60 -60
- package/templates/skills/_resources/docs-manifest-schema.md +155 -155
- package/templates/skills/_resources/formatting-guide.md +124 -124
- package/templates/skills/_resources/mcp-validate-documentation-spec.md +181 -181
- package/templates/skills/_shared.md +228 -228
- package/templates/skills/admin/SKILL.md +48 -48
- package/templates/skills/ai-prompt/SKILL.md +107 -107
- package/templates/skills/ai-prompt/steps/step-00-init.md +47 -47
- package/templates/skills/ai-prompt/steps/step-01-implementation.md +122 -122
- package/templates/skills/apex/SKILL.md +168 -168
- package/templates/skills/apex/_shared.md +141 -141
- package/templates/skills/apex/references/agent-teams-protocol.md +164 -164
- package/templates/skills/apex/references/analysis-methods.md +141 -141
- package/templates/skills/apex/references/challenge-questions.md +145 -145
- package/templates/skills/apex/references/code-generation.md +412 -412
- package/templates/skills/apex/references/core-seed-data.md +1437 -1437
- package/templates/skills/apex/references/error-classification.md +144 -144
- package/templates/skills/apex/references/examine-build-validation.md +82 -82
- package/templates/skills/apex/references/execution-frontend-gates.md +177 -177
- package/templates/skills/apex/references/execution-frontend-patterns.md +105 -105
- package/templates/skills/apex/references/execution-layer1-rules.md +96 -96
- package/templates/skills/apex/references/initialization-challenge-flow.md +110 -110
- package/templates/skills/apex/references/planning-layer-mapping.md +151 -151
- package/templates/skills/apex/references/post-checks.md +1584 -1584
- package/templates/skills/apex/references/smartstack-api.md +1053 -1053
- package/templates/skills/apex/references/smartstack-frontend.md +1571 -1571
- package/templates/skills/apex/references/smartstack-layers.md +402 -402
- package/templates/skills/apex/steps/step-00-init.md +307 -307
- package/templates/skills/apex/steps/step-01-analyze.md +165 -165
- package/templates/skills/apex/steps/step-02-plan.md +144 -144
- package/templates/skills/apex/steps/step-03-execute.md +328 -328
- package/templates/skills/apex/steps/step-04-examine.md +263 -263
- package/templates/skills/apex/steps/step-05-deep-review.md +129 -129
- package/templates/skills/apex/steps/step-06-resolve.md +101 -101
- package/templates/skills/apex/steps/step-07-tests.md +238 -238
- package/templates/skills/apex/steps/step-08-run-tests.md +125 -125
- package/templates/skills/application/SKILL.md +4 -4
- package/templates/skills/application/references/application-roles-template.md +227 -227
- package/templates/skills/application/references/backend-controller-hierarchy.md +58 -58
- package/templates/skills/application/references/backend-entity-seeding.md +72 -72
- package/templates/skills/application/references/backend-seeding-and-dto-output.md +83 -83
- package/templates/skills/application/references/backend-table-prefix-mapping.md +79 -79
- package/templates/skills/application/references/backend-verification.md +88 -88
- package/templates/skills/application/references/frontend-i18n-and-output.md +67 -67
- package/templates/skills/application/references/frontend-route-naming.md +117 -117
- package/templates/skills/application/references/frontend-route-wiring-app-tsx.md +107 -107
- package/templates/skills/application/references/frontend-verification.md +156 -156
- package/templates/skills/application/references/migration-checklist-troubleshooting.md +1 -1
- package/templates/skills/application/references/provider-template.md +177 -177
- package/templates/skills/application/references/roles-client-project-handling.md +55 -55
- package/templates/skills/application/references/roles-fallback-procedure.md +149 -149
- package/templates/skills/application/references/test-coverage-requirements.md +213 -213
- package/templates/skills/application/references/test-frontend.md +73 -73
- package/templates/skills/application/references/test-prerequisites.md +72 -72
- package/templates/skills/application/steps/step-05-frontend.md +176 -176
- package/templates/skills/application/steps/step-06-migration.md +193 -193
- package/templates/skills/application/steps/step-07-tests.md +356 -356
- package/templates/skills/application/steps/step-08-documentation.md +137 -137
- package/templates/skills/application/templates-backend.md +463 -463
- package/templates/skills/application/templates-frontend.md +685 -685
- package/templates/skills/application/templates-i18n.md +520 -520
- package/templates/skills/application/templates-seed.md +1096 -1096
- package/templates/skills/business-analyse/SKILL.md +327 -327
- package/templates/skills/business-analyse/_architecture.md +123 -123
- package/templates/skills/business-analyse/_elicitation.md +206 -206
- package/templates/skills/business-analyse/_module-loop.md +115 -115
- package/templates/skills/business-analyse/_shared.md +383 -383
- package/templates/skills/business-analyse/_suggestions.md +34 -34
- package/templates/skills/business-analyse/html/ba-interactive.html +4477 -4477
- package/templates/skills/business-analyse/html/build-html.js +77 -77
- package/templates/skills/business-analyse/html/src/scripts/01-data-init.js +150 -150
- package/templates/skills/business-analyse/html/src/scripts/02-navigation.js +227 -227
- package/templates/skills/business-analyse/html/src/scripts/03-render-cadrage.js +199 -199
- package/templates/skills/business-analyse/html/src/scripts/04-render-modules.js +205 -205
- package/templates/skills/business-analyse/html/src/scripts/05-render-specs.js +647 -647
- package/templates/skills/business-analyse/html/src/scripts/06-render-consolidation.js +195 -195
- package/templates/skills/business-analyse/html/src/scripts/07-render-handoff.js +92 -92
- package/templates/skills/business-analyse/html/src/scripts/08-editing.js +135 -135
- package/templates/skills/business-analyse/html/src/scripts/09-export.js +168 -168
- package/templates/skills/business-analyse/html/src/scripts/10-comments.js +171 -171
- package/templates/skills/business-analyse/html/src/scripts/11-review-panel.js +166 -166
- package/templates/skills/business-analyse/html/src/styles/01-variables.css +38 -38
- package/templates/skills/business-analyse/html/src/styles/02-layout.css +101 -101
- package/templates/skills/business-analyse/html/src/styles/03-navigation.css +120 -120
- package/templates/skills/business-analyse/html/src/styles/04-cards.css +196 -196
- package/templates/skills/business-analyse/html/src/styles/05-modules.css +454 -454
- package/templates/skills/business-analyse/html/src/styles/06-wireframes.css +272 -272
- package/templates/skills/business-analyse/html/src/styles/07-comments.css +184 -184
- package/templates/skills/business-analyse/html/src/styles/08-review-panel.css +241 -241
- package/templates/skills/business-analyse/html/src/template.html +516 -516
- package/templates/skills/business-analyse/patterns/suggestion-catalog.md +546 -546
- package/templates/skills/business-analyse/questionnaire/00-application.md +160 -160
- package/templates/skills/business-analyse/questionnaire/00b-project.md +85 -85
- package/templates/skills/business-analyse/questionnaire/01-context.md +185 -185
- package/templates/skills/business-analyse/questionnaire/02-stakeholders.md +189 -189
- package/templates/skills/business-analyse/questionnaire/03-scope.md +164 -164
- package/templates/skills/business-analyse/questionnaire/04-data.md +88 -88
- package/templates/skills/business-analyse/questionnaire/05-integrations.md +58 -58
- package/templates/skills/business-analyse/questionnaire/06-security.md +68 -68
- package/templates/skills/business-analyse/questionnaire/07-ui.md +76 -76
- package/templates/skills/business-analyse/questionnaire/08-performance.md +42 -42
- package/templates/skills/business-analyse/questionnaire/09-constraints.md +45 -45
- package/templates/skills/business-analyse/questionnaire/10-documentation.md +43 -43
- package/templates/skills/business-analyse/questionnaire/11-data-lifecycle.md +59 -59
- package/templates/skills/business-analyse/questionnaire/12-migration.md +58 -58
- package/templates/skills/business-analyse/questionnaire/13-cross-module.md +69 -69
- package/templates/skills/business-analyse/questionnaire/14-risk-assumptions.md +135 -135
- package/templates/skills/business-analyse/questionnaire/15-success-metrics.md +136 -136
- package/templates/skills/business-analyse/questionnaire.md +337 -337
- package/templates/skills/business-analyse/react/application-viewer.md +242 -242
- package/templates/skills/business-analyse/react/components.md +551 -551
- package/templates/skills/business-analyse/react/i18n-template.md +306 -306
- package/templates/skills/business-analyse/references/acceptance-criteria.md +169 -169
- package/templates/skills/business-analyse/references/agent-module-prompt.md +362 -362
- package/templates/skills/business-analyse/references/agent-pooling-best-practices.md +557 -557
- package/templates/skills/business-analyse/references/analysis-semantic-checks.md +190 -190
- package/templates/skills/business-analyse/references/cache-warming-strategy.md +566 -566
- package/templates/skills/business-analyse/references/cadrage-challenge-patterns.md +41 -41
- package/templates/skills/business-analyse/references/cadrage-coverage-matrix.md +74 -74
- package/templates/skills/business-analyse/references/cadrage-pre-analysis.md +115 -115
- package/templates/skills/business-analyse/references/cadrage-shared-modules.md +68 -69
- package/templates/skills/business-analyse/references/cadrage-structure-cards.md +85 -85
- package/templates/skills/business-analyse/references/compilation-structure-cards.md +297 -297
- package/templates/skills/business-analyse/references/consolidation-structural-checks.md +107 -107
- package/templates/skills/business-analyse/references/deploy-data-build.md +180 -180
- package/templates/skills/business-analyse/references/deploy-modes.md +118 -118
- package/templates/skills/business-analyse/references/detection-strategies.md +424 -424
- package/templates/skills/business-analyse/references/entity-architecture-decision.md +218 -218
- package/templates/skills/business-analyse/references/handoff-file-templates.md +120 -120
- package/templates/skills/business-analyse/references/handoff-mappings.md +81 -81
- package/templates/skills/business-analyse/references/handoff-seeddata-generation.md +312 -312
- package/templates/skills/business-analyse/references/html-data-mapping.md +299 -299
- package/templates/skills/business-analyse/references/init-schema-deployment.md +65 -65
- package/templates/skills/business-analyse/references/naming-conventions.md +243 -243
- package/templates/skills/business-analyse/references/prd-generation.md +258 -258
- package/templates/skills/business-analyse/references/review-data-mapping.md +363 -363
- package/templates/skills/business-analyse/references/robustness-checks.md +542 -542
- package/templates/skills/business-analyse/references/spec-auto-inference.md +111 -111
- package/templates/skills/business-analyse/references/team-orchestration.md +1022 -1022
- package/templates/skills/business-analyse/references/ui-dashboard-spec.md +85 -85
- package/templates/skills/business-analyse/references/ui-resource-cards.md +259 -259
- package/templates/skills/business-analyse/references/validate-incremental-html.md +121 -121
- package/templates/skills/business-analyse/references/validation-checklist.md +347 -347
- package/templates/skills/business-analyse/references/wireframe-svg-style-guide.md +335 -335
- package/templates/skills/business-analyse/schemas/application-schema.json +453 -453
- package/templates/skills/business-analyse/schemas/feature-schema.json +53 -53
- package/templates/skills/business-analyse/schemas/project-schema.json +485 -485
- package/templates/skills/business-analyse/schemas/sections/analysis-schema.json +201 -201
- package/templates/skills/business-analyse/schemas/sections/discovery-schema.json +82 -82
- package/templates/skills/business-analyse/schemas/sections/handoff-schema.json +80 -80
- package/templates/skills/business-analyse/schemas/sections/metadata-schema.json +70 -70
- package/templates/skills/business-analyse/schemas/sections/specification-schema.json +547 -547
- package/templates/skills/business-analyse/schemas/sections/validation-schema.json +93 -93
- package/templates/skills/business-analyse/schemas/shared/common-defs.json +226 -226
- package/templates/skills/business-analyse/steps/step-00-init.md +575 -576
- package/templates/skills/business-analyse/steps/step-01-cadrage.md +767 -767
- package/templates/skills/business-analyse/steps/step-01b-applications.md +419 -419
- package/templates/skills/business-analyse/steps/step-02-decomposition.md +387 -387
- package/templates/skills/business-analyse/steps/step-03a-data.md +16 -16
- package/templates/skills/business-analyse/steps/step-03a1-setup.md +506 -506
- package/templates/skills/business-analyse/steps/step-03a2-analysis.md +252 -252
- package/templates/skills/business-analyse/steps/step-03b-ui.md +425 -425
- package/templates/skills/business-analyse/steps/step-03c-compile.md +611 -611
- package/templates/skills/business-analyse/steps/step-03d-validate.md +783 -783
- package/templates/skills/business-analyse/steps/step-04-consolidation.md +17 -17
- package/templates/skills/business-analyse/steps/step-04a-collect.md +415 -415
- package/templates/skills/business-analyse/steps/step-04b-analyze.md +163 -163
- package/templates/skills/business-analyse/steps/step-04c-decide.md +186 -186
- package/templates/skills/business-analyse/steps/step-05a-handoff.md +840 -840
- package/templates/skills/business-analyse/steps/step-05b-deploy.md +522 -522
- package/templates/skills/business-analyse/steps/step-05c-ralph-readiness.md +703 -703
- package/templates/skills/business-analyse/steps/step-06-review.md +278 -278
- package/templates/skills/business-analyse/templates/tpl-frd.md +168 -168
- package/templates/skills/business-analyse/templates/tpl-handoff.md +186 -186
- package/templates/skills/business-analyse/templates/tpl-launch-displays.md +59 -59
- package/templates/skills/business-analyse/templates/tpl-progress.md +172 -172
- package/templates/skills/business-analyse/templates-frd.md +476 -476
- package/templates/skills/business-analyse/templates-react.md +574 -574
- package/templates/skills/cc-agent/SKILL.md +129 -129
- package/templates/skills/cc-agent/references/agent-behavior-patterns.md +95 -95
- package/templates/skills/cc-agent/references/agent-frontmatter.md +213 -213
- package/templates/skills/cc-agent/references/permission-modes.md +102 -102
- package/templates/skills/cc-agent/references/tools-reference.md +144 -144
- package/templates/skills/cc-agent/steps/step-00-init.md +134 -134
- package/templates/skills/cc-agent/steps/step-01-design.md +186 -186
- package/templates/skills/cc-agent/steps/step-02-generate.md +131 -131
- package/templates/skills/cc-agent/steps/step-03-validate.md +130 -130
- package/templates/skills/cc-agent/templates/agent-categorized.md +67 -67
- package/templates/skills/cc-agent/templates/agent-standalone.md +56 -56
- package/templates/skills/cc-agent/templates/agent-with-skills.md +94 -94
- package/templates/skills/cc-audit/SKILL.md +108 -108
- package/templates/skills/cc-audit/references/agent-checklist.md +91 -91
- package/templates/skills/cc-audit/references/hook-checklist.md +110 -110
- package/templates/skills/cc-audit/references/skill-checklist.md +70 -70
- package/templates/skills/cc-audit/steps/step-00-init.md +98 -98
- package/templates/skills/cc-audit/steps/step-01-scan.md +142 -142
- package/templates/skills/cc-audit/steps/step-02-analyze.md +158 -158
- package/templates/skills/cc-audit/steps/step-03-report.md +142 -142
- package/templates/skills/cc-skill/SKILL.md +134 -134
- package/templates/skills/cc-skill/references/best-practices.md +167 -167
- package/templates/skills/cc-skill/references/frontmatter-reference.md +182 -182
- package/templates/skills/cc-skill/references/skill-patterns.md +199 -199
- package/templates/skills/cc-skill/steps/step-00-init.md +119 -119
- package/templates/skills/cc-skill/steps/step-01-design.md +199 -199
- package/templates/skills/cc-skill/steps/step-02-generate.md +145 -145
- package/templates/skills/cc-skill/steps/step-03-steps.md +151 -151
- package/templates/skills/cc-skill/steps/step-04-validate.md +124 -124
- package/templates/skills/cc-skill/templates/skill-forked.md +85 -85
- package/templates/skills/cc-skill/templates/skill-progressive.md +102 -102
- package/templates/skills/cc-skill/templates/skill-simple.md +75 -75
- package/templates/skills/cc-skill/templates/step-template.md +82 -82
- package/templates/skills/check-version/SKILL.md +196 -196
- package/templates/skills/controller/SKILL.md +162 -162
- package/templates/skills/controller/postman-templates.md +614 -614
- package/templates/skills/controller/references/controller-code-templates.md +159 -159
- package/templates/skills/controller/references/mcp-scaffold-workflow.md +209 -209
- package/templates/skills/controller/references/permission-sync-templates.md +149 -149
- package/templates/skills/controller/steps/step-00-init.md +193 -191
- package/templates/skills/controller/steps/step-01-analyze.md +146 -146
- package/templates/skills/controller/steps/step-02-plan.md +176 -176
- package/templates/skills/controller/steps/step-03-generate.md +189 -189
- package/templates/skills/controller/steps/step-04-perms.md +80 -80
- package/templates/skills/controller/steps/step-05-validate.md +107 -107
- package/templates/skills/controller/templates.md +1555 -1555
- package/templates/skills/debug/SKILL.md +70 -70
- package/templates/skills/debug/references/team-protocol.md +232 -232
- package/templates/skills/debug/steps/step-00-init.md +57 -57
- package/templates/skills/debug/steps/step-01-analyze.md +219 -219
- package/templates/skills/debug/steps/step-02-resolve.md +85 -85
- package/templates/skills/documentation/SKILL.md +132 -132
- package/templates/skills/documentation/data-schema.md +227 -227
- package/templates/skills/documentation/steps/step-00-init.md +70 -70
- package/templates/skills/documentation/steps/step-01-scan.md +113 -113
- package/templates/skills/documentation/steps/step-02-generate.md +231 -231
- package/templates/skills/documentation/steps/step-03-validate.md +251 -238
- package/templates/skills/documentation/templates.md +662 -663
- package/templates/skills/efcore/SKILL.md +168 -167
- package/templates/skills/efcore/references/both-contexts.md +32 -32
- package/templates/skills/efcore/references/database-operations.md +67 -67
- package/templates/skills/efcore/references/destructive-operations.md +38 -38
- package/templates/skills/efcore/references/reset-operations.md +81 -81
- package/templates/skills/efcore/references/seed-methods.md +86 -86
- package/templates/skills/efcore/references/shared-init-functions.md +250 -250
- package/templates/skills/efcore/references/sql-objects-injection.md +61 -61
- package/templates/skills/efcore/references/troubleshooting.md +81 -81
- package/templates/skills/efcore/references/zero-downtime-patterns.md +227 -227
- package/templates/skills/efcore/steps/db/step-deploy.md +217 -217
- package/templates/skills/efcore/steps/db/step-reset.md +186 -186
- package/templates/skills/efcore/steps/db/step-seed.md +166 -166
- package/templates/skills/efcore/steps/db/step-status.md +173 -173
- package/templates/skills/efcore/steps/migration/step-00-init.md +102 -102
- package/templates/skills/efcore/steps/migration/step-01-check.md +164 -164
- package/templates/skills/efcore/steps/migration/step-02-create.md +160 -160
- package/templates/skills/efcore/steps/migration/step-03-validate.md +168 -168
- package/templates/skills/efcore/steps/rebase-snapshot/step-00-init.md +173 -173
- package/templates/skills/efcore/steps/rebase-snapshot/step-01-backup.md +100 -100
- package/templates/skills/efcore/steps/rebase-snapshot/step-02-fetch.md +115 -115
- package/templates/skills/efcore/steps/rebase-snapshot/step-03-create.md +112 -112
- package/templates/skills/efcore/steps/rebase-snapshot/step-04-validate.md +157 -157
- package/templates/skills/efcore/steps/shared/step-00-init.md +131 -131
- package/templates/skills/efcore/steps/squash/step-00-init.md +141 -141
- package/templates/skills/efcore/steps/squash/step-01-backup.md +120 -120
- package/templates/skills/efcore/steps/squash/step-02-fetch.md +168 -168
- package/templates/skills/efcore/steps/squash/step-03-create.md +184 -184
- package/templates/skills/efcore/steps/squash/step-04-validate.md +174 -174
- package/templates/skills/explore/SKILL.md +98 -98
- package/templates/skills/feature-full/SKILL.md +111 -111
- package/templates/skills/feature-full/steps/step-00-init.md +57 -57
- package/templates/skills/feature-full/steps/step-01-implementation.md +120 -120
- package/templates/skills/gitflow/SKILL.md +377 -377
- package/templates/skills/gitflow/_shared.md +620 -620
- package/templates/skills/gitflow/phases/abort.md +189 -189
- package/templates/skills/gitflow/phases/cleanup.md +234 -234
- package/templates/skills/gitflow/phases/status.md +192 -192
- package/templates/skills/gitflow/references/commit-message-generation.md +58 -58
- package/templates/skills/gitflow/references/commit-migration-validation.md +49 -49
- package/templates/skills/gitflow/references/finish-cleanup.md +55 -55
- package/templates/skills/gitflow/references/finish-version-bumping.md +45 -45
- package/templates/skills/gitflow/references/init-config-template.md +135 -135
- package/templates/skills/gitflow/references/init-environment-detection.md +41 -41
- package/templates/skills/gitflow/references/init-name-normalization.md +103 -103
- package/templates/skills/gitflow/references/init-questions.md +185 -185
- package/templates/skills/gitflow/references/init-structure-creation.md +75 -75
- package/templates/skills/gitflow/references/init-version-detection.md +21 -21
- package/templates/skills/gitflow/references/init-workspace-detection.md +43 -43
- package/templates/skills/gitflow/references/merge-ci-status.md +36 -36
- package/templates/skills/gitflow/references/merge-execution.md +62 -62
- package/templates/skills/gitflow/references/merge-pr-context.md +76 -76
- package/templates/skills/gitflow/references/plan-template.md +69 -69
- package/templates/skills/gitflow/references/pr-build-checks.md +60 -60
- package/templates/skills/gitflow/references/pr-generation.md +58 -58
- package/templates/skills/gitflow/references/start-branch-normalization.md +28 -28
- package/templates/skills/gitflow/references/start-efcore-preflight.md +70 -70
- package/templates/skills/gitflow/references/start-local-config.md +113 -113
- package/templates/skills/gitflow/references/start-worktree-creation.md +50 -50
- package/templates/skills/gitflow/references/sync-push-verify.md +44 -44
- package/templates/skills/gitflow/references/sync-rebase-conflicts.md +38 -38
- package/templates/skills/gitflow/steps/step-commit.md +199 -199
- package/templates/skills/gitflow/steps/step-finish.md +147 -147
- package/templates/skills/gitflow/steps/step-init.md +190 -190
- package/templates/skills/gitflow/steps/step-merge.md +85 -85
- package/templates/skills/gitflow/steps/step-plan.md +151 -151
- package/templates/skills/gitflow/steps/step-pr.md +199 -199
- package/templates/skills/gitflow/steps/step-start.md +195 -195
- package/templates/skills/gitflow/steps/step-sync.md +161 -161
- package/templates/skills/gitflow/templates/config.json +72 -72
- package/templates/skills/mcp/SKILL.md +62 -62
- package/templates/skills/mcp/steps/step-01-healthcheck.md +108 -108
- package/templates/skills/mcp/steps/step-02-tools.md +73 -73
- package/templates/skills/notification/SKILL.md +173 -173
- package/templates/skills/quick-search/SKILL.md +99 -99
- package/templates/skills/ralph-loop/SKILL.md +234 -234
- package/templates/skills/ralph-loop/references/category-completeness.md +185 -185
- package/templates/skills/ralph-loop/references/category-rules.md +96 -96
- package/templates/skills/ralph-loop/references/compact-loop.md +300 -300
- package/templates/skills/ralph-loop/references/init-resume-recovery.md +127 -127
- package/templates/skills/ralph-loop/references/module-transition.md +151 -151
- package/templates/skills/ralph-loop/references/multi-module-queue.md +171 -171
- package/templates/skills/ralph-loop/references/parallel-execution.md +246 -246
- package/templates/skills/ralph-loop/references/section-splitting.md +439 -439
- package/templates/skills/ralph-loop/references/task-transform-legacy.md +256 -256
- package/templates/skills/ralph-loop/references/team-orchestration.md +547 -547
- package/templates/skills/ralph-loop/steps/step-00-init.md +150 -150
- package/templates/skills/ralph-loop/steps/step-01-task.md +174 -174
- package/templates/skills/ralph-loop/steps/step-02-execute.md +177 -177
- package/templates/skills/ralph-loop/steps/step-03-commit.md +92 -92
- package/templates/skills/ralph-loop/steps/step-04-check.md +207 -207
- package/templates/skills/ralph-loop/steps/step-05-report.md +175 -175
- package/templates/skills/refactor/SKILL.md +56 -56
- package/templates/skills/refactor/steps/step-01-discover.md +60 -60
- package/templates/skills/refactor/steps/step-02-execute.md +67 -67
- package/templates/skills/review-code/SKILL.md +95 -94
- package/templates/skills/review-code/references/clean-code-principles.md +292 -292
- package/templates/skills/review-code/references/code-quality-metrics.md +174 -174
- package/templates/skills/review-code/references/feedback-patterns.md +149 -149
- package/templates/skills/review-code/references/owasp-api-top10.md +243 -243
- package/templates/skills/review-code/references/security-checklist.md +212 -212
- package/templates/skills/review-code/steps/step-01-smartstack.md +96 -96
- package/templates/skills/review-code/steps/step-02-detailed-review.md +80 -80
- package/templates/skills/review-code/steps/step-03-react.md +44 -44
- package/templates/skills/ui-components/SKILL.md +137 -137
- package/templates/skills/ui-components/accessibility.md +170 -170
- package/templates/skills/ui-components/patterns/dashboard-chart.md +327 -327
- package/templates/skills/ui-components/patterns/data-table.md +39 -39
- package/templates/skills/ui-components/patterns/entity-card.md +77 -77
- package/templates/skills/ui-components/patterns/grid-layout.md +91 -91
- package/templates/skills/ui-components/patterns/kanban.md +43 -43
- package/templates/skills/ui-components/responsive-guidelines.md +278 -278
- package/templates/skills/ui-components/style-guide.md +113 -113
- package/templates/skills/utils/SKILL.md +44 -44
- package/templates/skills/utils/subcommands/test-web-config.md +152 -152
- package/templates/skills/utils/subcommands/test-web.md +123 -123
- package/templates/skills/validate/SKILL.md +181 -181
- package/templates/skills/validate-feature/SKILL.md +101 -101
- package/templates/skills/validate-feature/references/api-smoke-tests.md +140 -140
- package/templates/skills/validate-feature/references/db-validation-checks.md +180 -180
- package/templates/skills/validate-feature/steps/step-00-dependencies.md +121 -121
- package/templates/skills/validate-feature/steps/step-01-compile.md +39 -39
- package/templates/skills/validate-feature/steps/step-02-unit-tests.md +45 -45
- package/templates/skills/validate-feature/steps/step-03-integration-tests.md +53 -53
- package/templates/skills/validate-feature/steps/step-04-api-smoke.md +94 -94
- package/templates/skills/validate-feature/steps/step-05-db-validation.md +149 -149
- package/templates/skills/workflow/SKILL.md +127 -127
- package/templates/skills/workflow/steps/step-00-init.md +57 -57
- package/templates/skills/workflow/steps/step-01-implementation.md +84 -84
- package/templates/test-web/api-health.json +38 -38
- package/templates/test-web/minimal.json +19 -19
- package/templates/test-web/npm-package.json +46 -46
- package/templates/test-web/seo-check.json +54 -54
|
@@ -1,663 +1,662 @@
|
|
|
1
|
-
# Templates de Documentation SmartStack
|
|
2
|
-
|
|
3
|
-
> **Objectif:** Documentation lisible par un metier, pas seulement par des developpeurs.
|
|
4
|
-
> Chaque module doit repondre a: "Qu'est-ce que ca m'apporte ?"
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## STRUCTURE OBLIGATOIRE (Type: user)
|
|
9
|
-
|
|
10
|
-
Chaque documentation de module DOIT inclure ces sections dans cet ordre:
|
|
11
|
-
|
|
12
|
-
| # | Section | Objectif | Public cible |
|
|
13
|
-
|---|---------|----------|--------------|
|
|
14
|
-
| 1 | **Valeur Metier** | Pourquoi cette fonctionnalite existe (probleme + solution) | Decideurs, Managers |
|
|
15
|
-
| 2 | **Acces** | Navigation breadcrumb + URL | Utilisateurs |
|
|
16
|
-
| 3 | **Apercu de l'interface** | **Mock UI annote** reproduisant la page reelle | Utilisateurs |
|
|
17
|
-
| 4 | **Formulaire de creation** | **Mock UI annote** du formulaire de creation | Utilisateurs |
|
|
18
|
-
| 5 | **Vue detail** | **Mock UI annote** de la vue detail/edition | Utilisateurs |
|
|
19
|
-
| 6 | **Cas d'usage** | Exemples concrets avec personas | Utilisateurs finaux |
|
|
20
|
-
| 7 | **Fonctionnalites** | Liste detaillee des capacites avec exemples | Utilisateurs |
|
|
21
|
-
| 8 | **FAQ** | Questions non-techniques | Tous |
|
|
22
|
-
| 9 | **Reference technique** | Permissions, API, regles metier (collapsible) | Admins |
|
|
23
|
-
|
|
24
|
-
> **SUPPRIME:** Les sections "Benefices" et "Avant/Apres" ne sont plus incluses.
|
|
25
|
-
> Ce n'est pas un document de vente, mais une documentation utilisateur.
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## REGLE FONDAMENTALE: Lire la vraie page AVANT de generer
|
|
30
|
-
|
|
31
|
-
> **OBLIGATOIRE:** Avant de generer le Mock UI, lire le composant TSX de la vraie page
|
|
32
|
-
> (ex: `TenantsTemplatePage.tsx`, `UsersPage.tsx`). Le Mock UI doit reproduire
|
|
33
|
-
> fidelement l'interface reelle, PAS une interface generique avec des KPI/tables.
|
|
34
|
-
>
|
|
35
|
-
> - Si la vraie page affiche 2 cartes template → le Mock UI montre 2 cartes template
|
|
36
|
-
> - Si la vraie page est un tableau de gestion → le Mock UI montre un tableau
|
|
37
|
-
> - Si la vraie page est un Kanban → le Mock UI montre un Kanban
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## Mock UI TSX Approach (TYPE: user — PRIMARY)
|
|
42
|
-
|
|
43
|
-
> **Principe:** Pour les docs de type `user`, generer un **composant TSX autonome** (~400-600 lignes)
|
|
44
|
-
> avec des Mock UI **annotes** qui reproduisent fidelement les vraies pages
|
|
45
|
-
> de l'application. Chaque Mock UI est suivi d'annotations explicatives.
|
|
46
|
-
>
|
|
47
|
-
> **IMPORTANT:** NE PAS utiliser DocRenderer pour le type `user`. Generer un TSX standalone.
|
|
48
|
-
|
|
49
|
-
### Fichiers a generer par module
|
|
50
|
-
|
|
51
|
-
**1. Page TSX** (`index.tsx`, ~400-600 lignes) : Composant autonome avec Mock UI annotes.
|
|
52
|
-
|
|
53
|
-
**2. i18n dans les 4 langues** : FR (source), EN, DE, IT. Tous les fichiers sont generes.
|
|
54
|
-
|
|
55
|
-
### i18n JSON : Structure PLATE (pas de cle racine)
|
|
56
|
-
|
|
57
|
-
> **IMPORTANT:** Pour les pages standalone (type `user`), le JSON i18n doit etre **PLAT** (pas de cle racine).
|
|
58
|
-
> `useTranslation('docsAdministrationTenantsTemplate')` + `t('title')` resout en
|
|
59
|
-
> `docsAdministrationTenantsTemplate.title`. Si le JSON a une cle racine, ca devient
|
|
60
|
-
> `docsAdministrationTenantsTemplate.docsAdministrationTenantsTemplate.title` → ERREUR.
|
|
61
|
-
|
|
62
|
-
```json
|
|
63
|
-
// CORRECT pour standalone (type user) - JSON PLAT :
|
|
64
|
-
{
|
|
65
|
-
"title": "Templates de Tenant",
|
|
66
|
-
"subtitle": "Description...",
|
|
67
|
-
"sections": { "businessValue": "Pourquoi ce module ?" }
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// INCORRECT pour standalone :
|
|
71
|
-
{
|
|
72
|
-
"docsAdministrationTenantsTemplate": {
|
|
73
|
-
"title": "Templates de Tenant"
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// CORRECT pour DocRenderer (type developer/database/testing) - AVEC cle racine :
|
|
78
|
-
{
|
|
79
|
-
"docsAdministrationUsers": {
|
|
80
|
-
"overview": { "objective": "..." }
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
## DocRenderer Approach (TYPE: developer|database|testing)
|
|
88
|
-
|
|
89
|
-
> **Usage:** Pour les docs `developer`, `database`, et `testing` uniquement.
|
|
90
|
-
> Genere un fichier de DONNEES (`doc-data.ts`, ~50 lignes) + un wrapper minimal.
|
|
91
|
-
> Le rendu est assure par le composant partage `DocRenderer` dans `web/.../components/docs/`.
|
|
92
|
-
> Voir [data-schema.md](data-schema.md) pour le mapping complet.
|
|
93
|
-
|
|
94
|
-
### Fichiers a generer par module
|
|
95
|
-
|
|
96
|
-
**1. Data file** (`doc-data.ts`) : Voir [data-schema.md](data-schema.md) pour le mapping complet.
|
|
97
|
-
|
|
98
|
-
**2. Page wrapper** (`index.tsx`, ~10 lignes) :
|
|
99
|
-
```tsx
|
|
100
|
-
import { DocRenderer } from '@/components/docs';
|
|
101
|
-
import { docData } from './doc-data';
|
|
102
|
-
|
|
103
|
-
export default function {ModuleName}DocPage() {
|
|
104
|
-
return <DocRenderer data={docData} backPath="/docs/business/{app}" />;
|
|
105
|
-
}
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
## Composant Helper: Annotation
|
|
111
|
-
|
|
112
|
-
> **OBLIGATOIRE** pour chaque section Mock UI. Un Mock sans explication ne sert a rien.
|
|
113
|
-
|
|
114
|
-
```tsx
|
|
115
|
-
import { Info } from 'lucide-react';
|
|
116
|
-
|
|
117
|
-
function Annotation({ text }: { text: string }) {
|
|
118
|
-
return (
|
|
119
|
-
<div className="flex items-start gap-2 p-2.5 rounded-lg bg-blue-500/5 border border-blue-500/15 text-sm text-blue-700 dark:text-blue-400">
|
|
120
|
-
<Info className="w-4 h-4 mt-0.5 flex-shrink-0" />
|
|
121
|
-
<span>{text}</span>
|
|
122
|
-
</div>
|
|
123
|
-
);
|
|
124
|
-
}
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
**Utilisation:** Apres chaque bloc Mock UI, ajouter un `<div className="space-y-2 mt-4">` contenant
|
|
128
|
-
les `<Annotation text={t('section.annotations.key')} />` pour chaque element visuel.
|
|
129
|
-
|
|
130
|
-
### Exemple d'annotation apres un Mock UI
|
|
131
|
-
|
|
132
|
-
```tsx
|
|
133
|
-
{/* Mock UI card ici */}
|
|
134
|
-
<div className="card p-6">...</div>
|
|
135
|
-
|
|
136
|
-
{/* Annotations explicatives */}
|
|
137
|
-
<div className="space-y-2 mt-4">
|
|
138
|
-
<Annotation text={t('interface.annotations.icon')} />
|
|
139
|
-
<Annotation text={t('interface.annotations.title')} />
|
|
140
|
-
<Annotation text={t('interface.annotations.code')} />
|
|
141
|
-
<Annotation text={t('interface.annotations.defaultBadge')} />
|
|
142
|
-
<Annotation text={t('interface.annotations.cta')} />
|
|
143
|
-
</div>
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## Template TSX Mock UI (TYPE: user)
|
|
149
|
-
|
|
150
|
-
```tsx
|
|
151
|
-
// web/smartstack-web/src/pages/docs/business/{application}/{module}/index.tsx
|
|
152
|
-
|
|
153
|
-
import { Link } from 'react-router-dom';
|
|
154
|
-
import { useTranslation } from 'react-i18next';
|
|
155
|
-
import {
|
|
156
|
-
ArrowLeft,
|
|
157
|
-
Info,
|
|
158
|
-
Target,
|
|
159
|
-
Lightbulb,
|
|
160
|
-
Users,
|
|
161
|
-
Zap,
|
|
162
|
-
ChevronDown,
|
|
163
|
-
// + icones specifiques au module
|
|
164
|
-
} from 'lucide-react';
|
|
165
|
-
|
|
166
|
-
// ═══════════════════════════════════════════════════
|
|
167
|
-
// Helper: Annotation (obligatoire pour chaque Mock UI)
|
|
168
|
-
// ═══════════════════════════════════════════════════
|
|
169
|
-
function Annotation({ text }: { text: string }) {
|
|
170
|
-
return (
|
|
171
|
-
<div className="flex items-start gap-2 p-2.5 rounded-lg bg-blue-500/5 border border-blue-500/15 text-sm text-blue-700 dark:text-blue-400">
|
|
172
|
-
<Info className="w-4 h-4 mt-0.5 flex-shrink-0" />
|
|
173
|
-
<span>{text}</span>
|
|
174
|
-
</div>
|
|
175
|
-
);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
// ═══════════════════════════════════════════════════
|
|
179
|
-
// Data: API Endpoints (extraits du vrai controller)
|
|
180
|
-
// ═══════════════════════════════════════════════════
|
|
181
|
-
const apiEndpoints = [
|
|
182
|
-
// Remplir avec les vrais endpoints du controller
|
|
183
|
-
{ method: 'GET', path: '/api/...', handler: 'GetAll', permission: '...' },
|
|
184
|
-
];
|
|
185
|
-
|
|
186
|
-
// ═══════════════════════════════════════════════════
|
|
187
|
-
// Data: Business Rules (extraites du domain/tests)
|
|
188
|
-
// ═══════════════════════════════════════════════════
|
|
189
|
-
const businessRules = [
|
|
190
|
-
// Remplir avec les vraies regles metier
|
|
191
|
-
{ id: 'BR-001', rule: '...' },
|
|
192
|
-
];
|
|
193
|
-
|
|
194
|
-
export default function {Module}DocPage() {
|
|
195
|
-
const { t } = useTranslation('docsAdministration{Module}');
|
|
196
|
-
|
|
197
|
-
return (
|
|
198
|
-
<div className="space-y-8 max-w-5xl mx-auto pb-12">
|
|
199
|
-
{/* BREADCRUMB + BACK */}
|
|
200
|
-
<div>
|
|
201
|
-
<Link to="/docs/business/
|
|
202
|
-
className="inline-flex items-center gap-1.5 text-sm text-[var(--text-secondary)] hover:text-[var(--color-primary-600)] mb-4">
|
|
203
|
-
<ArrowLeft className="w-4 h-4" />
|
|
204
|
-
{t('nav.backToParent')}
|
|
205
|
-
</Link>
|
|
206
|
-
</div>
|
|
207
|
-
|
|
208
|
-
{/* HEADER */}
|
|
209
|
-
<div>
|
|
210
|
-
<h1 className="text-3xl font-bold mb-4 flex items-center gap-3">
|
|
211
|
-
<ModuleIcon className="w-8 h-8 text-[var(--color-primary-600)]" />
|
|
212
|
-
{t('title')}
|
|
213
|
-
</h1>
|
|
214
|
-
<p className="text-xl text-[var(--color-primary-600)] font-medium mb-2">
|
|
215
|
-
{t('valueProposition')}
|
|
216
|
-
</p>
|
|
217
|
-
<p className="text-lg text-[var(--text-secondary)]">
|
|
218
|
-
{t('subtitle')}
|
|
219
|
-
</p>
|
|
220
|
-
</div>
|
|
221
|
-
|
|
222
|
-
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
223
|
-
{/* SECTION 1: VALEUR METIER - Pourquoi ca existe ? */}
|
|
224
|
-
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
225
|
-
<section id="valeur" className="scroll-mt-4">
|
|
226
|
-
<h2 className="text-2xl font-bold mb-4 flex items-center gap-2">
|
|
227
|
-
<span className="w-8 h-8 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center text-sm">1</span>
|
|
228
|
-
{t('sections.businessValue')}
|
|
229
|
-
</h2>
|
|
230
|
-
|
|
231
|
-
<div className="card p-6">
|
|
232
|
-
<div className="mb-6">
|
|
233
|
-
<h3 className="font-semibold mb-3 flex items-center gap-2">
|
|
234
|
-
<Target className="w-5 h-5 text-red-500" />
|
|
235
|
-
{t('sections.problem')}
|
|
236
|
-
</h3>
|
|
237
|
-
<p className="text-[var(--text-secondary)]">{t('problem')}</p>
|
|
238
|
-
</div>
|
|
239
|
-
|
|
240
|
-
<div className="p-4 rounded-lg bg-green-500/10 border border-green-500/20">
|
|
241
|
-
<h3 className="font-semibold mb-2 flex items-center gap-2 text-green-700">
|
|
242
|
-
<Lightbulb className="w-5 h-5" />
|
|
243
|
-
{t('sections.solution')}
|
|
244
|
-
</h3>
|
|
245
|
-
<p className="text-[var(--text-secondary)]">{t('solution')}</p>
|
|
246
|
-
</div>
|
|
247
|
-
</div>
|
|
248
|
-
</section>
|
|
249
|
-
|
|
250
|
-
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
251
|
-
{/* SECTION 2: ACCES - Navigation */}
|
|
252
|
-
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
253
|
-
<section id="acces" className="scroll-mt-4">
|
|
254
|
-
<h2 className="text-2xl font-bold mb-4 flex items-center gap-2">
|
|
255
|
-
<span className="w-8 h-8 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center text-sm">2</span>
|
|
256
|
-
{t('sections.access')}
|
|
257
|
-
</h2>
|
|
258
|
-
<div className="card p-6">
|
|
259
|
-
{/* Breadcrumb de navigation et URL */}
|
|
260
|
-
<div className="flex items-center gap-2 text-sm">
|
|
261
|
-
<span>
|
|
262
|
-
<span>
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
{/*
|
|
272
|
-
{/*
|
|
273
|
-
{/*
|
|
274
|
-
{/*
|
|
275
|
-
{/*
|
|
276
|
-
{/*
|
|
277
|
-
{/*
|
|
278
|
-
{/*
|
|
279
|
-
{/* -
|
|
280
|
-
{/* -
|
|
281
|
-
{/*
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
<Annotation text={t('interface.annotations.
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
{/*
|
|
303
|
-
{/*
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
<Annotation text={t('form.annotations.
|
|
332
|
-
<Annotation text={t('form.annotations.
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
{/*
|
|
338
|
-
{/*
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
<Annotation text={t('detail.annotations.
|
|
357
|
-
<Annotation text={t('detail.annotations.
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
{/*
|
|
363
|
-
{/*
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
<div className="
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
<
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
<
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
{/*
|
|
399
|
-
{/*
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
<
|
|
416
|
-
<
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
{/*
|
|
429
|
-
{/*
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
{/*
|
|
453
|
-
{/*
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
<
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
<th className="text-left py-2 px-3
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
<td className="py-2 px-3
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
<
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
<th className="text-left py-2 px-3">
|
|
494
|
-
<th className="text-left py-2 px-3">
|
|
495
|
-
<th className="text-left py-2 px-3">
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
ep.method === '
|
|
505
|
-
ep.method === '
|
|
506
|
-
ep.method === '
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
</td>
|
|
511
|
-
<td className="py-2 px-3
|
|
512
|
-
<td className="py-2 px-3
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
>
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
{
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
"
|
|
544
|
-
"
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
"
|
|
549
|
-
"
|
|
550
|
-
"
|
|
551
|
-
"
|
|
552
|
-
"
|
|
553
|
-
"
|
|
554
|
-
"
|
|
555
|
-
"
|
|
556
|
-
"
|
|
557
|
-
"
|
|
558
|
-
"
|
|
559
|
-
"
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
"
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
"
|
|
572
|
-
|
|
573
|
-
"
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
"
|
|
580
|
-
"
|
|
581
|
-
"
|
|
582
|
-
"
|
|
583
|
-
|
|
584
|
-
"
|
|
585
|
-
"
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
"
|
|
592
|
-
|
|
593
|
-
"
|
|
594
|
-
"
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
"
|
|
602
|
-
"
|
|
603
|
-
"
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
"
|
|
611
|
-
"
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
"
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
"
|
|
625
|
-
"
|
|
626
|
-
|
|
627
|
-
"BR-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
- [ ] **
|
|
641
|
-
- [ ] **
|
|
642
|
-
- [ ] **Mock UI Section
|
|
643
|
-
- [ ] **Mock UI Section
|
|
644
|
-
- [ ] **
|
|
645
|
-
- [ ] **
|
|
646
|
-
- [ ] **
|
|
647
|
-
- [ ] **
|
|
648
|
-
- [ ] **
|
|
649
|
-
- [ ] **5
|
|
650
|
-
- [ ] **
|
|
651
|
-
- [ ] **
|
|
652
|
-
- [ ] **
|
|
653
|
-
- [ ] **i18n**
|
|
654
|
-
- [ ] **
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
(voir le contenu precedent pour ces templates)
|
|
1
|
+
# Templates de Documentation SmartStack
|
|
2
|
+
|
|
3
|
+
> **Objectif:** Documentation lisible par un metier, pas seulement par des developpeurs.
|
|
4
|
+
> Chaque module doit repondre a: "Qu'est-ce que ca m'apporte ?"
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## STRUCTURE OBLIGATOIRE (Type: user)
|
|
9
|
+
|
|
10
|
+
Chaque documentation de module DOIT inclure ces sections dans cet ordre:
|
|
11
|
+
|
|
12
|
+
| # | Section | Objectif | Public cible |
|
|
13
|
+
|---|---------|----------|--------------|
|
|
14
|
+
| 1 | **Valeur Metier** | Pourquoi cette fonctionnalite existe (probleme + solution) | Decideurs, Managers |
|
|
15
|
+
| 2 | **Acces** | Navigation breadcrumb + URL | Utilisateurs |
|
|
16
|
+
| 3 | **Apercu de l'interface** | **Mock UI annote** reproduisant la page reelle | Utilisateurs |
|
|
17
|
+
| 4 | **Formulaire de creation** | **Mock UI annote** du formulaire de creation | Utilisateurs |
|
|
18
|
+
| 5 | **Vue detail** | **Mock UI annote** de la vue detail/edition | Utilisateurs |
|
|
19
|
+
| 6 | **Cas d'usage** | Exemples concrets avec personas | Utilisateurs finaux |
|
|
20
|
+
| 7 | **Fonctionnalites** | Liste detaillee des capacites avec exemples | Utilisateurs |
|
|
21
|
+
| 8 | **FAQ** | Questions non-techniques | Tous |
|
|
22
|
+
| 9 | **Reference technique** | Permissions, API, regles metier (collapsible) | Admins |
|
|
23
|
+
|
|
24
|
+
> **SUPPRIME:** Les sections "Benefices" et "Avant/Apres" ne sont plus incluses.
|
|
25
|
+
> Ce n'est pas un document de vente, mais une documentation utilisateur.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## REGLE FONDAMENTALE: Lire la vraie page AVANT de generer
|
|
30
|
+
|
|
31
|
+
> **OBLIGATOIRE:** Avant de generer le Mock UI, lire le composant TSX de la vraie page
|
|
32
|
+
> (ex: `TenantsTemplatePage.tsx`, `UsersPage.tsx`). Le Mock UI doit reproduire
|
|
33
|
+
> fidelement l'interface reelle, PAS une interface generique avec des KPI/tables.
|
|
34
|
+
>
|
|
35
|
+
> - Si la vraie page affiche 2 cartes template → le Mock UI montre 2 cartes template
|
|
36
|
+
> - Si la vraie page est un tableau de gestion → le Mock UI montre un tableau
|
|
37
|
+
> - Si la vraie page est un Kanban → le Mock UI montre un Kanban
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Mock UI TSX Approach (TYPE: user — PRIMARY)
|
|
42
|
+
|
|
43
|
+
> **Principe:** Pour les docs de type `user`, generer un **composant TSX autonome** (~400-600 lignes)
|
|
44
|
+
> avec des Mock UI **annotes** qui reproduisent fidelement les vraies pages
|
|
45
|
+
> de l'application. Chaque Mock UI est suivi d'annotations explicatives.
|
|
46
|
+
>
|
|
47
|
+
> **IMPORTANT:** NE PAS utiliser DocRenderer pour le type `user`. Generer un TSX standalone.
|
|
48
|
+
|
|
49
|
+
### Fichiers a generer par module
|
|
50
|
+
|
|
51
|
+
**1. Page TSX** (`index.tsx`, ~400-600 lignes) : Composant autonome avec Mock UI annotes.
|
|
52
|
+
|
|
53
|
+
**2. i18n dans les 4 langues** : FR (source), EN, DE, IT. Tous les fichiers sont generes.
|
|
54
|
+
|
|
55
|
+
### i18n JSON : Structure PLATE (pas de cle racine)
|
|
56
|
+
|
|
57
|
+
> **IMPORTANT:** Pour les pages standalone (type `user`), le JSON i18n doit etre **PLAT** (pas de cle racine).
|
|
58
|
+
> `useTranslation('docsAdministrationTenantsTemplate')` + `t('title')` resout en
|
|
59
|
+
> `docsAdministrationTenantsTemplate.title`. Si le JSON a une cle racine, ca devient
|
|
60
|
+
> `docsAdministrationTenantsTemplate.docsAdministrationTenantsTemplate.title` → ERREUR.
|
|
61
|
+
|
|
62
|
+
```json
|
|
63
|
+
// CORRECT pour standalone (type user) - JSON PLAT :
|
|
64
|
+
{
|
|
65
|
+
"title": "Templates de Tenant",
|
|
66
|
+
"subtitle": "Description...",
|
|
67
|
+
"sections": { "businessValue": "Pourquoi ce module ?" }
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// INCORRECT pour standalone :
|
|
71
|
+
{
|
|
72
|
+
"docsAdministrationTenantsTemplate": {
|
|
73
|
+
"title": "Templates de Tenant"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// CORRECT pour DocRenderer (type developer/database/testing) - AVEC cle racine :
|
|
78
|
+
{
|
|
79
|
+
"docsAdministrationUsers": {
|
|
80
|
+
"overview": { "objective": "..." }
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## DocRenderer Approach (TYPE: developer|database|testing)
|
|
88
|
+
|
|
89
|
+
> **Usage:** Pour les docs `developer`, `database`, et `testing` uniquement.
|
|
90
|
+
> Genere un fichier de DONNEES (`doc-data.ts`, ~50 lignes) + un wrapper minimal.
|
|
91
|
+
> Le rendu est assure par le composant partage `DocRenderer` dans `web/.../components/docs/`.
|
|
92
|
+
> Voir [data-schema.md](data-schema.md) pour le mapping complet.
|
|
93
|
+
|
|
94
|
+
### Fichiers a generer par module
|
|
95
|
+
|
|
96
|
+
**1. Data file** (`doc-data.ts`) : Voir [data-schema.md](data-schema.md) pour le mapping complet.
|
|
97
|
+
|
|
98
|
+
**2. Page wrapper** (`index.tsx`, ~10 lignes) :
|
|
99
|
+
```tsx
|
|
100
|
+
import { DocRenderer } from '@/components/docs';
|
|
101
|
+
import { docData } from './doc-data';
|
|
102
|
+
|
|
103
|
+
export default function {ModuleName}DocPage() {
|
|
104
|
+
return <DocRenderer data={docData} backPath="/docs/business/{app}" />;
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Composant Helper: Annotation
|
|
111
|
+
|
|
112
|
+
> **OBLIGATOIRE** pour chaque section Mock UI. Un Mock sans explication ne sert a rien.
|
|
113
|
+
|
|
114
|
+
```tsx
|
|
115
|
+
import { Info } from 'lucide-react';
|
|
116
|
+
|
|
117
|
+
function Annotation({ text }: { text: string }) {
|
|
118
|
+
return (
|
|
119
|
+
<div className="flex items-start gap-2 p-2.5 rounded-lg bg-blue-500/5 border border-blue-500/15 text-sm text-blue-700 dark:text-blue-400">
|
|
120
|
+
<Info className="w-4 h-4 mt-0.5 flex-shrink-0" />
|
|
121
|
+
<span>{text}</span>
|
|
122
|
+
</div>
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Utilisation:** Apres chaque bloc Mock UI, ajouter un `<div className="space-y-2 mt-4">` contenant
|
|
128
|
+
les `<Annotation text={t('section.annotations.key')} />` pour chaque element visuel.
|
|
129
|
+
|
|
130
|
+
### Exemple d'annotation apres un Mock UI
|
|
131
|
+
|
|
132
|
+
```tsx
|
|
133
|
+
{/* Mock UI card ici */}
|
|
134
|
+
<div className="card p-6">...</div>
|
|
135
|
+
|
|
136
|
+
{/* Annotations explicatives */}
|
|
137
|
+
<div className="space-y-2 mt-4">
|
|
138
|
+
<Annotation text={t('interface.annotations.icon')} />
|
|
139
|
+
<Annotation text={t('interface.annotations.title')} />
|
|
140
|
+
<Annotation text={t('interface.annotations.code')} />
|
|
141
|
+
<Annotation text={t('interface.annotations.defaultBadge')} />
|
|
142
|
+
<Annotation text={t('interface.annotations.cta')} />
|
|
143
|
+
</div>
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Template TSX Mock UI (TYPE: user)
|
|
149
|
+
|
|
150
|
+
```tsx
|
|
151
|
+
// web/smartstack-web/src/pages/docs/business/{application}/{module}/index.tsx
|
|
152
|
+
|
|
153
|
+
import { Link } from 'react-router-dom';
|
|
154
|
+
import { useTranslation } from 'react-i18next';
|
|
155
|
+
import {
|
|
156
|
+
ArrowLeft,
|
|
157
|
+
Info,
|
|
158
|
+
Target,
|
|
159
|
+
Lightbulb,
|
|
160
|
+
Users,
|
|
161
|
+
Zap,
|
|
162
|
+
ChevronDown,
|
|
163
|
+
// + icones specifiques au module
|
|
164
|
+
} from 'lucide-react';
|
|
165
|
+
|
|
166
|
+
// ═══════════════════════════════════════════════════
|
|
167
|
+
// Helper: Annotation (obligatoire pour chaque Mock UI)
|
|
168
|
+
// ═══════════════════════════════════════════════════
|
|
169
|
+
function Annotation({ text }: { text: string }) {
|
|
170
|
+
return (
|
|
171
|
+
<div className="flex items-start gap-2 p-2.5 rounded-lg bg-blue-500/5 border border-blue-500/15 text-sm text-blue-700 dark:text-blue-400">
|
|
172
|
+
<Info className="w-4 h-4 mt-0.5 flex-shrink-0" />
|
|
173
|
+
<span>{text}</span>
|
|
174
|
+
</div>
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// ═══════════════════════════════════════════════════
|
|
179
|
+
// Data: API Endpoints (extraits du vrai controller)
|
|
180
|
+
// ═══════════════════════════════════════════════════
|
|
181
|
+
const apiEndpoints = [
|
|
182
|
+
// Remplir avec les vrais endpoints du controller
|
|
183
|
+
{ method: 'GET', path: '/api/...', handler: 'GetAll', permission: '...' },
|
|
184
|
+
];
|
|
185
|
+
|
|
186
|
+
// ═══════════════════════════════════════════════════
|
|
187
|
+
// Data: Business Rules (extraites du domain/tests)
|
|
188
|
+
// ═══════════════════════════════════════════════════
|
|
189
|
+
const businessRules = [
|
|
190
|
+
// Remplir avec les vraies regles metier
|
|
191
|
+
{ id: 'BR-001', rule: '...' },
|
|
192
|
+
];
|
|
193
|
+
|
|
194
|
+
export default function {Module}DocPage() {
|
|
195
|
+
const { t } = useTranslation('docsAdministration{Module}');
|
|
196
|
+
|
|
197
|
+
return (
|
|
198
|
+
<div className="space-y-8 max-w-5xl mx-auto pb-12">
|
|
199
|
+
{/* BREADCRUMB + BACK */}
|
|
200
|
+
<div>
|
|
201
|
+
<Link to="/docs/business/administration/tenants"
|
|
202
|
+
className="inline-flex items-center gap-1.5 text-sm text-[var(--text-secondary)] hover:text-[var(--color-primary-600)] mb-4">
|
|
203
|
+
<ArrowLeft className="w-4 h-4" />
|
|
204
|
+
{t('nav.backToParent')}
|
|
205
|
+
</Link>
|
|
206
|
+
</div>
|
|
207
|
+
|
|
208
|
+
{/* HEADER */}
|
|
209
|
+
<div>
|
|
210
|
+
<h1 className="text-3xl font-bold mb-4 flex items-center gap-3">
|
|
211
|
+
<ModuleIcon className="w-8 h-8 text-[var(--color-primary-600)]" />
|
|
212
|
+
{t('title')}
|
|
213
|
+
</h1>
|
|
214
|
+
<p className="text-xl text-[var(--color-primary-600)] font-medium mb-2">
|
|
215
|
+
{t('valueProposition')}
|
|
216
|
+
</p>
|
|
217
|
+
<p className="text-lg text-[var(--text-secondary)]">
|
|
218
|
+
{t('subtitle')}
|
|
219
|
+
</p>
|
|
220
|
+
</div>
|
|
221
|
+
|
|
222
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
223
|
+
{/* SECTION 1: VALEUR METIER - Pourquoi ca existe ? */}
|
|
224
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
225
|
+
<section id="valeur" className="scroll-mt-4">
|
|
226
|
+
<h2 className="text-2xl font-bold mb-4 flex items-center gap-2">
|
|
227
|
+
<span className="w-8 h-8 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center text-sm">1</span>
|
|
228
|
+
{t('sections.businessValue')}
|
|
229
|
+
</h2>
|
|
230
|
+
|
|
231
|
+
<div className="card p-6">
|
|
232
|
+
<div className="mb-6">
|
|
233
|
+
<h3 className="font-semibold mb-3 flex items-center gap-2">
|
|
234
|
+
<Target className="w-5 h-5 text-red-500" />
|
|
235
|
+
{t('sections.problem')}
|
|
236
|
+
</h3>
|
|
237
|
+
<p className="text-[var(--text-secondary)]">{t('problem')}</p>
|
|
238
|
+
</div>
|
|
239
|
+
|
|
240
|
+
<div className="p-4 rounded-lg bg-green-500/10 border border-green-500/20">
|
|
241
|
+
<h3 className="font-semibold mb-2 flex items-center gap-2 text-green-700">
|
|
242
|
+
<Lightbulb className="w-5 h-5" />
|
|
243
|
+
{t('sections.solution')}
|
|
244
|
+
</h3>
|
|
245
|
+
<p className="text-[var(--text-secondary)]">{t('solution')}</p>
|
|
246
|
+
</div>
|
|
247
|
+
</div>
|
|
248
|
+
</section>
|
|
249
|
+
|
|
250
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
251
|
+
{/* SECTION 2: ACCES - Navigation */}
|
|
252
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
253
|
+
<section id="acces" className="scroll-mt-4">
|
|
254
|
+
<h2 className="text-2xl font-bold mb-4 flex items-center gap-2">
|
|
255
|
+
<span className="w-8 h-8 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center text-sm">2</span>
|
|
256
|
+
{t('sections.access')}
|
|
257
|
+
</h2>
|
|
258
|
+
<div className="card p-6">
|
|
259
|
+
{/* Breadcrumb de navigation et URL */}
|
|
260
|
+
<div className="flex items-center gap-2 text-sm">
|
|
261
|
+
<span>Administration</span> <span>›</span>
|
|
262
|
+
<span className="font-semibold">{t('title')}</span>
|
|
263
|
+
</div>
|
|
264
|
+
<code className="mt-2 block text-xs text-[var(--text-secondary)]">
|
|
265
|
+
/administration/{module}
|
|
266
|
+
</code>
|
|
267
|
+
</div>
|
|
268
|
+
</section>
|
|
269
|
+
|
|
270
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
271
|
+
{/* SECTION 3: APERCU DE L'INTERFACE — Mock UI ANNOTE */}
|
|
272
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
273
|
+
{/* */}
|
|
274
|
+
{/* IMPORTANT: Le Mock UI ci-dessous doit reproduire fidelement */}
|
|
275
|
+
{/* la VRAIE page TSX du module. Lire le composant source d'abord. */}
|
|
276
|
+
{/* */}
|
|
277
|
+
{/* Exemples: */}
|
|
278
|
+
{/* - TenantsTemplatePage → 2 cartes template (Personal + Business) */}
|
|
279
|
+
{/* - UsersPage → tableau de gestion avec filtres */}
|
|
280
|
+
{/* - TicketsPage → Kanban board avec colonnes par statut */}
|
|
281
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
282
|
+
<section id="interface" className="scroll-mt-4">
|
|
283
|
+
<h2 className="text-2xl font-bold mb-4 flex items-center gap-2">
|
|
284
|
+
<span className="w-8 h-8 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center text-sm">3</span>
|
|
285
|
+
{t('sections.interface')}
|
|
286
|
+
</h2>
|
|
287
|
+
|
|
288
|
+
{/* Mock UI reproduisant la vraie page */}
|
|
289
|
+
<div className="card p-6">
|
|
290
|
+
{/* ... MOCK UI FIDELE A LA VRAIE PAGE ... */}
|
|
291
|
+
</div>
|
|
292
|
+
|
|
293
|
+
{/* ANNOTATIONS OBLIGATOIRES apres le Mock UI */}
|
|
294
|
+
<div className="space-y-2 mt-4">
|
|
295
|
+
<Annotation text={t('interface.annotations.element1')} />
|
|
296
|
+
<Annotation text={t('interface.annotations.element2')} />
|
|
297
|
+
{/* ... une annotation par element visuel important ... */}
|
|
298
|
+
</div>
|
|
299
|
+
</section>
|
|
300
|
+
|
|
301
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
302
|
+
{/* SECTION 4: FORMULAIRE DE CREATION — Mock UI ANNOTE */}
|
|
303
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
304
|
+
<section id="form" className="scroll-mt-4">
|
|
305
|
+
<h2 className="text-2xl font-bold mb-4 flex items-center gap-2">
|
|
306
|
+
<span className="w-8 h-8 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center text-sm">4</span>
|
|
307
|
+
{t('sections.createForm')}
|
|
308
|
+
</h2>
|
|
309
|
+
|
|
310
|
+
{/* Paragraphe d'introduction */}
|
|
311
|
+
<p className="text-[var(--text-secondary)] mb-4">{t('form.desc')}</p>
|
|
312
|
+
|
|
313
|
+
{/* Mock UI du formulaire */}
|
|
314
|
+
<div className="border border-[var(--border-color)] rounded-lg p-6 bg-[var(--bg-secondary)]">
|
|
315
|
+
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
316
|
+
{/* Champs de formulaire adaptes au module */}
|
|
317
|
+
</div>
|
|
318
|
+
<div className="flex items-center gap-3 mt-6 pt-6 border-t border-[var(--border-color)]">
|
|
319
|
+
<button className="px-4 py-2 bg-[var(--color-primary-600)] text-white rounded-lg">
|
|
320
|
+
{t('form.create')}
|
|
321
|
+
</button>
|
|
322
|
+
<button className="px-4 py-2 border border-[var(--border-color)] rounded-lg">
|
|
323
|
+
{t('form.cancel')}
|
|
324
|
+
</button>
|
|
325
|
+
</div>
|
|
326
|
+
</div>
|
|
327
|
+
|
|
328
|
+
{/* ANNOTATIONS OBLIGATOIRES apres le formulaire */}
|
|
329
|
+
<div className="space-y-2 mt-4">
|
|
330
|
+
<Annotation text={t('form.annotations.field1')} />
|
|
331
|
+
<Annotation text={t('form.annotations.field2')} />
|
|
332
|
+
<Annotation text={t('form.annotations.actions')} />
|
|
333
|
+
</div>
|
|
334
|
+
</section>
|
|
335
|
+
|
|
336
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
337
|
+
{/* SECTION 5: VUE DETAIL — Mock UI ANNOTE */}
|
|
338
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
339
|
+
<section id="detail" className="scroll-mt-4">
|
|
340
|
+
<h2 className="text-2xl font-bold mb-4 flex items-center gap-2">
|
|
341
|
+
<span className="w-8 h-8 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center text-sm">5</span>
|
|
342
|
+
{t('sections.detailView')}
|
|
343
|
+
</h2>
|
|
344
|
+
|
|
345
|
+
{/* Paragraphe d'introduction */}
|
|
346
|
+
<p className="text-[var(--text-secondary)] mb-4">{t('detail.desc')}</p>
|
|
347
|
+
|
|
348
|
+
{/* Mock UI de la vue detail */}
|
|
349
|
+
<div className="card p-6">
|
|
350
|
+
{/* ... MOCK UI FIDELE A LA VRAIE VUE DETAIL ... */}
|
|
351
|
+
</div>
|
|
352
|
+
|
|
353
|
+
{/* ANNOTATIONS OBLIGATOIRES */}
|
|
354
|
+
<div className="space-y-2 mt-4">
|
|
355
|
+
<Annotation text={t('detail.annotations.header')} />
|
|
356
|
+
<Annotation text={t('detail.annotations.tabs')} />
|
|
357
|
+
<Annotation text={t('detail.annotations.stats')} />
|
|
358
|
+
</div>
|
|
359
|
+
</section>
|
|
360
|
+
|
|
361
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
362
|
+
{/* SECTION 6: CAS D'USAGE - Exemples concrets */}
|
|
363
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
364
|
+
<section id="cas-usage" className="scroll-mt-4">
|
|
365
|
+
<h2 className="text-2xl font-bold mb-4 flex items-center gap-2">
|
|
366
|
+
<span className="w-8 h-8 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center text-sm">6</span>
|
|
367
|
+
{t('sections.useCases')}
|
|
368
|
+
</h2>
|
|
369
|
+
|
|
370
|
+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
371
|
+
{[1, 2, 3].map((i) => (
|
|
372
|
+
<div key={i} className="card p-6">
|
|
373
|
+
<div className="flex items-center gap-3 mb-4">
|
|
374
|
+
<div className="w-10 h-10 rounded-full bg-blue-500/10 flex items-center justify-center">
|
|
375
|
+
<Users className="w-5 h-5 text-blue-600" />
|
|
376
|
+
</div>
|
|
377
|
+
<div>
|
|
378
|
+
<div className="font-semibold">{t(`useCases.${i}.persona`)}</div>
|
|
379
|
+
<div className="text-sm text-[var(--text-secondary)]">{t(`useCases.${i}.role`)}</div>
|
|
380
|
+
</div>
|
|
381
|
+
</div>
|
|
382
|
+
<div className="space-y-3">
|
|
383
|
+
<div className="text-sm">
|
|
384
|
+
<span className="font-medium text-[var(--text-secondary)]">Situation:</span>
|
|
385
|
+
<p>{t(`useCases.${i}.situation`)}</p>
|
|
386
|
+
</div>
|
|
387
|
+
<div className="text-sm p-3 rounded-lg bg-green-500/5 border border-green-500/15">
|
|
388
|
+
<span className="font-medium text-green-600">Avec la fonctionnalite:</span>
|
|
389
|
+
<p>{t(`useCases.${i}.withFeature`)}</p>
|
|
390
|
+
</div>
|
|
391
|
+
</div>
|
|
392
|
+
</div>
|
|
393
|
+
))}
|
|
394
|
+
</div>
|
|
395
|
+
</section>
|
|
396
|
+
|
|
397
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
398
|
+
{/* SECTION 7: FONCTIONNALITES DETAILLEES */}
|
|
399
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
400
|
+
<section id="fonctionnalites" className="scroll-mt-4">
|
|
401
|
+
<h2 className="text-2xl font-bold mb-4 flex items-center gap-2">
|
|
402
|
+
<span className="w-8 h-8 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center text-sm">7</span>
|
|
403
|
+
{t('sections.features')}
|
|
404
|
+
</h2>
|
|
405
|
+
|
|
406
|
+
<div className="space-y-4">
|
|
407
|
+
{[1, 2, 3, 4, 5].map((i) => (
|
|
408
|
+
<div key={i} className="card p-6">
|
|
409
|
+
<div className="flex items-start gap-4">
|
|
410
|
+
<div className="w-10 h-10 rounded-lg bg-[var(--color-primary-600)]/10 flex items-center justify-center flex-shrink-0">
|
|
411
|
+
<Zap className="w-5 h-5 text-[var(--color-primary-600)]" />
|
|
412
|
+
</div>
|
|
413
|
+
<div className="flex-1">
|
|
414
|
+
<h3 className="font-semibold mb-2">{t(`features.${i}.title`)}</h3>
|
|
415
|
+
<p className="text-[var(--text-secondary)] mb-3">{t(`features.${i}.description`)}</p>
|
|
416
|
+
<div className="p-3 rounded-lg bg-[var(--bg-secondary)] text-sm">
|
|
417
|
+
<span className="font-medium text-[var(--color-primary-600)]">Exemple: </span>
|
|
418
|
+
{t(`features.${i}.example`)}
|
|
419
|
+
</div>
|
|
420
|
+
</div>
|
|
421
|
+
</div>
|
|
422
|
+
</div>
|
|
423
|
+
))}
|
|
424
|
+
</div>
|
|
425
|
+
</section>
|
|
426
|
+
|
|
427
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
428
|
+
{/* SECTION 8: FAQ */}
|
|
429
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
430
|
+
<section id="faq" className="scroll-mt-4">
|
|
431
|
+
<h2 className="text-2xl font-bold mb-4 flex items-center gap-2">
|
|
432
|
+
<span className="w-8 h-8 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center text-sm">8</span>
|
|
433
|
+
{t('sections.faq')}
|
|
434
|
+
</h2>
|
|
435
|
+
|
|
436
|
+
<div className="space-y-3">
|
|
437
|
+
{[1, 2, 3, 4, 5].map((i) => (
|
|
438
|
+
<details key={i} className="card group">
|
|
439
|
+
<summary className="p-4 cursor-pointer hover:bg-[var(--bg-secondary)] rounded-lg font-medium flex items-center justify-between">
|
|
440
|
+
{t(`faq.${i}.question`)}
|
|
441
|
+
<ChevronDown className="w-4 h-4 text-[var(--text-secondary)] group-open:rotate-180 transition-transform" />
|
|
442
|
+
</summary>
|
|
443
|
+
<div className="px-4 pb-4 text-sm text-[var(--text-secondary)]">
|
|
444
|
+
{t(`faq.${i}.answer`)}
|
|
445
|
+
</div>
|
|
446
|
+
</details>
|
|
447
|
+
))}
|
|
448
|
+
</div>
|
|
449
|
+
</section>
|
|
450
|
+
|
|
451
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
452
|
+
{/* SECTION 9: REFERENCE TECHNIQUE (collapsible) */}
|
|
453
|
+
{/* ══════════════════════════════════════════════════════════════════ */}
|
|
454
|
+
<section id="reference" className="scroll-mt-4">
|
|
455
|
+
<details className="card">
|
|
456
|
+
<summary className="p-4 cursor-pointer hover:bg-[var(--bg-secondary)] rounded-lg font-semibold flex items-center gap-2">
|
|
457
|
+
<span className="w-8 h-8 rounded-full bg-gray-500/10 text-gray-600 flex items-center justify-center text-sm">9</span>
|
|
458
|
+
{t('sections.technicalRef')}
|
|
459
|
+
</summary>
|
|
460
|
+
<div className="p-6 pt-2 space-y-8">
|
|
461
|
+
|
|
462
|
+
{/* Regles metier */}
|
|
463
|
+
<div>
|
|
464
|
+
<h3 className="font-semibold mb-3">{t('techRef.businessRules')}</h3>
|
|
465
|
+
<div className="overflow-x-auto">
|
|
466
|
+
<table className="w-full text-sm">
|
|
467
|
+
<thead>
|
|
468
|
+
<tr className="bg-[var(--bg-secondary)]">
|
|
469
|
+
<th className="text-left py-2 px-3 w-24">ID</th>
|
|
470
|
+
<th className="text-left py-2 px-3">Regle</th>
|
|
471
|
+
</tr>
|
|
472
|
+
</thead>
|
|
473
|
+
<tbody>
|
|
474
|
+
{businessRules.map((rule) => (
|
|
475
|
+
<tr key={rule.id} className="border-b border-[var(--border-color)]">
|
|
476
|
+
<td className="py-2 px-3 font-mono text-xs">{rule.id}</td>
|
|
477
|
+
<td className="py-2 px-3">{t(`techRef.rules.${rule.id}`)}</td>
|
|
478
|
+
</tr>
|
|
479
|
+
))}
|
|
480
|
+
</tbody>
|
|
481
|
+
</table>
|
|
482
|
+
</div>
|
|
483
|
+
</div>
|
|
484
|
+
|
|
485
|
+
{/* API Endpoints */}
|
|
486
|
+
<div>
|
|
487
|
+
<h3 className="font-semibold mb-3">{t('techRef.apiEndpoints')}</h3>
|
|
488
|
+
<div className="overflow-x-auto">
|
|
489
|
+
<table className="w-full text-sm">
|
|
490
|
+
<thead>
|
|
491
|
+
<tr className="bg-[var(--bg-secondary)]">
|
|
492
|
+
<th className="text-left py-2 px-3">Method</th>
|
|
493
|
+
<th className="text-left py-2 px-3">Endpoint</th>
|
|
494
|
+
<th className="text-left py-2 px-3">Handler</th>
|
|
495
|
+
<th className="text-left py-2 px-3">Permission</th>
|
|
496
|
+
</tr>
|
|
497
|
+
</thead>
|
|
498
|
+
<tbody>
|
|
499
|
+
{apiEndpoints.map((ep, i) => (
|
|
500
|
+
<tr key={i} className="border-b border-[var(--border-color)]">
|
|
501
|
+
<td className="py-2 px-3">
|
|
502
|
+
<span className={`px-2 py-0.5 rounded text-xs font-medium ${
|
|
503
|
+
ep.method === 'GET' ? 'bg-blue-500/10 text-blue-600' :
|
|
504
|
+
ep.method === 'POST' ? 'bg-green-500/10 text-green-600' :
|
|
505
|
+
ep.method === 'PUT' ? 'bg-orange-500/10 text-orange-600' :
|
|
506
|
+
ep.method === 'PATCH' ? 'bg-purple-500/10 text-purple-600' :
|
|
507
|
+
'bg-red-500/10 text-red-600'
|
|
508
|
+
}`}>{ep.method}</span>
|
|
509
|
+
</td>
|
|
510
|
+
<td className="py-2 px-3 font-mono text-xs">{ep.path}</td>
|
|
511
|
+
<td className="py-2 px-3 text-[var(--text-secondary)]">{ep.handler}</td>
|
|
512
|
+
<td className="py-2 px-3 font-mono text-xs">{ep.permission}</td>
|
|
513
|
+
</tr>
|
|
514
|
+
))}
|
|
515
|
+
</tbody>
|
|
516
|
+
</table>
|
|
517
|
+
</div>
|
|
518
|
+
</div>
|
|
519
|
+
|
|
520
|
+
</div>
|
|
521
|
+
</details>
|
|
522
|
+
</section>
|
|
523
|
+
</div>
|
|
524
|
+
);
|
|
525
|
+
}
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
---
|
|
529
|
+
|
|
530
|
+
## Structure i18n (4 langues obligatoires)
|
|
531
|
+
|
|
532
|
+
> **IMPORTANT:** Generer les 4 langues: FR (source), EN, DE, IT.
|
|
533
|
+
> Chaque fichier i18n est au format **PLAT** (pas de cle racine) pour les pages standalone.
|
|
534
|
+
|
|
535
|
+
### Fichier: `docs-administration-{module}.json`
|
|
536
|
+
|
|
537
|
+
```json
|
|
538
|
+
{
|
|
539
|
+
"nav": {
|
|
540
|
+
"backToParent": "Retour a {Parent}"
|
|
541
|
+
},
|
|
542
|
+
"title": "Nom du module",
|
|
543
|
+
"valueProposition": "Une phrase percutante resumant la valeur",
|
|
544
|
+
"subtitle": "Description en 1-2 phrases",
|
|
545
|
+
|
|
546
|
+
"sections": {
|
|
547
|
+
"businessValue": "Pourquoi ce module ?",
|
|
548
|
+
"problem": "Le probleme",
|
|
549
|
+
"solution": "La solution",
|
|
550
|
+
"access": "Acces",
|
|
551
|
+
"interface": "Apercu de l'interface",
|
|
552
|
+
"createForm": "Formulaire de creation",
|
|
553
|
+
"detailView": "Vue detail",
|
|
554
|
+
"useCases": "Exemples d'utilisation",
|
|
555
|
+
"benefits": "Benefices concrets",
|
|
556
|
+
"beforeAfter": "Avant / Apres",
|
|
557
|
+
"features": "Ce que vous pouvez faire",
|
|
558
|
+
"faq": "Questions frequentes",
|
|
559
|
+
"technicalRef": "Reference technique (administrateurs)"
|
|
560
|
+
},
|
|
561
|
+
|
|
562
|
+
"problem": "Description du probleme AVANT cette fonctionnalite",
|
|
563
|
+
"solution": "Comment ce module resout le probleme",
|
|
564
|
+
|
|
565
|
+
"access": {
|
|
566
|
+
"navigation": "Navigation"
|
|
567
|
+
},
|
|
568
|
+
|
|
569
|
+
"interface": {
|
|
570
|
+
"sectionTitle": "Titre de la sous-section",
|
|
571
|
+
"annotations": {
|
|
572
|
+
"element1": "Explication de l'element visuel 1 du Mock UI",
|
|
573
|
+
"element2": "Explication de l'element visuel 2 du Mock UI"
|
|
574
|
+
}
|
|
575
|
+
},
|
|
576
|
+
|
|
577
|
+
"form": {
|
|
578
|
+
"desc": "Ce formulaire permet de creer un nouveau...",
|
|
579
|
+
"fieldLabel1": "Label du champ",
|
|
580
|
+
"create": "Creer",
|
|
581
|
+
"cancel": "Annuler",
|
|
582
|
+
"annotations": {
|
|
583
|
+
"field1": "Explication du champ 1",
|
|
584
|
+
"field2": "Explication du champ 2",
|
|
585
|
+
"actions": "Explication des boutons d'action"
|
|
586
|
+
}
|
|
587
|
+
},
|
|
588
|
+
|
|
589
|
+
"detail": {
|
|
590
|
+
"desc": "La vue detail s'ouvre lorsque...",
|
|
591
|
+
"annotations": {
|
|
592
|
+
"header": "Explication de l'en-tete",
|
|
593
|
+
"tabs": "Explication des onglets",
|
|
594
|
+
"stats": "Explication des indicateurs"
|
|
595
|
+
}
|
|
596
|
+
},
|
|
597
|
+
|
|
598
|
+
"useCases": {
|
|
599
|
+
"1": {
|
|
600
|
+
"persona": "Sophie",
|
|
601
|
+
"role": "Administratrice plateforme",
|
|
602
|
+
"situation": "Sophie doit...",
|
|
603
|
+
"withFeature": "Elle utilise..."
|
|
604
|
+
}
|
|
605
|
+
},
|
|
606
|
+
|
|
607
|
+
"features": {
|
|
608
|
+
"1": {
|
|
609
|
+
"title": "Nom de la fonctionnalite",
|
|
610
|
+
"description": "Explication claire",
|
|
611
|
+
"example": "Exemple concret"
|
|
612
|
+
}
|
|
613
|
+
},
|
|
614
|
+
|
|
615
|
+
"faq": {
|
|
616
|
+
"1": {
|
|
617
|
+
"question": "Question non-technique ?",
|
|
618
|
+
"answer": "Reponse claire et concise."
|
|
619
|
+
}
|
|
620
|
+
},
|
|
621
|
+
|
|
622
|
+
"techRef": {
|
|
623
|
+
"businessRules": "Regles metier",
|
|
624
|
+
"apiEndpoints": "Points de terminaison API",
|
|
625
|
+
"rules": {
|
|
626
|
+
"BR-001": "Description de la regle metier 1",
|
|
627
|
+
"BR-002": "Description de la regle metier 2"
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
```
|
|
632
|
+
|
|
633
|
+
---
|
|
634
|
+
|
|
635
|
+
## Checklist Documentation (TYPE: user)
|
|
636
|
+
|
|
637
|
+
Avant de valider une documentation de module `user`, verifier:
|
|
638
|
+
|
|
639
|
+
- [ ] **Standalone TSX** (PAS DocRenderer, PAS doc-data.ts)
|
|
640
|
+
- [ ] **Lecture de la vraie page** TSX source AVANT generation du Mock UI
|
|
641
|
+
- [ ] **Mock UI Section 3: Interface** reproduisant fidelement la vraie page
|
|
642
|
+
- [ ] **Mock UI Section 4: Formulaire** avec champs du vrai formulaire
|
|
643
|
+
- [ ] **Mock UI Section 5: Vue detail** avec onglets/stats de la vraie page
|
|
644
|
+
- [ ] **Annotations** sur chaque section Mock UI (composant `Annotation`)
|
|
645
|
+
- [ ] **Proposition de valeur** claire en 1 phrase
|
|
646
|
+
- [ ] **Probleme/Solution** du point de vue utilisateur (pas technique)
|
|
647
|
+
- [ ] **2-3 cas d'usage** avec personas nommes
|
|
648
|
+
- [ ] **5 fonctionnalites** avec exemples concrets
|
|
649
|
+
- [ ] **5 FAQ** non-techniques
|
|
650
|
+
- [ ] **Reference technique** collapsible: regles metier + API endpoints reels
|
|
651
|
+
- [ ] **Semantic colors** (`var(--success-*)`, `var(--error-*)`, etc.)
|
|
652
|
+
- [ ] **i18n** via `useTranslation()` — pas de texte hardcode
|
|
653
|
+
- [ ] **i18n 4 langues** : FR, EN, DE, IT (JSON plat, pas de cle racine)
|
|
654
|
+
- [ ] **PAS de section "Benefices"** ni "Avant/Apres"
|
|
655
|
+
|
|
656
|
+
---
|
|
657
|
+
|
|
658
|
+
## Templates Techniques (inchanges)
|
|
659
|
+
|
|
660
|
+
Les templates pour `developer`, `database`, et `testing` restent techniques car leur public est developpeur.
|
|
661
|
+
|
|
662
|
+
(voir le contenu precedent pour ces templates)
|