siesa-agents 2.1.71 → 2.1.72-qa.2
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/README.md +133 -133
- package/bin/install.js +668 -668
- package/bin/prepare-publish.js +26 -26
- package/bin/restore-folders.js +26 -26
- package/bmad/_config/agent-manifest.csv +20 -20
- package/bmad/_config/agents/bmb-agent-builder.customize.yaml +41 -41
- package/bmad/_config/agents/bmb-module-builder.customize.yaml +41 -41
- package/bmad/_config/agents/bmb-workflow-builder.customize.yaml +41 -41
- package/bmad/_config/agents/bmm-analyst.customize.yaml +41 -41
- package/bmad/_config/agents/bmm-architect.customize.yaml +41 -41
- package/bmad/_config/agents/bmm-dev.customize.yaml +41 -41
- package/bmad/_config/agents/bmm-pm.customize.yaml +41 -41
- package/bmad/_config/agents/bmm-quick-flow-solo-dev.customize.yaml +41 -41
- package/bmad/_config/agents/bmm-sm.customize.yaml +41 -41
- package/bmad/_config/agents/bmm-tea.customize.yaml +41 -41
- package/bmad/_config/agents/bmm-tech-writer.customize.yaml +41 -41
- package/bmad/_config/agents/bmm-ux-designer.customize.yaml +41 -41
- package/bmad/_config/agents/cis-brainstorming-coach.customize.yaml +41 -41
- package/bmad/_config/agents/cis-creative-problem-solver.customize.yaml +41 -41
- package/bmad/_config/agents/cis-design-thinking-coach.customize.yaml +41 -41
- package/bmad/_config/agents/cis-innovation-strategist.customize.yaml +41 -41
- package/bmad/_config/agents/cis-presentation-master.customize.yaml +41 -41
- package/bmad/_config/agents/cis-storyteller.customize.yaml +41 -41
- package/bmad/_config/agents/core-bmad-master.customize.yaml +41 -41
- package/bmad/_config/files-manifest.csv +469 -469
- package/bmad/_config/ides/claude-code.yaml +6 -6
- package/bmad/_config/manifest.yaml +14 -14
- package/bmad/_config/task-manifest.csv +6 -6
- package/bmad/_config/tool-manifest.csv +1 -1
- package/bmad/_config/workflow-manifest.csv +45 -45
- package/bmad/_memory/config.yaml +11 -11
- package/bmad/_memory/storyteller-sidecar/stories-told.md +7 -7
- package/bmad/_memory/storyteller-sidecar/story-preferences.md +7 -7
- package/bmad/bmb/README.md +25 -25
- package/bmad/bmb/agents/agent-builder.md +57 -57
- package/bmad/bmb/agents/module-builder.md +60 -60
- package/bmad/bmb/agents/workflow-builder.md +56 -56
- package/bmad/bmb/config.yaml +12 -12
- package/bmad/bmb/docs/workflows/architecture.md +220 -220
- package/bmad/bmb/docs/workflows/common-workflow-tools.csv +18 -18
- package/bmad/bmb/docs/workflows/csv-data-file-standards.md +206 -206
- package/bmad/bmb/docs/workflows/intent-vs-prescriptive-spectrum.md +220 -220
- package/bmad/bmb/docs/workflows/step-file-rules.md +469 -469
- package/bmad/bmb/docs/workflows/templates/step-01-init-continuable-template.md +241 -241
- package/bmad/bmb/docs/workflows/templates/step-1b-template.md +223 -223
- package/bmad/bmb/docs/workflows/templates/step-file.md +139 -139
- package/bmad/bmb/docs/workflows/templates/step-template.md +290 -290
- package/bmad/bmb/docs/workflows/templates/workflow-template.md +104 -104
- package/bmad/bmb/docs/workflows/templates/workflow.md +58 -58
- package/bmad/bmb/docs/workflows/terms.md +97 -97
- package/bmad/bmb/reference/agents/simple-examples/README.md +223 -223
- package/bmad/bmb/reference/readme.md +3 -3
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +17 -17
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +15 -15
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +27 -27
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +177 -177
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +121 -121
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +165 -165
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +154 -154
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +183 -183
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +168 -168
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +195 -195
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -25
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -68
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -29
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -47
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -37
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -18
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/workflow.md +59 -59
- package/bmad/bmb/workflows/agent/data/agent-compilation.md +273 -273
- package/bmad/bmb/workflows/agent/data/agent-menu-patterns.md +233 -233
- package/bmad/bmb/workflows/agent/data/agent-metadata.md +208 -208
- package/bmad/bmb/workflows/agent/data/brainstorm-context.md +146 -146
- package/bmad/bmb/workflows/agent/data/communication-presets.csv +61 -61
- package/bmad/bmb/workflows/agent/data/critical-actions.md +120 -120
- package/bmad/bmb/workflows/agent/data/expert-agent-architecture.md +236 -236
- package/bmad/bmb/workflows/agent/data/expert-agent-validation.md +173 -173
- package/bmad/bmb/workflows/agent/data/module-agent-validation.md +124 -124
- package/bmad/bmb/workflows/agent/data/persona-properties.md +266 -266
- package/bmad/bmb/workflows/agent/data/principles-crafting.md +292 -292
- package/bmad/bmb/workflows/agent/data/reference/expert-examples/journal-keeper/journal-keeper-sidecar/entries/yy-mm-dd-entry-template.md +16 -16
- package/bmad/bmb/workflows/agent/data/reference/module-examples/architect.md +68 -68
- package/bmad/bmb/workflows/agent/data/simple-agent-architecture.md +204 -204
- package/bmad/bmb/workflows/agent/data/simple-agent-validation.md +132 -132
- package/bmad/bmb/workflows/agent/data/understanding-agent-types.md +222 -222
- package/bmad/bmb/workflows/agent/steps-c/step-01-brainstorm.md +126 -126
- package/bmad/bmb/workflows/agent/steps-c/step-02-discovery.md +168 -168
- package/bmad/bmb/workflows/agent/steps-c/step-03-type-metadata.md +294 -294
- package/bmad/bmb/workflows/agent/steps-c/step-04-persona.md +210 -210
- package/bmad/bmb/workflows/agent/steps-c/step-05-commands-menu.md +176 -176
- package/bmad/bmb/workflows/agent/steps-c/step-06-activation.md +275 -275
- package/bmad/bmb/workflows/agent/steps-c/step-07a-build-simple.md +185 -185
- package/bmad/bmb/workflows/agent/steps-c/step-07b-build-expert.md +201 -201
- package/bmad/bmb/workflows/agent/steps-c/step-07c-build-module.md +258 -258
- package/bmad/bmb/workflows/agent/steps-c/step-08a-plan-traceability.md +203 -203
- package/bmad/bmb/workflows/agent/steps-c/step-08b-metadata-validation.md +135 -135
- package/bmad/bmb/workflows/agent/steps-c/step-08c-persona-validation.md +161 -161
- package/bmad/bmb/workflows/agent/steps-c/step-08d-menu-validation.md +158 -158
- package/bmad/bmb/workflows/agent/steps-c/step-08e-structure-validation.md +306 -306
- package/bmad/bmb/workflows/agent/steps-c/step-08f-sidecar-validation.md +462 -462
- package/bmad/bmb/workflows/agent/steps-c/step-09-celebrate.md +244 -244
- package/bmad/bmb/workflows/agent/steps-e/e-01-load-existing.md +214 -214
- package/bmad/bmb/workflows/agent/steps-e/e-02-discover-edits.md +191 -191
- package/bmad/bmb/workflows/agent/steps-e/e-03a-validate-metadata.md +78 -78
- package/bmad/bmb/workflows/agent/steps-e/e-03b-validate-persona.md +76 -76
- package/bmad/bmb/workflows/agent/steps-e/e-03c-validate-menu.md +75 -75
- package/bmad/bmb/workflows/agent/steps-e/e-03d-validate-structure.md +75 -75
- package/bmad/bmb/workflows/agent/steps-e/e-03e-validate-sidecar.md +78 -78
- package/bmad/bmb/workflows/agent/steps-e/e-03f-validation-summary.md +119 -119
- package/bmad/bmb/workflows/agent/steps-e/e-04-type-metadata.md +122 -122
- package/bmad/bmb/workflows/agent/steps-e/e-05-persona.md +132 -132
- package/bmad/bmb/workflows/agent/steps-e/e-06-commands-menu.md +120 -120
- package/bmad/bmb/workflows/agent/steps-e/e-07-activation.md +122 -122
- package/bmad/bmb/workflows/agent/steps-e/e-08a-edit-simple.md +134 -134
- package/bmad/bmb/workflows/agent/steps-e/e-08b-edit-expert.md +117 -117
- package/bmad/bmb/workflows/agent/steps-e/e-08c-edit-module.md +120 -120
- package/bmad/bmb/workflows/agent/steps-e/e-09a-validate-metadata.md +70 -70
- package/bmad/bmb/workflows/agent/steps-e/e-09b-validate-persona.md +70 -70
- package/bmad/bmb/workflows/agent/steps-e/e-09c-validate-menu.md +69 -69
- package/bmad/bmb/workflows/agent/steps-e/e-09d-validate-structure.md +69 -69
- package/bmad/bmb/workflows/agent/steps-e/e-09e-validate-sidecar.md +70 -70
- package/bmad/bmb/workflows/agent/steps-e/e-09f-validation-summary.md +111 -111
- package/bmad/bmb/workflows/agent/steps-e/e-10-celebrate.md +150 -150
- package/bmad/bmb/workflows/agent/steps-v/v-01-load-review.md +128 -128
- package/bmad/bmb/workflows/agent/steps-v/v-02a-validate-metadata.md +73 -73
- package/bmad/bmb/workflows/agent/steps-v/v-02b-validate-persona.md +72 -72
- package/bmad/bmb/workflows/agent/steps-v/v-02c-validate-menu.md +71 -71
- package/bmad/bmb/workflows/agent/steps-v/v-02d-validate-structure.md +71 -71
- package/bmad/bmb/workflows/agent/steps-v/v-02e-validate-sidecar.md +76 -76
- package/bmad/bmb/workflows/agent/steps-v/v-03-summary.md +100 -100
- package/bmad/bmb/workflows/agent/templates/agent-plan.template.md +5 -5
- package/bmad/bmb/workflows/agent/templates/expert-agent-template/expert-agent.template.md +76 -76
- package/bmad/bmb/workflows/agent/templates/simple-agent.template.md +71 -71
- package/bmad/bmb/workflows/agent/workflow.md +123 -123
- package/bmad/bmb/workflows/create-module/steps/step-01-init.md +156 -156
- package/bmad/bmb/workflows/create-module/steps/step-01b-continue.md +170 -170
- package/bmad/bmb/workflows/create-module/steps/step-02-concept.md +218 -218
- package/bmad/bmb/workflows/create-module/steps/step-03-components.md +268 -268
- package/bmad/bmb/workflows/create-module/steps/step-04-structure.md +229 -229
- package/bmad/bmb/workflows/create-module/steps/step-05-config.md +234 -234
- package/bmad/bmb/workflows/create-module/steps/step-06-agents.md +297 -297
- package/bmad/bmb/workflows/create-module/steps/step-07-workflows.md +229 -229
- package/bmad/bmb/workflows/create-module/steps/step-08-installer.md +187 -187
- package/bmad/bmb/workflows/create-module/steps/step-09-documentation.md +310 -310
- package/bmad/bmb/workflows/create-module/steps/step-10-roadmap.md +338 -338
- package/bmad/bmb/workflows/create-module/steps/step-11-validate.md +336 -336
- package/bmad/bmb/workflows/create-module/templates/agent.template.md +313 -313
- package/bmad/bmb/workflows/create-module/templates/installer.template.js +47 -47
- package/bmad/bmb/workflows/create-module/templates/module-plan.template.md +5 -5
- package/bmad/bmb/workflows/create-module/templates/module.template.yaml +53 -53
- package/bmad/bmb/workflows/create-module/templates/workflow-plan-template.md +23 -23
- package/bmad/bmb/workflows/create-module/validation.md +126 -126
- package/bmad/bmb/workflows/create-module/workflow.md +56 -56
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/data/dietary-restrictions.csv +17 -17
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/data/macro-calculator.csv +15 -15
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/data/recipe-database.csv +27 -27
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-01-init.md +177 -177
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-01b-continue.md +150 -150
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-02-profile.md +164 -164
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-03-assessment.md +152 -152
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-04-strategy.md +182 -182
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-05-shopping.md +167 -167
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -194
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/templates/assessment-section.md +25 -25
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/templates/nutrition-plan.md +68 -68
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/templates/prep-schedule-section.md +29 -29
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/templates/profile-section.md +47 -47
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/templates/shopping-section.md +37 -37
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/templates/strategy-section.md +18 -18
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/workflow.md +58 -58
- package/bmad/bmb/workflows/create-workflow/steps/step-01-init.md +158 -158
- package/bmad/bmb/workflows/create-workflow/steps/step-02-gather.md +212 -212
- package/bmad/bmb/workflows/create-workflow/steps/step-03-tools-configuration.md +251 -251
- package/bmad/bmb/workflows/create-workflow/steps/step-04-plan-review.md +217 -217
- package/bmad/bmb/workflows/create-workflow/steps/step-05-output-format-design.md +290 -290
- package/bmad/bmb/workflows/create-workflow/steps/step-06-design.md +272 -272
- package/bmad/bmb/workflows/create-workflow/steps/step-07-build.md +323 -323
- package/bmad/bmb/workflows/create-workflow/steps/step-08-review.md +285 -285
- package/bmad/bmb/workflows/create-workflow/steps/step-09-complete.md +188 -188
- package/bmad/bmb/workflows/create-workflow/workflow.md +59 -59
- package/bmad/bmb/workflows/edit-workflow/steps/step-01-analyze.md +217 -217
- package/bmad/bmb/workflows/edit-workflow/steps/step-02-discover.md +254 -254
- package/bmad/bmb/workflows/edit-workflow/steps/step-03-improve.md +218 -218
- package/bmad/bmb/workflows/edit-workflow/steps/step-04-validate.md +194 -194
- package/bmad/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +246 -246
- package/bmad/bmb/workflows/edit-workflow/templates/completion-summary.md +75 -75
- package/bmad/bmb/workflows/edit-workflow/templates/improvement-goals.md +68 -68
- package/bmad/bmb/workflows/edit-workflow/templates/improvement-log.md +40 -40
- package/bmad/bmb/workflows/edit-workflow/templates/validation-results.md +51 -51
- package/bmad/bmb/workflows/edit-workflow/templates/workflow-analysis.md +56 -56
- package/bmad/bmb/workflows/edit-workflow/workflow.md +59 -59
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +153 -153
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +244 -244
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +275 -275
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +296 -296
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +265 -265
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +361 -361
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +259 -259
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +302 -302
- package/bmad/bmb/workflows/workflow-compliance-check/templates/compliance-report.md +140 -140
- package/bmad/bmb/workflows/workflow-compliance-check/workflow.md +59 -59
- package/bmad/bmb/workflows-legacy/edit-module/README.md +171 -171
- package/bmad/bmb/workflows-legacy/edit-module/checklist.md +163 -163
- package/bmad/bmb/workflows-legacy/edit-module/instructions.md +340 -340
- package/bmad/bmb/workflows-legacy/edit-module/workflow.yaml +32 -32
- package/bmad/bmb/workflows-legacy/module-brief/README.md +264 -264
- package/bmad/bmb/workflows-legacy/module-brief/checklist.md +116 -116
- package/bmad/bmb/workflows-legacy/module-brief/instructions.md +268 -268
- package/bmad/bmb/workflows-legacy/module-brief/template.md +275 -275
- package/bmad/bmb/workflows-legacy/module-brief/workflow.yaml +34 -34
- package/bmad/bmm/agents/analyst.md +76 -76
- package/bmad/bmm/agents/architect.md +68 -68
- package/bmad/bmm/agents/dev.md +70 -70
- package/bmad/bmm/agents/pm.md +70 -70
- package/bmad/bmm/agents/quick-flow-solo-dev.md +68 -68
- package/bmad/bmm/agents/sm.md +71 -71
- package/bmad/bmm/agents/tea.md +71 -71
- package/bmad/bmm/agents/tech-writer.md +72 -72
- package/bmad/bmm/agents/ux-designer.md +68 -68
- package/bmad/bmm/config.yaml +18 -18
- package/bmad/bmm/data/README.md +29 -29
- package/bmad/bmm/data/documentation-standards.md +262 -262
- package/bmad/bmm/data/git-flow-siesa.md +69 -69
- package/bmad/bmm/data/project-context-template.md +40 -40
- package/bmad/bmm/teams/default-party.csv +21 -21
- package/bmad/bmm/teams/team-fullstack.yaml +12 -12
- package/bmad/bmm/testarch/knowledge/api-request.md +303 -303
- package/bmad/bmm/testarch/knowledge/auth-session.md +356 -356
- package/bmad/bmm/testarch/knowledge/burn-in.md +273 -273
- package/bmad/bmm/testarch/knowledge/ci-burn-in.md +675 -675
- package/bmad/bmm/testarch/knowledge/component-tdd.md +486 -486
- package/bmad/bmm/testarch/knowledge/contract-testing.md +957 -957
- package/bmad/bmm/testarch/knowledge/data-factories.md +500 -500
- package/bmad/bmm/testarch/knowledge/email-auth.md +721 -721
- package/bmad/bmm/testarch/knowledge/error-handling.md +725 -725
- package/bmad/bmm/testarch/knowledge/feature-flags.md +750 -750
- package/bmad/bmm/testarch/knowledge/file-utils.md +260 -260
- package/bmad/bmm/testarch/knowledge/fixture-architecture.md +401 -401
- package/bmad/bmm/testarch/knowledge/fixtures-composition.md +382 -382
- package/bmad/bmm/testarch/knowledge/intercept-network-call.md +280 -280
- package/bmad/bmm/testarch/knowledge/log.md +294 -294
- package/bmad/bmm/testarch/knowledge/network-error-monitor.md +272 -272
- package/bmad/bmm/testarch/knowledge/network-first.md +486 -486
- package/bmad/bmm/testarch/knowledge/network-recorder.md +265 -265
- package/bmad/bmm/testarch/knowledge/nfr-criteria.md +670 -670
- package/bmad/bmm/testarch/knowledge/overview.md +283 -283
- package/bmad/bmm/testarch/knowledge/playwright-config.md +730 -730
- package/bmad/bmm/testarch/knowledge/probability-impact.md +601 -601
- package/bmad/bmm/testarch/knowledge/recurse.md +296 -296
- package/bmad/bmm/testarch/knowledge/risk-governance.md +615 -615
- package/bmad/bmm/testarch/knowledge/selective-testing.md +732 -732
- package/bmad/bmm/testarch/knowledge/selector-resilience.md +527 -527
- package/bmad/bmm/testarch/knowledge/test-healing-patterns.md +644 -644
- package/bmad/bmm/testarch/knowledge/test-levels-framework.md +473 -473
- package/bmad/bmm/testarch/knowledge/test-priorities-matrix.md +373 -373
- package/bmad/bmm/testarch/knowledge/test-quality.md +664 -664
- package/bmad/bmm/testarch/knowledge/timing-debugging.md +372 -372
- package/bmad/bmm/testarch/knowledge/visual-debugging.md +524 -524
- package/bmad/bmm/testarch/tea-index.csv +33 -33
- package/bmad/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -10
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +182 -182
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +166 -166
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +204 -204
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +207 -207
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +210 -210
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +224 -224
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +199 -199
- package/bmad/bmm/workflows/1-analysis/create-product-brief/workflow.md +58 -58
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -137
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -229
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -238
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -206
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -234
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -443
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -182
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -237
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +200 -200
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -249
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -259
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -177
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -475
- package/bmad/bmm/workflows/1-analysis/research/research.template.md +29 -29
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -137
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -239
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -248
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -202
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +239 -239
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -486
- package/bmad/bmm/workflows/1-analysis/research/workflow.md +173 -173
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -135
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -127
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -190
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -216
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -219
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -234
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -252
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -254
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -224
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -224
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -241
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +338 -338
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -237
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -264
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +228 -228
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -13
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +59 -59
- package/bmad/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +12 -12
- package/bmad/bmm/workflows/2-plan-workflows/prd/prd-template.md +11 -11
- package/bmad/bmm/workflows/2-plan-workflows/prd/project-types.csv +10 -10
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +197 -197
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +166 -166
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +421 -421
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +290 -290
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +291 -291
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +271 -271
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +262 -262
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +258 -258
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +299 -299
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +270 -270
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +294 -294
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +186 -186
- package/bmad/bmm/workflows/2-plan-workflows/prd/workflow.md +63 -63
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +190 -190
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +178 -178
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -179
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +139 -139
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +252 -252
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +133 -133
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -4
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +55 -55
- package/bmad/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -12
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/company-standards/architecture-patterns.md +443 -443
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/company-standards/backend-standards.md +811 -811
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/company-standards/database-conventions.md +667 -667
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/company-standards/frontend-standards.md +1200 -1200
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/company-standards/mastercrud-use-reference.md +276 -276
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/company-standards/technical-preferences-ux.md +423 -423
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/company-standards/technology-stack.md +293 -293
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/company-standards/vite-config-standard.md +535 -535
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +10 -10
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +6 -6
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +174 -174
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +164 -164
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -224
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +342 -342
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +328 -328
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +368 -368
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +381 -381
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +366 -366
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +352 -352
- package/bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md +51 -51
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -259
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +274 -274
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -272
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +209 -209
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +72 -72
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +59 -59
- package/bmad/bmm/workflows/4-implementation/code-review/checklist.md +23 -23
- package/bmad/bmm/workflows/4-implementation/code-review/instructions.xml.bak +224 -224
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-01-load-story.md +101 -101
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-02-build-plan.md +89 -89
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-03-review.md +91 -91
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-04-fix.md +92 -92
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-05-sync-sprint.md +70 -70
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-06-jira-sync.md +135 -135
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-07-commit-push.md +174 -174
- package/bmad/bmm/workflows/4-implementation/code-review/workflow.md +57 -57
- package/bmad/bmm/workflows/4-implementation/code-review/workflow.yaml.bak +49 -49
- package/bmad/bmm/workflows/4-implementation/correct-course/checklist.md +279 -279
- package/bmad/bmm/workflows/4-implementation/correct-course/instructions.md +206 -206
- package/bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +58 -58
- package/bmad/bmm/workflows/4-implementation/create-story/checklist.md +358 -358
- package/bmad/bmm/workflows/4-implementation/create-story/steps/step-01-determine-story.md +85 -85
- package/bmad/bmm/workflows/4-implementation/create-story/steps/step-02-analyze.md +67 -67
- package/bmad/bmm/workflows/4-implementation/create-story/steps/step-03-architecture.md +71 -71
- package/bmad/bmm/workflows/4-implementation/create-story/steps/step-04-web-research.md +58 -58
- package/bmad/bmm/workflows/4-implementation/create-story/steps/step-05-create-file.md +76 -76
- package/bmad/bmm/workflows/4-implementation/create-story/steps/step-06-finalize.md +106 -106
- package/bmad/bmm/workflows/4-implementation/create-story/template.md +49 -49
- package/bmad/bmm/workflows/4-implementation/create-story/workflow.md +58 -58
- package/bmad/bmm/workflows/4-implementation/create-story/workflow.yaml.bak +63 -63
- package/bmad/bmm/workflows/4-implementation/dev-story/checklist.md +85 -85
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-01-find-story.md +109 -109
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-02-check-branch.md +108 -108
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-03-load-context.md +46 -46
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-04-env-readiness.md +45 -45
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-05-review-check.md +57 -57
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-06-mark-in-progress.md +52 -52
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-07-implement.md +62 -62
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-08-test-authoring.md +39 -39
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-09-run-tests.md +43 -43
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-10-validate-task.md +63 -63
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-11-mark-review.md +50 -50
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-12-communication.md +45 -45
- package/bmad/bmm/workflows/4-implementation/dev-story/workflow.md +44 -44
- package/bmad/bmm/workflows/4-implementation/retrospective/instructions.md +1443 -1443
- package/bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +56 -56
- package/bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +34 -34
- package/bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +276 -276
- package/bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +63 -63
- package/bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +52 -52
- package/bmad/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -229
- package/bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml +34 -34
- package/bmad/bmm/workflows/5-documentation/README.md +235 -235
- package/bmad/bmm/workflows/5-documentation/create-user-guide/data/audience-types.csv +5 -5
- package/bmad/bmm/workflows/5-documentation/create-user-guide/data/diagram-types.csv +6 -6
- package/bmad/bmm/workflows/5-documentation/create-user-guide/data/section-structure.csv +10 -10
- package/bmad/bmm/workflows/5-documentation/create-user-guide/steps/step-01-init.md +213 -213
- package/bmad/bmm/workflows/5-documentation/create-user-guide/steps/step-01b-continue.md +268 -268
- package/bmad/bmm/workflows/5-documentation/create-user-guide/steps/step-02-seleccion-epicas.md +10 -10
- package/bmad/bmm/workflows/5-documentation/create-user-guide/steps/step-02-seleccion-features.md +197 -197
- package/bmad/bmm/workflows/5-documentation/create-user-guide/steps/step-03-analisis-fuentes.md +235 -235
- package/bmad/bmm/workflows/5-documentation/create-user-guide/steps/step-04-elicitacion.md +116 -116
- package/bmad/bmm/workflows/5-documentation/create-user-guide/steps/step-05-generacion-espanol.md +611 -611
- package/bmad/bmm/workflows/5-documentation/create-user-guide/steps/step-06-traduccion-ingles.md +615 -615
- package/bmad/bmm/workflows/5-documentation/create-user-guide/steps/step-07-validacion-guardado.md +467 -467
- package/bmad/bmm/workflows/5-documentation/create-user-guide/templates/user-guide-template-en.md +50 -50
- package/bmad/bmm/workflows/5-documentation/create-user-guide/templates/user-guide-template-es.md +50 -50
- package/bmad/bmm/workflows/5-documentation/create-user-guide/workflow-plan-create-user-guide.md +949 -949
- package/bmad/bmm/workflows/5-documentation/create-user-guide/workflow.md +61 -61
- package/bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-01-understand.md +189 -189
- package/bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-02-investigate.md +144 -144
- package/bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-03-generate.md +128 -128
- package/bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-04-review.md +173 -173
- package/bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/tech-spec-template.md +74 -74
- package/bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.md +79 -79
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +156 -156
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -120
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +113 -113
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -113
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -106
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +140 -140
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +52 -52
- package/bmad/bmm/workflows/document-project/checklist.md +245 -245
- package/bmad/bmm/workflows/document-project/documentation-requirements.csv +12 -12
- package/bmad/bmm/workflows/document-project/instructions.md +221 -221
- package/bmad/bmm/workflows/document-project/templates/deep-dive-template.md +345 -345
- package/bmad/bmm/workflows/document-project/templates/index-template.md +169 -169
- package/bmad/bmm/workflows/document-project/templates/project-overview-template.md +103 -103
- package/bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -160
- package/bmad/bmm/workflows/document-project/templates/source-tree-template.md +135 -135
- package/bmad/bmm/workflows/document-project/workflow.yaml +28 -28
- package/bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -298
- package/bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -31
- package/bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -1106
- package/bmad/bmm/workflows/document-project/workflows/full-scan.yaml +31 -31
- package/bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -90
- package/bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -127
- package/bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -39
- package/bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -130
- package/bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +25 -25
- package/bmad/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -43
- package/bmad/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -141
- package/bmad/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +25 -25
- package/bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -49
- package/bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -241
- package/bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +25 -25
- package/bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -38
- package/bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -133
- package/bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +25 -25
- package/bmad/bmm/workflows/generate-project-context/project-context-template.md +21 -21
- package/bmad/bmm/workflows/generate-project-context/steps/step-01-discover.md +261 -261
- package/bmad/bmm/workflows/generate-project-context/steps/step-02-generate.md +342 -342
- package/bmad/bmm/workflows/generate-project-context/steps/step-03-complete.md +278 -278
- package/bmad/bmm/workflows/generate-project-context/workflow.md +51 -51
- package/bmad/bmm/workflows/testarch/atdd/atdd-checklist-template.md +364 -364
- package/bmad/bmm/workflows/testarch/atdd/checklist.md +374 -374
- package/bmad/bmm/workflows/testarch/atdd/instructions.md +806 -806
- package/bmad/bmm/workflows/testarch/atdd/workflow.yaml +45 -45
- package/bmad/bmm/workflows/testarch/automate/checklist.md +582 -582
- package/bmad/bmm/workflows/testarch/automate/instructions.md +1324 -1324
- package/bmad/bmm/workflows/testarch/automate/workflow.yaml +52 -52
- package/bmad/bmm/workflows/testarch/ci/checklist.md +248 -248
- package/bmad/bmm/workflows/testarch/ci/github-actions-template.yaml +198 -198
- package/bmad/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +149 -149
- package/bmad/bmm/workflows/testarch/ci/instructions.md +536 -536
- package/bmad/bmm/workflows/testarch/ci/workflow.yaml +45 -45
- package/bmad/bmm/workflows/testarch/framework/checklist.md +321 -321
- package/bmad/bmm/workflows/testarch/framework/instructions.md +481 -481
- package/bmad/bmm/workflows/testarch/framework/workflow.yaml +47 -47
- package/bmad/bmm/workflows/testarch/nfr-assess/checklist.md +407 -407
- package/bmad/bmm/workflows/testarch/nfr-assess/instructions.md +722 -722
- package/bmad/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +445 -445
- package/bmad/bmm/workflows/testarch/nfr-assess/workflow.yaml +47 -47
- package/bmad/bmm/workflows/testarch/test-design/checklist.md +235 -235
- package/bmad/bmm/workflows/testarch/test-design/instructions.md +788 -788
- package/bmad/bmm/workflows/testarch/test-design/test-design-template.md +294 -294
- package/bmad/bmm/workflows/testarch/test-design/workflow.yaml +54 -54
- package/bmad/bmm/workflows/testarch/test-review/checklist.md +472 -472
- package/bmad/bmm/workflows/testarch/test-review/instructions.md +628 -628
- package/bmad/bmm/workflows/testarch/test-review/test-review-template.md +390 -390
- package/bmad/bmm/workflows/testarch/test-review/workflow.yaml +46 -46
- package/bmad/bmm/workflows/testarch/trace/checklist.md +655 -655
- package/bmad/bmm/workflows/testarch/trace/instructions.md +1047 -1047
- package/bmad/bmm/workflows/testarch/trace/trace-template.md +675 -675
- package/bmad/bmm/workflows/testarch/trace/workflow.yaml +55 -55
- package/bmad/bmm/workflows/workflow-status/init/instructions.md +346 -346
- package/bmad/bmm/workflows/workflow-status/init/workflow.yaml +28 -28
- package/bmad/bmm/workflows/workflow-status/instructions.md +395 -395
- package/bmad/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +103 -103
- package/bmad/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +100 -100
- package/bmad/bmm/workflows/workflow-status/paths/method-brownfield.yaml +103 -103
- package/bmad/bmm/workflows/workflow-status/paths/method-greenfield.yaml +100 -100
- package/bmad/bmm/workflows/workflow-status/project-levels.yaml +59 -59
- package/bmad/bmm/workflows/workflow-status/workflow-status-template.yaml +24 -24
- package/bmad/bmm/workflows/workflow-status/workflow.yaml +30 -30
- package/bmad/cis/agents/brainstorming-coach.md +60 -60
- package/bmad/cis/agents/creative-problem-solver.md +60 -60
- package/bmad/cis/agents/design-thinking-coach.md +60 -60
- package/bmad/cis/agents/innovation-strategist.md +60 -60
- package/bmad/cis/agents/presentation-master.md +66 -66
- package/bmad/cis/agents/storyteller/storyteller.md +57 -57
- package/bmad/cis/config.yaml +11 -11
- package/bmad/cis/teams/creative-squad.yaml +7 -7
- package/bmad/cis/teams/default-party.csv +12 -12
- package/bmad/cis/workflows/README.md +139 -139
- package/bmad/cis/workflows/design-thinking/README.md +56 -56
- package/bmad/cis/workflows/design-thinking/design-methods.csv +30 -30
- package/bmad/cis/workflows/design-thinking/instructions.md +202 -202
- package/bmad/cis/workflows/design-thinking/template.md +111 -111
- package/bmad/cis/workflows/design-thinking/workflow.yaml +27 -27
- package/bmad/cis/workflows/innovation-strategy/README.md +56 -56
- package/bmad/cis/workflows/innovation-strategy/innovation-frameworks.csv +30 -30
- package/bmad/cis/workflows/innovation-strategy/instructions.md +276 -276
- package/bmad/cis/workflows/innovation-strategy/template.md +189 -189
- package/bmad/cis/workflows/innovation-strategy/workflow.yaml +27 -27
- package/bmad/cis/workflows/problem-solving/README.md +56 -56
- package/bmad/cis/workflows/problem-solving/instructions.md +252 -252
- package/bmad/cis/workflows/problem-solving/solving-methods.csv +30 -30
- package/bmad/cis/workflows/problem-solving/template.md +165 -165
- package/bmad/cis/workflows/problem-solving/workflow.yaml +27 -27
- package/bmad/cis/workflows/storytelling/README.md +58 -58
- package/bmad/cis/workflows/storytelling/instructions.md +293 -293
- package/bmad/cis/workflows/storytelling/story-types.csv +25 -25
- package/bmad/cis/workflows/storytelling/template.md +113 -113
- package/bmad/cis/workflows/storytelling/workflow.yaml +27 -27
- package/bmad/core/agents/bmad-master.md +57 -57
- package/bmad/core/config.yaml +9 -9
- package/bmad/core/resources/excalidraw/README.md +160 -160
- package/bmad/core/resources/excalidraw/excalidraw-helpers.md +127 -127
- package/bmad/core/resources/excalidraw/library-loader.md +50 -50
- package/bmad/core/resources/excalidraw/validate-json-instructions.md +79 -79
- package/bmad/core/tasks/index-docs.xml +64 -64
- package/bmad/core/tasks/review-adversarial-general.xml +41 -41
- package/bmad/core/tasks/shard-doc.xml +108 -108
- package/bmad/core/tasks/validate-workflow.xml +88 -88
- package/bmad/core/tasks/workflow.xml +234 -234
- package/bmad/core/workflows/advanced-elicitation/methods.csv +51 -51
- package/bmad/core/workflows/advanced-elicitation/workflow.xml +116 -116
- package/bmad/core/workflows/brainstorming/brain-methods.csv +61 -61
- package/bmad/core/workflows/brainstorming/steps/step-01-session-setup.md +197 -197
- package/bmad/core/workflows/brainstorming/steps/step-01b-continue.md +122 -122
- package/bmad/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -225
- package/bmad/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -237
- package/bmad/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -209
- package/bmad/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -264
- package/bmad/core/workflows/brainstorming/steps/step-03-technique-execution.md +340 -340
- package/bmad/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -303
- package/bmad/core/workflows/brainstorming/template.md +15 -15
- package/bmad/core/workflows/brainstorming/workflow.md +51 -51
- package/bmad/core/workflows/party-mode/steps/step-01-agent-loading.md +139 -139
- package/bmad/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +204 -204
- package/bmad/core/workflows/party-mode/steps/step-03-graceful-exit.md +159 -159
- package/bmad/core/workflows/party-mode/workflow.md +206 -206
- package/claude/agent-memory/sa-quick-dev/MEMORY.md +6 -6
- package/claude/agent-memory/sa-quick-dev/company-standards.md +218 -218
- package/claude/agents/sa-code-review.md +38 -38
- package/claude/agents/sa-create-story.md +37 -37
- package/claude/agents/sa-dev-story.md +38 -38
- package/claude/commands/bmad/bmb/agents/agent-builder.md +14 -14
- package/claude/commands/bmad/bmb/agents/module-builder.md +14 -14
- package/claude/commands/bmad/bmb/agents/workflow-builder.md +14 -14
- package/claude/commands/bmad/bmb/workflows/Meal Prep & Nutrition Plan.md +5 -5
- package/claude/commands/bmad/bmb/workflows/agent.md +5 -5
- package/claude/commands/bmad/bmb/workflows/create-module.md +5 -5
- package/claude/commands/bmad/bmb/workflows/create-workflow.md +5 -5
- package/claude/commands/bmad/bmb/workflows/edit-workflow.md +5 -5
- package/claude/commands/bmad/bmb/workflows/workflow-compliance-check.md +5 -5
- package/claude/commands/bmad/bmm/agents/analyst.md +14 -14
- package/claude/commands/bmad/bmm/agents/architect.md +14 -14
- package/claude/commands/bmad/bmm/agents/dev.md +14 -14
- package/claude/commands/bmad/bmm/agents/pm.md +14 -14
- package/claude/commands/bmad/bmm/agents/quick-flow-solo-dev.md +14 -14
- package/claude/commands/bmad/bmm/agents/sm.md +14 -14
- package/claude/commands/bmad/bmm/agents/tea.md +14 -14
- package/claude/commands/bmad/bmm/agents/tech-writer.md +14 -14
- package/claude/commands/bmad/bmm/agents/ux-designer.md +14 -14
- package/claude/commands/bmad/bmm/workflows/check-implementation-readiness.md +9 -9
- package/claude/commands/bmad/bmm/workflows/code-review.md +14 -14
- package/claude/commands/bmad/bmm/workflows/correct-course.md +14 -14
- package/claude/commands/bmad/bmm/workflows/create-architecture.md +8 -8
- package/claude/commands/bmad/bmm/workflows/create-epics-and-stories.md +9 -9
- package/claude/commands/bmad/bmm/workflows/create-excalidraw-dataflow.md +13 -13
- package/claude/commands/bmad/bmm/workflows/create-excalidraw-diagram.md +13 -13
- package/claude/commands/bmad/bmm/workflows/create-excalidraw-flowchart.md +13 -13
- package/claude/commands/bmad/bmm/workflows/create-excalidraw-wireframe.md +13 -13
- package/claude/commands/bmad/bmm/workflows/create-prd.md +11 -11
- package/claude/commands/bmad/bmm/workflows/create-product-brief.md +9 -9
- package/claude/commands/bmad/bmm/workflows/create-story.md +14 -14
- package/claude/commands/bmad/bmm/workflows/create-tech-spec.md +5 -5
- package/claude/commands/bmad/bmm/workflows/create-user-guide.md +5 -5
- package/claude/commands/bmad/bmm/workflows/create-ux-design.md +9 -9
- package/claude/commands/bmad/bmm/workflows/dev-story.md +14 -14
- package/claude/commands/bmad/bmm/workflows/document-project.md +13 -13
- package/claude/commands/bmad/bmm/workflows/fast-track-dev.md +4 -4
- package/claude/commands/bmad/bmm/workflows/generate-project-context.md +11 -11
- package/claude/commands/bmad/bmm/workflows/quality-process.md +5 -5
- package/claude/commands/bmad/bmm/workflows/quick-dev.md +5 -5
- package/claude/commands/bmad/bmm/workflows/research.md +5 -5
- package/claude/commands/bmad/bmm/workflows/retrospective.md +13 -13
- package/claude/commands/bmad/bmm/workflows/sprint-planning.md +14 -14
- package/claude/commands/bmad/bmm/workflows/sprint-status.md +14 -14
- package/claude/commands/bmad/bmm/workflows/testarch-atdd.md +13 -13
- package/claude/commands/bmad/bmm/workflows/testarch-automate.md +13 -13
- package/claude/commands/bmad/bmm/workflows/testarch-ci.md +13 -13
- package/claude/commands/bmad/bmm/workflows/testarch-framework.md +13 -13
- package/claude/commands/bmad/bmm/workflows/testarch-nfr.md +13 -13
- package/claude/commands/bmad/bmm/workflows/testarch-test-design.md +13 -13
- package/claude/commands/bmad/bmm/workflows/testarch-test-review.md +13 -13
- package/claude/commands/bmad/bmm/workflows/testarch-trace.md +13 -13
- package/claude/commands/bmad/bmm/workflows/workflow-init.md +14 -14
- package/claude/commands/bmad/bmm/workflows/workflow-status.md +13 -13
- package/claude/commands/bmad/cis/agents/brainstorming-coach.md +14 -14
- package/claude/commands/bmad/cis/agents/creative-problem-solver.md +14 -14
- package/claude/commands/bmad/cis/agents/design-thinking-coach.md +14 -14
- package/claude/commands/bmad/cis/agents/innovation-strategist.md +14 -14
- package/claude/commands/bmad/cis/agents/presentation-master.md +14 -14
- package/claude/commands/bmad/cis/agents/storyteller.md +14 -14
- package/claude/commands/bmad/cis/workflows/design-thinking.md +13 -13
- package/claude/commands/bmad/cis/workflows/innovation-strategy.md +13 -13
- package/claude/commands/bmad/cis/workflows/problem-solving.md +13 -13
- package/claude/commands/bmad/cis/workflows/storytelling.md +13 -13
- package/claude/commands/bmad/core/agents/bmad-master.md +14 -14
- package/claude/commands/bmad/core/tasks/index-docs.md +9 -9
- package/claude/commands/bmad/core/workflows/brainstorming.md +5 -5
- package/claude/commands/bmad/core/workflows/party-mode.md +5 -5
- package/claude/commands/bmad/core/workflows/shard-docs.md +9 -9
- package/claude/commands/get-features/SKILL.md +247 -247
- package/claude/commands/get-features/oauth-config.example.json +9 -9
- package/claude/commands/get-features/oauth-login.js +157 -157
- package/claude/commands/jira_sync/sync-epics-stories.md +5 -5
- package/claude/commands/sa-jira-sync.md +11 -11
- package/claude/commands/sa-quick-dev.md +138 -138
- package/claude/commands/sa-skill-creator/sa-skill-creator.md +5 -5
- package/claude/settings.local.json +56 -54
- package/claude/skills/MasterCrud/SKILL.md +144 -144
- package/claude/skills/MasterCrud/data/MasterCrud.types.ts +1327 -1327
- package/claude/skills/delivery-sa-agent-guides/SKILL.md +162 -0
- package/claude/skills/generate-commits-by-phase/skill.md +5 -5
- package/claude/skills/sa-qa-data-generator/SKILL.md +485 -0
- package/gemini/commands/BMad/agents/analyst.toml +5 -5
- package/gemini/commands/BMad/agents/architect.toml +5 -5
- package/gemini/commands/BMad/agents/bmad-master.toml +5 -5
- package/gemini/commands/BMad/agents/bmad-orchestrator.toml +5 -5
- package/gemini/commands/BMad/agents/dev.toml +5 -5
- package/gemini/commands/BMad/agents/pm.toml +5 -5
- package/gemini/commands/BMad/agents/po.toml +5 -5
- package/gemini/commands/BMad/agents/qa.toml +5 -5
- package/gemini/commands/BMad/agents/sm.toml +5 -5
- package/gemini/commands/BMad/agents/ux-expert.toml +5 -5
- package/gemini/commands/BMad/tasks/advanced-elicitation.toml +5 -5
- package/gemini/commands/BMad/tasks/apply-qa-fixes.toml +5 -5
- package/gemini/commands/BMad/tasks/brownfield-create-epic.toml +5 -5
- package/gemini/commands/BMad/tasks/brownfield-create-story.toml +5 -5
- package/gemini/commands/BMad/tasks/correct-course.toml +5 -5
- package/gemini/commands/BMad/tasks/create-brownfield-story.toml +5 -5
- package/gemini/commands/BMad/tasks/create-deep-research-prompt.toml +5 -5
- package/gemini/commands/BMad/tasks/create-doc.toml +5 -5
- package/gemini/commands/BMad/tasks/create-next-story.toml +5 -5
- package/gemini/commands/BMad/tasks/document-project.toml +5 -5
- package/gemini/commands/BMad/tasks/execute-checklist.toml +5 -5
- package/gemini/commands/BMad/tasks/facilitate-brainstorming-session.toml +5 -5
- package/gemini/commands/BMad/tasks/generate-ai-frontend-prompt.toml +5 -5
- package/gemini/commands/BMad/tasks/index-docs.toml +5 -5
- package/gemini/commands/BMad/tasks/kb-mode-interaction.toml +5 -5
- package/gemini/commands/BMad/tasks/nfr-assess.toml +5 -5
- package/gemini/commands/BMad/tasks/qa-gate.toml +5 -5
- package/gemini/commands/BMad/tasks/review-story.toml +5 -5
- package/gemini/commands/BMad/tasks/risk-profile.toml +5 -5
- package/gemini/commands/BMad/tasks/shard-doc.toml +5 -5
- package/gemini/commands/BMad/tasks/test-design.toml +5 -5
- package/gemini/commands/BMad/tasks/trace-requirements.toml +5 -5
- package/gemini/commands/BMad/tasks/validate-next-story.toml +5 -5
- package/gemini/commands/bmad-agent-bmb-agent-builder.toml +12 -12
- package/gemini/commands/bmad-agent-bmb-module-builder.toml +12 -12
- package/gemini/commands/bmad-agent-bmb-workflow-builder.toml +12 -12
- package/gemini/commands/bmad-agent-bmm-analyst.toml +12 -12
- package/gemini/commands/bmad-agent-bmm-architect.toml +12 -12
- package/gemini/commands/bmad-agent-bmm-dev.toml +12 -12
- package/gemini/commands/bmad-agent-bmm-pm.toml +12 -12
- package/gemini/commands/bmad-agent-bmm-quick-flow-solo-dev.toml +12 -12
- package/gemini/commands/bmad-agent-bmm-sm.toml +12 -12
- package/gemini/commands/bmad-agent-bmm-tea.toml +12 -12
- package/gemini/commands/bmad-agent-bmm-tech-writer.toml +12 -12
- package/gemini/commands/bmad-agent-bmm-ux-designer.toml +12 -12
- package/gemini/commands/bmad-agent-cis-brainstorming-coach.toml +12 -12
- package/gemini/commands/bmad-agent-cis-creative-problem-solver.toml +12 -12
- package/gemini/commands/bmad-agent-cis-design-thinking-coach.toml +12 -12
- package/gemini/commands/bmad-agent-cis-innovation-strategist.toml +12 -12
- package/gemini/commands/bmad-agent-cis-presentation-master.toml +12 -12
- package/gemini/commands/bmad-agent-cis-storyteller.toml +12 -12
- package/gemini/commands/bmad-agent-core-bmad-master.toml +12 -12
- package/gemini/commands/bmad-task-core-index-docs.toml +12 -12
- package/gemini/commands/bmad-task-core-review-adversarial-general.toml +12 -12
- package/gemini/commands/bmad-task-core-shard-doc.toml +12 -12
- package/gemini/commands/bmad-task-core-validate-workflow.toml +12 -12
- package/gemini/commands/bmad-task-core-workflow.toml +12 -12
- package/gemini/commands/bmad-workflow-bmb-Meal Prep & Nutrition Plan.toml +4 -4
- package/gemini/commands/bmad-workflow-bmb-agent.toml +4 -4
- package/gemini/commands/bmad-workflow-bmb-create-module.toml +4 -4
- package/gemini/commands/bmad-workflow-bmb-create-workflow.toml +4 -4
- package/gemini/commands/bmad-workflow-bmb-edit-workflow.toml +4 -4
- package/gemini/commands/bmad-workflow-bmb-workflow-compliance-check.toml +4 -4
- package/gemini/commands/bmad-workflow-bmm-check-implementation-readiness.toml +4 -4
- package/gemini/commands/bmad-workflow-bmm-code-review.toml +13 -13
- package/gemini/commands/bmad-workflow-bmm-correct-course.toml +13 -13
- package/gemini/commands/bmad-workflow-bmm-create-architecture.toml +4 -4
- package/gemini/commands/bmad-workflow-bmm-create-epics-and-stories.toml +8 -8
- package/gemini/commands/bmad-workflow-bmm-create-excalidraw-dataflow.toml +12 -12
- package/gemini/commands/bmad-workflow-bmm-create-excalidraw-diagram.toml +12 -12
- package/gemini/commands/bmad-workflow-bmm-create-excalidraw-flowchart.toml +12 -12
- package/gemini/commands/bmad-workflow-bmm-create-excalidraw-wireframe.toml +12 -12
- package/gemini/commands/bmad-workflow-bmm-create-prd.toml +10 -10
- package/gemini/commands/bmad-workflow-bmm-create-product-brief.toml +4 -4
- package/gemini/commands/bmad-workflow-bmm-create-story.toml +13 -13
- package/gemini/commands/bmad-workflow-bmm-create-tech-spec.toml +4 -4
- package/gemini/commands/bmad-workflow-bmm-create-user-guide.toml +4 -4
- package/gemini/commands/bmad-workflow-bmm-create-ux-design.toml +4 -4
- package/gemini/commands/bmad-workflow-bmm-dev-story.toml +13 -13
- package/gemini/commands/bmad-workflow-bmm-document-project.toml +12 -12
- package/gemini/commands/bmad-workflow-bmm-generate-project-context.toml +10 -10
- package/gemini/commands/bmad-workflow-bmm-quality-process.toml +4 -4
- package/gemini/commands/bmad-workflow-bmm-quick-dev.toml +4 -4
- package/gemini/commands/bmad-workflow-bmm-research.toml +4 -4
- package/gemini/commands/bmad-workflow-bmm-retrospective.toml +12 -12
- package/gemini/commands/bmad-workflow-bmm-sprint-planning.toml +13 -13
- package/gemini/commands/bmad-workflow-bmm-sprint-status.toml +13 -13
- package/gemini/commands/bmad-workflow-bmm-testarch-atdd.toml +12 -12
- package/gemini/commands/bmad-workflow-bmm-testarch-automate.toml +12 -12
- package/gemini/commands/bmad-workflow-bmm-testarch-ci.toml +12 -12
- package/gemini/commands/bmad-workflow-bmm-testarch-framework.toml +12 -12
- package/gemini/commands/bmad-workflow-bmm-testarch-nfr.toml +12 -12
- package/gemini/commands/bmad-workflow-bmm-testarch-test-design.toml +12 -12
- package/gemini/commands/bmad-workflow-bmm-testarch-test-review.toml +12 -12
- package/gemini/commands/bmad-workflow-bmm-testarch-trace.toml +12 -12
- package/gemini/commands/bmad-workflow-bmm-workflow-init.toml +12 -12
- package/gemini/commands/bmad-workflow-bmm-workflow-status.toml +12 -12
- package/gemini/commands/bmad-workflow-cis-design-thinking.toml +12 -12
- package/gemini/commands/bmad-workflow-cis-innovation-strategy.toml +12 -12
- package/gemini/commands/bmad-workflow-cis-problem-solving.toml +12 -12
- package/gemini/commands/bmad-workflow-cis-storytelling.toml +12 -12
- package/gemini/commands/bmad-workflow-core-brainstorming.toml +4 -4
- package/gemini/commands/bmad-workflow-core-party-mode.toml +4 -4
- package/gemini/commands/bmad-workflow-core-shard-docs.toml +4 -4
- package/gemini/commands/fast-track-dev.toml +4 -4
- package/gemini/commands/sa-jira-sync.toml +9 -9
- package/gemini/commands/sa-workflow-sa-skill-creator.toml +4 -4
- package/gemini/commands/sa-workflow-sync-epics-stories.toml +4 -4
- package/github/CODEOWNERS +7 -7
- package/github/agents/bmd-custom-bmb-agent-builder.agent.md +17 -17
- package/github/agents/bmd-custom-bmb-module-builder.agent.md +17 -17
- package/github/agents/bmd-custom-bmb-workflow-builder.agent.md +17 -17
- package/github/agents/bmd-custom-bmm-analyst.agent.md +17 -17
- package/github/agents/bmd-custom-bmm-architect.agent.md +17 -17
- package/github/agents/bmd-custom-bmm-dev.agent.md +17 -17
- package/github/agents/bmd-custom-bmm-pm.agent.md +17 -17
- package/github/agents/bmd-custom-bmm-quick-flow-solo-dev.agent.md +17 -17
- package/github/agents/bmd-custom-bmm-sm.agent.md +17 -17
- package/github/agents/bmd-custom-bmm-tea.agent.md +17 -17
- package/github/agents/bmd-custom-bmm-tech-writer.agent.md +17 -17
- package/github/agents/bmd-custom-bmm-ux-designer.agent.md +17 -17
- package/github/agents/bmd-custom-cis-brainstorming-coach.agent.md +17 -17
- package/github/agents/bmd-custom-cis-creative-problem-solver.agent.md +17 -17
- package/github/agents/bmd-custom-cis-design-thinking-coach.agent.md +17 -17
- package/github/agents/bmd-custom-cis-innovation-strategist.agent.md +17 -17
- package/github/agents/bmd-custom-cis-presentation-master.agent.md +17 -17
- package/github/agents/bmd-custom-cis-storyteller.agent.md +17 -17
- package/github/agents/bmd-custom-core-bmad-master.agent.md +17 -17
- package/github/workflows/publish-qa.yml +59 -0
- package/github/workflows/publish.yml +150 -150
- package/index.js +9 -9
- package/mcp.json +33 -14
- package/package.json +42 -42
- package/resources/images/Siesa_Logosimbolo_Azul.svg +24 -24
- package/resources/images/Siesa_Logosimbolo_Blanco.svg +24 -24
- package/resources/images/Siesa_Simbolo_Azul.svg +14 -14
- package/resources/images/Siesa_Simbolo_Blanco.svg +14 -14
- package/siesa-agents/bmm/workflows/1-analysis/create-product-brief/workflow_ext.md +70 -70
- package/siesa-agents/bmm/workflows/2-plan-workflows/create-ux-design/workflow_ext.md +105 -70
- package/siesa-agents/bmm/workflows/2-plan-workflows/prd/workflow_ext.md +119 -119
- package/siesa-agents/bmm/workflows/3-solutioning/check-implementation-readiness/workflow_ext.md +70 -70
- package/siesa-agents/bmm/workflows/3-solutioning/create-architecture/workflow_ext.md +103 -101
- package/siesa-agents/bmm/workflows/3-solutioning/create-epics-and-stories/workflow_ext.md +146 -146
- package/siesa-agents/bmm/workflows/3-solutioning/quality-process/prompts/prompt_design_test.md +95 -95
- package/siesa-agents/bmm/workflows/3-solutioning/quality-process/prompts/prompt_dor_gate.md +379 -0
- package/siesa-agents/bmm/workflows/3-solutioning/quality-process/prompts/prompt_playwright_impl.md +355 -0
- package/siesa-agents/bmm/workflows/3-solutioning/quality-process/prompts/prompt_test_plan.md +340 -340
- package/siesa-agents/bmm/workflows/3-solutioning/quality-process/workflow.md +1708 -604
- package/siesa-agents/bmm/workflows/4-implementation/code-review/workflow_ext.md +221 -141
- package/siesa-agents/bmm/workflows/4-implementation/correct-course/workflow_ext.md +10 -10
- package/siesa-agents/bmm/workflows/4-implementation/create-story/workflow_ext.md +79 -45
- package/siesa-agents/bmm/workflows/4-implementation/dev-story/workflow_ext.md +143 -109
- package/siesa-agents/bmm/workflows/4-implementation/sprint-planning/workflow_ext.md +119 -119
- package/siesa-agents/bmm/workflows/4-implementation/sprint-status/workflow_ext.md +206 -164
- package/siesa-agents/bmm/workflows/fast-track-dev/completion-summary-fast-track-dev.md +76 -76
- package/siesa-agents/bmm/workflows/fast-track-dev/steps/step-01-init.md +161 -161
- package/siesa-agents/bmm/workflows/fast-track-dev/steps/step-02-configure.md +195 -195
- package/siesa-agents/bmm/workflows/fast-track-dev/steps/step-03-execute.md +169 -169
- package/siesa-agents/bmm/workflows/fast-track-dev/workflow-plan-fast-track-dev.md +198 -198
- package/siesa-agents/bmm/workflows/fast-track-dev/workflow.md +57 -57
- package/siesa-agents/bmm/workflows/generate-project-context/workflow_ext.md +189 -189
- package/siesa-agents/bmm/workflows/workflow-status/Init/workflow_ext.md +194 -187
- package/siesa-agents/core/tasks/shard-doc.md +341 -341
- package/siesa-agents/observability/README.md +81 -0
- package/siesa-agents/observability/scripts/sa-emit.js +246 -0
- package/siesa-agents/resources/architecture/architecture-both.md +822 -822
- package/siesa-agents/resources/architecture/architecture-single-backend.md +565 -565
- package/siesa-agents/resources/ux-ui/ux-design-specification.md +837 -0
- package/siesa-agents/sa/mcp_database/GUIA_INSTALACION.md +640 -0
- package/siesa-agents/sa/mcp_database/README.md +61 -0
- package/siesa-agents/sa/mcp_database/mssql/.env.example +30 -0
- package/siesa-agents/sa/mcp_database/mssql/README.md +108 -0
- package/siesa-agents/sa/mcp_database/mssql/package-lock.json +2302 -0
- package/siesa-agents/sa/mcp_database/mssql/package.json +29 -0
- package/siesa-agents/sa/mcp_database/mssql/sql/GetAllDependencies.sql +491 -0
- package/siesa-agents/sa/mcp_database/mssql/sql/GetAllDependencies_JSON.sql +516 -0
- package/siesa-agents/sa/mcp_database/mssql/src/index.ts +143 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/CreateIndexTool.ts +50 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/CreateTableTool.ts +44 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/DescribeTableTool.ts +144 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/DropTableTool.ts +36 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/ExecuteQueryTool.ts +66 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/GetDependenciesTool.ts +125 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/GetForeignKeysTool.ts +84 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/GetFunctionContentTool.ts +56 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/GetStoredProcedureContentTool.ts +57 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/GetTableDataTool.ts +64 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/GetTableMetadataTool.ts +57 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/GetViewContentTool.ts +52 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/InsertDataTool.ts +94 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/ListTableTool.ts +53 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/ReadDataTool.ts +61 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/SaveSqlDefinitionTool.ts +54 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/SqlConnection.ts +71 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/SqlHelpers.ts +42 -0
- package/siesa-agents/sa/mcp_database/mssql/src/tools/UpdateDataTool.ts +69 -0
- package/siesa-agents/sa/mcp_database/mssql/tsconfig.json +19 -0
- package/siesa-agents/sa/mcp_database/postgresql/.env.example +30 -0
- package/siesa-agents/sa/mcp_database/postgresql/GUIA_INSTALACION.md +464 -0
- package/siesa-agents/sa/mcp_database/postgresql/PROMPT_Generacion_Datos_QA.md +371 -0
- package/siesa-agents/sa/mcp_database/postgresql/README.md +129 -0
- package/siesa-agents/sa/mcp_database/postgresql/package-lock.json +1567 -0
- package/siesa-agents/sa/mcp_database/postgresql/package.json +29 -0
- package/siesa-agents/sa/mcp_database/postgresql/sql/GetAllDependencies_JSON_PG.sql +695 -0
- package/siesa-agents/sa/mcp_database/postgresql/sql/GetAllDependencies_PG.sql +729 -0
- package/siesa-agents/sa/mcp_database/postgresql/src/index.ts +128 -0
- package/siesa-agents/sa/mcp_database/postgresql/src/tools/DescribeTableTool.ts +126 -0
- package/siesa-agents/sa/mcp_database/postgresql/src/tools/ExecuteQueryTool.ts +97 -0
- package/siesa-agents/sa/mcp_database/postgresql/src/tools/GetDependenciesTool.ts +121 -0
- package/siesa-agents/sa/mcp_database/postgresql/src/tools/GetForeignKeysTool.ts +88 -0
- package/siesa-agents/sa/mcp_database/postgresql/src/tools/GetFunctionContentTool.ts +73 -0
- package/siesa-agents/sa/mcp_database/postgresql/src/tools/GetTableDataTool.ts +56 -0
- package/siesa-agents/sa/mcp_database/postgresql/src/tools/GetTableMetadataTool.ts +55 -0
- package/siesa-agents/sa/mcp_database/postgresql/src/tools/GetViewContentTool.ts +56 -0
- package/siesa-agents/sa/mcp_database/postgresql/src/tools/InsertDataTool.ts +99 -0
- package/siesa-agents/sa/mcp_database/postgresql/src/tools/ListTableTool.ts +54 -0
- package/siesa-agents/sa/mcp_database/postgresql/src/tools/PgConnection.ts +35 -0
- package/siesa-agents/sa/mcp_database/postgresql/src/tools/PgHelpers.ts +10 -0
- package/siesa-agents/sa/mcp_database/postgresql/src/tools/ReadDataTool.ts +51 -0
- package/siesa-agents/sa/mcp_database/postgresql/src/tools/UpdateDataTool.ts +67 -0
- package/siesa-agents/sa/mcp_database/postgresql/tsconfig.json +19 -0
- package/siesa-agents/sa/sa-jira-sync-api/jira-sync-api.md +246 -246
- package/siesa-agents/sa/sa-skills-creator/skill-creator/LICENSE.txt +201 -201
- package/siesa-agents/sa/sa-skills-creator/skill-creator/SKILL.md +479 -479
- package/siesa-agents/sa/sa-skills-creator/skill-creator/agents/analyzer.md +274 -274
- package/siesa-agents/sa/sa-skills-creator/skill-creator/agents/comparator.md +202 -202
- package/siesa-agents/sa/sa-skills-creator/skill-creator/agents/grader.md +223 -223
- package/siesa-agents/sa/sa-skills-creator/skill-creator/assets/eval_review.html +146 -146
- package/siesa-agents/sa/sa-skills-creator/skill-creator/eval-viewer/generate_review.py +471 -471
- package/siesa-agents/sa/sa-skills-creator/skill-creator/eval-viewer/viewer.html +1325 -1325
- package/siesa-agents/sa/sa-skills-creator/skill-creator/references/schemas.md +430 -430
- package/siesa-agents/sa/sa-skills-creator/skill-creator/scripts/aggregate_benchmark.py +401 -401
- package/siesa-agents/sa/sa-skills-creator/skill-creator/scripts/generate_report.py +326 -326
- package/siesa-agents/sa/sa-skills-creator/skill-creator/scripts/improve_description.py +248 -248
- package/siesa-agents/sa/sa-skills-creator/skill-creator/scripts/package_skill.py +136 -136
- package/siesa-agents/sa/sa-skills-creator/skill-creator/scripts/quick_validate.py +102 -102
- package/siesa-agents/sa/sa-skills-creator/skill-creator/scripts/run_eval.py +310 -310
- package/siesa-agents/sa/sa-skills-creator/skill-creator/scripts/run_loop.py +332 -332
- package/siesa-agents/sa/sa-skills-creator/skill-creator/scripts/utils.py +47 -47
- package/siesa-agents/sa/sa-skills-creator/workflow.md +218 -218
- package/siesa-agents/sa/sync-epics-stories/completion-summary-sync-epics-stories.md +43 -43
- package/siesa-agents/sa/sync-epics-stories/data/templates/epic-template.json +12 -12
- package/siesa-agents/sa/sync-epics-stories/data/templates/story-template.json +12 -12
- package/siesa-agents/sa/sync-epics-stories/data/templates/subtask-template.json +18 -18
- package/siesa-agents/sa/sync-epics-stories/data/templates/task-template.json +6 -6
- package/siesa-agents/sa/sync-epics-stories/steps/step-01-init.md +155 -155
- package/siesa-agents/sa/sync-epics-stories/steps/step-01b-continue.md +79 -79
- package/siesa-agents/sa/sync-epics-stories/steps/step-02-setup.md +174 -174
- package/siesa-agents/sa/sync-epics-stories/steps/step-03-scope.md +113 -113
- package/siesa-agents/sa/sync-epics-stories/steps/step-04-epics.md +226 -226
- package/siesa-agents/sa/sync-epics-stories/steps/step-05-stories.md +383 -383
- package/siesa-agents/sa/sync-epics-stories/workflow-plan-sync-epics-stories.md +251 -251
- package/siesa-agents/sa/sync-epics-stories/workflow.md +91 -91
- package/siesa-agents/scripts/bmad_orchestrator.py +900 -900
- package/siesa-agents/scripts/bmad_to_agiletest.py +1584 -0
- package/siesa-agents/scripts/jira/README.md +76 -76
- package/siesa-agents/scripts/jira/add-comment.js +31 -31
- package/siesa-agents/scripts/jira/batch-create.js +68 -68
- package/siesa-agents/scripts/jira/create-issue.js +44 -44
- package/siesa-agents/scripts/jira/edit-issue.js +39 -39
- package/siesa-agents/scripts/jira/get-issue.js +39 -39
- package/siesa-agents/scripts/jira/lib/adf.js +88 -88
- package/siesa-agents/scripts/jira/lib/args.js +44 -44
- package/siesa-agents/scripts/jira/lib/jira-client.js +165 -165
- package/siesa-agents/scripts/jira/refresh-token.js +50 -50
- package/siesa-agents/scripts/jira/search.js +47 -47
- package/siesa-agents/scripts/jira/transition.js +80 -80
- package/siesa-agents/scripts/merge_test_design.py +106 -0
- package/siesa-agents/scripts/phases/phase1.js +110 -110
- package/siesa-agents/scripts/phases/phase2.js +110 -110
- package/siesa-agents/scripts/phases/phase3.js +110 -110
- package/vscode/mcp.json +15 -15
- package/vscode/settings.json +12 -12
|
@@ -1,565 +1,565 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: base-architecture
|
|
3
|
-
scope: backend
|
|
4
|
-
status: base
|
|
5
|
-
note: >
|
|
6
|
-
This document was automatically generated during siesa-agents installation.
|
|
7
|
-
It represents the Siesa corporate base architecture applicable to all microservices.
|
|
8
|
-
It can be extended with the /create-architecture workflow for project-specific decisions.
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Architecture Decision Document — Siesa Corporate Base (Backend)
|
|
12
|
-
|
|
13
|
-
_This document establishes the mandatory backend architectural decisions for all Siesa microservices. It serves as the source of truth for consistent AI-driven development._
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## 1. Technology Stack
|
|
18
|
-
|
|
19
|
-
### 1.1 Backend
|
|
20
|
-
|
|
21
|
-
| Layer | Technology | Version | Notes |
|
|
22
|
-
|-------|-----------|---------|-------|
|
|
23
|
-
| Language | C# | Latest | Modern features (records, pattern matching) |
|
|
24
|
-
| Framework | .NET | 10.x | Minimal API — NO MVC controllers |
|
|
25
|
-
| Primary ORM | Entity Framework Core | 10.x | Code-first with migrations |
|
|
26
|
-
| Advanced ORM | linq2db | Latest | Complex and high-performance queries |
|
|
27
|
-
| Dynamic queries | DynamicLinq | Latest | Filters from user input |
|
|
28
|
-
| Composable LINQ | LinqKit | Latest | Composable predicates in repositories |
|
|
29
|
-
| Validation | FluentValidation | 11.* | `LocalizedValidator<T>` |
|
|
30
|
-
| Testing | xUnit | Latest | TDD mandatory |
|
|
31
|
-
| DB | PostgreSQL | 18+ | One per microservice |
|
|
32
|
-
| PDF | QuestPDF | Latest | Document generation |
|
|
33
|
-
| API Docs | Scalar | Latest | NO Swagger / NO OpenAPI UI |
|
|
34
|
-
| Orchestration | Dapr | Latest | Pub/Sub + Service Invocation |
|
|
35
|
-
|
|
36
|
-
### 1.2 Mandatory Backend Libraries
|
|
37
|
-
|
|
38
|
-
| Library | Package | Version | Purpose |
|
|
39
|
-
|---------|---------|---------|---------|
|
|
40
|
-
| MasterPattern | `Siesa.MasterPattern` | `0.1.*` | Master CRUD, overrides |
|
|
41
|
-
| AccessManager | `Siesa.AccessManager` | `0.1.0-*` | RBAC, permissions |
|
|
42
|
-
| LookupField | `Siesa.BusinessUtilities.LookupFieldQueryBuilder` | `0.0.*` | Master record search |
|
|
43
|
-
| i18n | `Microsoft.Extensions.Localization` | Built-in | Internationalization |
|
|
44
|
-
| FluentValidation | `FluentValidation.DependencyInjectionExtensions` | `11.*` | Request validation |
|
|
45
|
-
| Pluralization | `Humanizer.Core` | `3.*` | EF Core table names |
|
|
46
|
-
| EF Core Design | `Microsoft.EntityFrameworkCore.Design` | `10.*` | `dotnet ef migrations` (required in API project) |
|
|
47
|
-
|
|
48
|
-
> **CRITICAL:** `Microsoft.EntityFrameworkCore.Design` must be present in the API (startup) project AND in Infrastructure. Without it in the startup project, `dotnet ef migrations add` will fail.
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## 2. Architectural Patterns
|
|
53
|
-
|
|
54
|
-
### 2.1 Clean Architecture + DDD (Mandatory)
|
|
55
|
-
|
|
56
|
-
Dependencies always point inward: `Domain ← Application ← Infrastructure ← API`
|
|
57
|
-
|
|
58
|
-
```
|
|
59
|
-
Domain → Entities, Value Objects, Domain Events, Repository Interfaces
|
|
60
|
-
Application → Commands, Queries, DTOs, Validators, Use Cases
|
|
61
|
-
Infrastructure → Repositories (EF Core), DB Context, external services
|
|
62
|
-
API → Minimal API Endpoints, Middleware
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
**Key principles:**
|
|
66
|
-
- Business logic ONLY in Domain and Application layers
|
|
67
|
-
- Infrastructure MUST NOT contain business logic
|
|
68
|
-
- Domain MUST NOT reference external frameworks
|
|
69
|
-
- Each microservice has its own dedicated PostgreSQL database
|
|
70
|
-
|
|
71
|
-
### 2.2 MasterPattern — GLOBAL / COMPANY-SPECIFIC / UNIVERSAL
|
|
72
|
-
|
|
73
|
-
`Siesa.MasterPattern` defines three master types:
|
|
74
|
-
|
|
75
|
-
| Type | `CompanyID` | Overrides Table | Override Endpoints | Assign Endpoints |
|
|
76
|
-
|------|-------------|-----------------|-------------------|-----------------|
|
|
77
|
-
| `GLOBAL` | NO | YES `{entity}_overrides` | YES `POST /{id}/override` | YES `POST /{id}/assign` |
|
|
78
|
-
| `COMPANY_SPECIFIC` | YES | NO | NO | NO |
|
|
79
|
-
| `UNIVERSAL` | NO | NO | NO | NO |
|
|
80
|
-
|
|
81
|
-
**Override Resolution Rule:**
|
|
82
|
-
```
|
|
83
|
-
Override.Field == NULL → Inherits from the base Global
|
|
84
|
-
Override.Field != NULL → Uses the override value
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
**Mandatory rules:**
|
|
88
|
-
- R-MP-001: All masters MUST extend `BaseMasterService<T>`
|
|
89
|
-
- R-MP-002: All masters MUST have a static `MasterDefinition` class
|
|
90
|
-
- R-MP-003: GLOBAL masters MUST have an Overrides table
|
|
91
|
-
- R-MP-004: Immutable fields (Code, Name) MUST NOT be in the Overrides table
|
|
92
|
-
- R-MP-005: Overridable fields MUST be nullable in Overrides
|
|
93
|
-
- R-MP-006: Tables MUST use snake_case
|
|
94
|
-
- R-MP-007: Override tables MUST follow the `{entities}_overrides` pattern
|
|
95
|
-
|
|
96
|
-
### 2.3 Result Pattern (Mandatory)
|
|
97
|
-
|
|
98
|
-
All domain operations return `Result<T>` — exceptions are never thrown for expected business flows.
|
|
99
|
-
|
|
100
|
-
```csharp
|
|
101
|
-
// ✅ Correct
|
|
102
|
-
public Result<UserDto> CreateUser(CreateUserCommand cmd)
|
|
103
|
-
{
|
|
104
|
-
if (string.IsNullOrEmpty(cmd.Email))
|
|
105
|
-
return Result.Failure<UserDto>("Email is required");
|
|
106
|
-
// ...
|
|
107
|
-
return Result.Success(new UserDto(user));
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// ❌ Incorrect
|
|
111
|
-
public UserDto CreateUser(CreateUserCommand cmd)
|
|
112
|
-
{
|
|
113
|
-
if (string.IsNullOrEmpty(cmd.Email))
|
|
114
|
-
throw new ArgumentException("Email is required"); // Do not use for business validations
|
|
115
|
-
}
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### 2.4 Dependency Injection — Registration Sequence (Mandatory)
|
|
119
|
-
|
|
120
|
-
```csharp
|
|
121
|
-
// Program.cs — MANDATORY ORDER
|
|
122
|
-
builder.Services.AddLocalization(); // 1. i18n first
|
|
123
|
-
builder.Services.AddFluentValidation(); // 2. Validation
|
|
124
|
-
builder.Services.AddDbContext<AppDbContext>(); // 3. DB Context
|
|
125
|
-
builder.Services.AddRepositories(); // 4. Repositories
|
|
126
|
-
builder.Services.AddApplicationServices(); // 5. Application services
|
|
127
|
-
builder.Services.AddMasterPattern(); // 6. MasterPattern
|
|
128
|
-
builder.Services.AddAccessManager(); // 7. AccessManager
|
|
129
|
-
builder.Services.AddLookupFieldQueryBuilder(); // 8. LookupField
|
|
130
|
-
builder.Services.AddHealthChecks(); // 9. Health Checks
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## 3. Solution Structure (Backend)
|
|
136
|
-
|
|
137
|
-
```
|
|
138
|
-
src/
|
|
139
|
-
├── {Service}.API/ # Presentation Layer — Minimal API Endpoints
|
|
140
|
-
│ ├── Endpoints/
|
|
141
|
-
│ │ └── {Feature}/ # Endpoint classes per feature
|
|
142
|
-
│ ├── Middleware/
|
|
143
|
-
│ └── Program.cs
|
|
144
|
-
├── {Service}.Application/ # Application Layer — CQRS, DTOs, Validators
|
|
145
|
-
│ └── {Feature}/
|
|
146
|
-
│ ├── Commands/
|
|
147
|
-
│ ├── Queries/
|
|
148
|
-
│ ├── DTOs/
|
|
149
|
-
│ ├── Validators/
|
|
150
|
-
│ └── Interfaces/
|
|
151
|
-
├── {Service}.Domain/ # Domain Layer — Entities, Value Objects, Events
|
|
152
|
-
│ └── {Feature}/
|
|
153
|
-
│ ├── Entities/
|
|
154
|
-
│ ├── ValueObjects/
|
|
155
|
-
│ └── Events/
|
|
156
|
-
└── {Service}.Infrastructure/ # Infrastructure Layer — EF Core, Repositories
|
|
157
|
-
├── Data/
|
|
158
|
-
│ ├── Configurations/
|
|
159
|
-
│ ├── Migrations/
|
|
160
|
-
│ └── {Service}DbContext.cs
|
|
161
|
-
└── Repositories/
|
|
162
|
-
tests/
|
|
163
|
-
├── {Service}.UnitTests/ # xUnit + EF Core InMemory
|
|
164
|
-
└── {Service}.IntegrationTests/ # xUnit + Testcontainers.PostgreSql
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
## 4. Backend Standards
|
|
170
|
-
|
|
171
|
-
### 4.1 DateTime — Mandatory Types
|
|
172
|
-
|
|
173
|
-
⚠️ **ALWAYS use `DateTimeOffset`, NEVER `DateTime`**
|
|
174
|
-
|
|
175
|
-
```csharp
|
|
176
|
-
// ✅ Correct
|
|
177
|
-
public DateTimeOffset CreatedAt { get; private set; } = DateTimeOffset.UtcNow;
|
|
178
|
-
public DateTimeOffset UpdatedAt { get; private set; } = DateTimeOffset.UtcNow;
|
|
179
|
-
|
|
180
|
-
// ❌ Incorrect
|
|
181
|
-
public DateTime CreatedAt { get; private set; } // NEVER
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
| Case | C# Type | PostgreSQL Type |
|
|
185
|
-
|------|---------|----------------|
|
|
186
|
-
| Timestamp with timezone | `DateTimeOffset` | `TIMESTAMP WITH TIME ZONE` |
|
|
187
|
-
| Date only | `DateOnly` | `DATE` |
|
|
188
|
-
| Time only | `TimeOnly` | `TIME` |
|
|
189
|
-
| NEVER use | ~~`DateTime`~~ | — |
|
|
190
|
-
|
|
191
|
-
### 4.2 Primary Keys — UUID v7
|
|
192
|
-
|
|
193
|
-
```csharp
|
|
194
|
-
// ✅ Mandatory — UUID v7 for all PKs
|
|
195
|
-
public Guid ID { get; private set; } = Guid.CreateVersion7();
|
|
196
|
-
|
|
197
|
-
// ❌ Incorrect
|
|
198
|
-
public Guid ID { get; private set; } = Guid.NewGuid(); // UUID v4 — do not use
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
PostgreSQL: `DEFAULT uuidv7()` in migrations.
|
|
202
|
-
|
|
203
|
-
### 4.3 Optimistic Concurrency — xmin
|
|
204
|
-
|
|
205
|
-
- All masters expose `rowVersion` (uint) in GET responses
|
|
206
|
-
- PUT/DELETE require the client to send `rowVersion`
|
|
207
|
-
- Mismatch → HTTP 409 Problem Details RFC 7807
|
|
208
|
-
- Force-save via `?force=true` (requires elevated permission)
|
|
209
|
-
|
|
210
|
-
### 4.4 ORM Strategy — When to Use Each Tool
|
|
211
|
-
|
|
212
|
-
| Tool | When to Use |
|
|
213
|
-
|------|------------|
|
|
214
|
-
| **EF Core 10** | Standard CRUD, DDD entities with tracking, relationships, migrations |
|
|
215
|
-
| **linq2db** | High-performance complex queries, dashboards, analytics, reports |
|
|
216
|
-
| **DynamicLinq** | Dynamic filters from user input, configurable grids |
|
|
217
|
-
| **LinqKit** | Type-safe composable predicates, DDD repositories with multiple criteria |
|
|
218
|
-
|
|
219
|
-
### 4.5 Domain Entity — Mandatory Structure
|
|
220
|
-
|
|
221
|
-
```csharp
|
|
222
|
-
public class {Entity}Entity : IMasterEntity
|
|
223
|
-
{
|
|
224
|
-
private {Entity}Entity() { } // EF Core materialization
|
|
225
|
-
|
|
226
|
-
private {Entity}Entity(Guid id, /* params */) : base()
|
|
227
|
-
{
|
|
228
|
-
ID = id;
|
|
229
|
-
// ...
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
// IMasterEntity
|
|
233
|
-
public Guid ID { get; private set; }
|
|
234
|
-
public string Code { get; private set; } = string.Empty; // Immutable after creation
|
|
235
|
-
public bool IsActive { get; set; } = true;
|
|
236
|
-
public uint Version { get; set; } // PostgreSQL xmin → rowVersion DTO
|
|
237
|
-
|
|
238
|
-
// Timestamps
|
|
239
|
-
public DateTimeOffset CreatedAt { get; private set; }
|
|
240
|
-
public DateTimeOffset UpdatedAt { get; private set; }
|
|
241
|
-
|
|
242
|
-
// Audit — FK to amgr_users_prj
|
|
243
|
-
public Guid CreatedByUserID { get; private set; }
|
|
244
|
-
public Guid UpdatedByUserID { get; private set; }
|
|
245
|
-
|
|
246
|
-
// Mandatory factory method
|
|
247
|
-
public static {Entity}Entity Create(/* params */, Guid createdByUserId)
|
|
248
|
-
{
|
|
249
|
-
return new {Entity}Entity(Guid.CreateVersion7(), /* params */);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
### 4.6 Minimal API — Endpoint Structure
|
|
255
|
-
|
|
256
|
-
```csharp
|
|
257
|
-
public static class {Feature}Endpoints
|
|
258
|
-
{
|
|
259
|
-
public static void Map{Feature}Endpoints(this IEndpointRouteBuilder app)
|
|
260
|
-
{
|
|
261
|
-
var group = app.MapGroup("/api/v1/{feature}")
|
|
262
|
-
.WithTags("{Feature}")
|
|
263
|
-
.RequireAuthorization();
|
|
264
|
-
|
|
265
|
-
group.MapPost("/", Create{Entity})
|
|
266
|
-
.WithName("Create{Entity}")
|
|
267
|
-
.Produces<{Entity}ResponseDto>(StatusCodes.Status201Created)
|
|
268
|
-
.ProducesValidationProblem();
|
|
269
|
-
|
|
270
|
-
group.MapGet("/{id:guid}", GetById)
|
|
271
|
-
.WithName("Get{Entity}ById")
|
|
272
|
-
.Produces<{Entity}ResponseDto>()
|
|
273
|
-
.Produces(StatusCodes.Status404NotFound);
|
|
274
|
-
|
|
275
|
-
group.MapPost("/search", Search)
|
|
276
|
-
.WithName("Search{Entity}")
|
|
277
|
-
.Produces<LookupFieldResult>();
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
**URL versioning mandatory:** `/api/v1/` prefix on all business endpoints.
|
|
283
|
-
|
|
284
|
-
### 4.7 Error Handling — Problem Details RFC 7807
|
|
285
|
-
|
|
286
|
-
```json
|
|
287
|
-
{
|
|
288
|
-
"type": "https://tools.ietf.org/html/rfc7807",
|
|
289
|
-
"title": "Validation Error",
|
|
290
|
-
"status": 400,
|
|
291
|
-
"detail": "One or more validation errors occurred.",
|
|
292
|
-
"errors": [
|
|
293
|
-
{ "field": "email", "message": "Email is required" }
|
|
294
|
-
]
|
|
295
|
-
}
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
| Scenario | HTTP Status |
|
|
299
|
-
|----------|------------|
|
|
300
|
-
| Validation | 400 |
|
|
301
|
-
| Unauthorized | 401 |
|
|
302
|
-
| Forbidden | 403 |
|
|
303
|
-
| Not found | 404 |
|
|
304
|
-
| Dependency conflict | 409 |
|
|
305
|
-
| Concurrency conflict (xmin) | 409 |
|
|
306
|
-
|
|
307
|
-
### 4.8 Testing Standards
|
|
308
|
-
|
|
309
|
-
```csharp
|
|
310
|
-
// Unit Tests — xUnit + EF Core InMemory
|
|
311
|
-
[Fact]
|
|
312
|
-
public async Task Handle_ValidCommand_ShouldCreate{Entity}()
|
|
313
|
-
{
|
|
314
|
-
// Arrange
|
|
315
|
-
var options = new DbContextOptionsBuilder<AppDbContext>()
|
|
316
|
-
.UseInMemoryDatabase(Guid.NewGuid().ToString()).Options;
|
|
317
|
-
// Act + Assert
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
// Integration Tests — xUnit + Testcontainers
|
|
321
|
-
[Collection("PostgreSQL")]
|
|
322
|
-
public class {Entity}IntegrationTests : IAsyncLifetime
|
|
323
|
-
{
|
|
324
|
-
// Testcontainers.PostgreSql — real database in a container
|
|
325
|
-
}
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
**TDD is mandatory** — write tests before production code.
|
|
329
|
-
|
|
330
|
-
### 4.9 LookupField — Integration
|
|
331
|
-
|
|
332
|
-
```csharp
|
|
333
|
-
// Program.cs
|
|
334
|
-
builder.Services.AddLookupFieldQueryBuilder();
|
|
335
|
-
|
|
336
|
-
// Endpoint — mandatory pattern
|
|
337
|
-
group.MapPost("/search", async (SearchRequest request, AppDbContext ctx,
|
|
338
|
-
ILookupFieldQueryService lookup) =>
|
|
339
|
-
{
|
|
340
|
-
try
|
|
341
|
-
{
|
|
342
|
-
var query = ctx.{Entities}.AsNoTracking();
|
|
343
|
-
var result = await lookup.SearchAsync(query, request);
|
|
344
|
-
return Results.Ok(result);
|
|
345
|
-
}
|
|
346
|
-
catch (LookupFieldValidationException ex)
|
|
347
|
-
{
|
|
348
|
-
return Results.BadRequest(new { errors = ex.Errors });
|
|
349
|
-
}
|
|
350
|
-
})
|
|
351
|
-
.RequirePermission("{service}.{entity}.read")
|
|
352
|
-
.WithName("Search{Entity}");
|
|
353
|
-
```
|
|
354
|
-
|
|
355
|
-
**LookupField rules:**
|
|
356
|
-
- R-LF-001: All master selectors MUST use LookupField
|
|
357
|
-
- R-LF-002: Backend MUST use `AsNoTracking()`
|
|
358
|
-
- R-LF-003: Backend MUST handle `LookupFieldValidationException`
|
|
359
|
-
- R-LF-004: Version with minor pinning `0.0.*`
|
|
360
|
-
- R-LF-005: Register with `services.AddLookupFieldQueryBuilder()`
|
|
361
|
-
- R-LF-006: Endpoint pattern: `POST /api/v1/{masters}/search`
|
|
362
|
-
|
|
363
|
-
---
|
|
364
|
-
|
|
365
|
-
## 5. Database Conventions (PostgreSQL)
|
|
366
|
-
|
|
367
|
-
### 5.1 Naming Conventions
|
|
368
|
-
|
|
369
|
-
| Element | Convention | C# → DB Example |
|
|
370
|
-
|---------|-----------|----------------|
|
|
371
|
-
| Tables | `snake_case` plural | `products`, `order_items` |
|
|
372
|
-
| Columns | `snake_case` | `CustomerID` → `customer_id` |
|
|
373
|
-
| FK columns | `{entity_name}_id` | `OriginWarehouseID` → `origin_warehouse_id` |
|
|
374
|
-
| Audit FKs | `{action}_by_user_id` | `CreatedByUserID` → `created_by_user_id` |
|
|
375
|
-
| Indexes | `ix_{table}_{columns}` | `ix_products_code` |
|
|
376
|
-
| Unique | `uk_{table}_{columns}` | `uk_products_code` |
|
|
377
|
-
| Constraints | `{type}_{table}_{columns}` | `fk_orders_customers` |
|
|
378
|
-
| Schemas | `lowercase_underscore` | `inventory`, `sales` |
|
|
379
|
-
|
|
380
|
-
### 5.2 Projected Tables (Cross-Service)
|
|
381
|
-
|
|
382
|
-
Read-only local copies of entities from other microservices. Updated via Pub/Sub.
|
|
383
|
-
|
|
384
|
-
| Element | Convention | Example |
|
|
385
|
-
|---------|-----------|---------|
|
|
386
|
-
| C# Class | `{PREFIX}_{Entity}Prj` | `SEGM_CompanyPrj` |
|
|
387
|
-
| DB Table | `{prefix}_{origin_table}_prj` | `segm_companies_prj` |
|
|
388
|
-
| Prefix | 4 chars uppercase | `AUTH`, `INVT`, `SEGM`, `TPRT` |
|
|
389
|
-
|
|
390
|
-
**Mandatory patterns for projected tables:**
|
|
391
|
-
1. All inherit from `Entity` (Guid Id as PK)
|
|
392
|
-
2. Read-only across 3 layers: API (no POST/PUT/DELETE), Repository (reads only), EF Core (`.AsNoTracking()`)
|
|
393
|
-
3. No physical FKs between projected tables (out-of-order event handling)
|
|
394
|
-
4. IDs belong to the origin service — Core NEVER generates IDs for projections
|
|
395
|
-
|
|
396
|
-
### 5.3 EF Core — Mapping Strategy
|
|
397
|
-
|
|
398
|
-
```csharp
|
|
399
|
-
// DbContext — always apply snake_case LAST
|
|
400
|
-
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
401
|
-
{
|
|
402
|
-
modelBuilder.HasDefaultSchema("{service}");
|
|
403
|
-
modelBuilder.ApplyConfigurationsFromAssembly(typeof(AppDbContext).Assembly);
|
|
404
|
-
modelBuilder.ApplySnakeCaseNaming(); // ALWAYS last
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
// Entity Configuration
|
|
408
|
-
public class {Entity}Configuration : IEntityTypeConfiguration<{Entity}Entity>
|
|
409
|
-
{
|
|
410
|
-
public void Configure(EntityTypeBuilder<{Entity}Entity> builder)
|
|
411
|
-
{
|
|
412
|
-
builder.ToTable("{entities}", "{schema}");
|
|
413
|
-
builder.HasKey(e => e.ID);
|
|
414
|
-
builder.Property(e => e.ID).HasColumnType("uuid").IsRequired();
|
|
415
|
-
builder.Property(e => e.Version)
|
|
416
|
-
.HasColumnName("xmin")
|
|
417
|
-
.HasColumnType("xid")
|
|
418
|
-
.ValueGeneratedOnAddOrUpdate()
|
|
419
|
-
.IsConcurrencyToken();
|
|
420
|
-
builder.Ignore(e => e.DomainEvents);
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
```
|
|
424
|
-
|
|
425
|
-
---
|
|
426
|
-
|
|
427
|
-
## 6. Infrastructure Decisions
|
|
428
|
-
|
|
429
|
-
### 6.1 Multi-Tenancy
|
|
430
|
-
|
|
431
|
-
- JWT Token contains `TenantId` → Connection Resolver selects the tenant database
|
|
432
|
-
- `Company-ID` in headers/payload for multi-company operations within the tenant
|
|
433
|
-
- Schema isolation per microservice within the tenant database
|
|
434
|
-
|
|
435
|
-
**Mandatory flow:**
|
|
436
|
-
```
|
|
437
|
-
Request → JWT Validation → TenantId Extraction → Connection Resolver → AppDbContext (tenant DB)
|
|
438
|
-
```
|
|
439
|
-
|
|
440
|
-
### 6.2 RBAC — Permissions System
|
|
441
|
-
|
|
442
|
-
- Permission namespace: `{service}.{resource}.{action}`
|
|
443
|
-
- Examples: `manufacturing.methods.create`, `segment.companies.read`
|
|
444
|
-
- Validated against AccessManager on EVERY operation
|
|
445
|
-
- Server-side enforcement ONLY — never trust UI context
|
|
446
|
-
|
|
447
|
-
```csharp
|
|
448
|
-
group.MapPost("/", CreateEntity)
|
|
449
|
-
.RequirePermission("{service}.{entity}.create");
|
|
450
|
-
```
|
|
451
|
-
|
|
452
|
-
### 6.3 Dapr Integration
|
|
453
|
-
|
|
454
|
-
**Pub/Sub — Topic naming:** `{service}.{entity}.{action}`
|
|
455
|
-
Examples: `inventory.cost-segment.updated`, `segment.company.created`
|
|
456
|
-
|
|
457
|
-
**Idempotency Handler Pattern:**
|
|
458
|
-
```csharp
|
|
459
|
-
[Topic("pubsub", "{service}.{entity}.{action}")]
|
|
460
|
-
public async Task<IActionResult> Handle{Entity}{Action}Event(
|
|
461
|
-
[FromBody] DomainEventEnvelope<{Entity}{Action}Event> envelope)
|
|
462
|
-
{
|
|
463
|
-
// Check idempotency (process only once)
|
|
464
|
-
// Validate tenantId
|
|
465
|
-
// Process event
|
|
466
|
-
}
|
|
467
|
-
```
|
|
468
|
-
|
|
469
|
-
### 6.4 Health Checks
|
|
470
|
-
|
|
471
|
-
```csharp
|
|
472
|
-
builder.Services.AddHealthChecks()
|
|
473
|
-
.AddNpgsql(connectionString, name: "postgresql")
|
|
474
|
-
.AddRedis(redisConnection, name: "redis");
|
|
475
|
-
|
|
476
|
-
app.MapHealthChecks("/health");
|
|
477
|
-
app.MapHealthChecks("/health/ready", new HealthCheckOptions
|
|
478
|
-
{
|
|
479
|
-
Predicate = check => check.Tags.Contains("ready")
|
|
480
|
-
});
|
|
481
|
-
```
|
|
482
|
-
|
|
483
|
-
### 6.5 Logging
|
|
484
|
-
|
|
485
|
-
```csharp
|
|
486
|
-
// Structured logging mandatory
|
|
487
|
-
_logger.LogInformation("Processing {EntityType} {EntityId} for tenant {TenantId}",
|
|
488
|
-
entityType, entityId, tenantId);
|
|
489
|
-
|
|
490
|
-
// NEVER log sensitive data
|
|
491
|
-
// Correlation IDs for request tracing
|
|
492
|
-
// Log levels: Trace, Debug, Information, Warning, Error, Critical
|
|
493
|
-
```
|
|
494
|
-
|
|
495
|
-
### 6.6 Docker
|
|
496
|
-
|
|
497
|
-
- Docker ONLY for production and CI/CD environments
|
|
498
|
-
- Local development without Docker using `dotnet CLI`
|
|
499
|
-
- `docker-compose` defines: PostgreSQL, Redis (Dapr state store), Dapr Placement
|
|
500
|
-
|
|
501
|
-
---
|
|
502
|
-
|
|
503
|
-
## 7. Naming Conventions Summary
|
|
504
|
-
|
|
505
|
-
### 7.1 C# / Backend
|
|
506
|
-
|
|
507
|
-
| Element | Convention | Example |
|
|
508
|
-
|---------|-----------|---------|
|
|
509
|
-
| Classes | PascalCase singular | `MethodEntity`, `WorkCenterRate` |
|
|
510
|
-
| Properties | PascalCase | `StorageGroupID`, `IsActive` |
|
|
511
|
-
| Private fields | `_camelCase` | `_repository`, `_daprClient` |
|
|
512
|
-
| Interfaces | `I` + PascalCase | `IUserRepository` |
|
|
513
|
-
| Commands | `{Action}{Entity}Command` | `CreateUserCommand` |
|
|
514
|
-
| Queries | `Get{Entity}Query` | `GetUserByIdQuery` |
|
|
515
|
-
| DTOs | `{Entity}{Type}Dto` | `UserResponseDto`, `UserCreateDto` |
|
|
516
|
-
|
|
517
|
-
### 7.2 PostgreSQL
|
|
518
|
-
|
|
519
|
-
| Element | Convention | Example |
|
|
520
|
-
|---------|-----------|---------|
|
|
521
|
-
| Tables | `snake_case` plural | `methods`, `work_centers` |
|
|
522
|
-
| Columns | `snake_case` | `cost_center_id`, `is_active` |
|
|
523
|
-
| FK columns | `{entity}_id` | `method_id`, `company_id` |
|
|
524
|
-
| Indexes | `ix_{table}_{cols}` | `ix_methods_code` |
|
|
525
|
-
| Unique | `uk_{table}_{cols}` | `uk_methods_code` |
|
|
526
|
-
|
|
527
|
-
---
|
|
528
|
-
|
|
529
|
-
## 8. Compliance Checklist — Backend (New Microservice)
|
|
530
|
-
|
|
531
|
-
```markdown
|
|
532
|
-
## Setup
|
|
533
|
-
- [ ] .NET 10 solution with 4 projects (API, Application, Domain, Infrastructure)
|
|
534
|
-
- [ ] NuGet: Siesa.MasterPattern 0.1.*, Siesa.AccessManager, LookupFieldQueryBuilder 0.0.*
|
|
535
|
-
- [ ] GitHub Packages source configured (PAT read:packages)
|
|
536
|
-
- [ ] PostgreSQL 18+ — dedicated database
|
|
537
|
-
- [ ] docker-compose with PostgreSQL + Redis + Dapr Placement
|
|
538
|
-
|
|
539
|
-
## Architecture
|
|
540
|
-
- [ ] Clean Architecture — dependencies point inward
|
|
541
|
-
- [ ] DDD — entities with factory methods, private setters
|
|
542
|
-
- [ ] UUID v7 (Guid.CreateVersion7()) on all PKs
|
|
543
|
-
- [ ] DateTimeOffset on all timestamps (NEVER DateTime)
|
|
544
|
-
- [ ] xmin concurrency on all master entities
|
|
545
|
-
- [ ] Result Pattern in domain operations
|
|
546
|
-
|
|
547
|
-
## MasterPattern
|
|
548
|
-
- [ ] All master entities implement IMasterEntity
|
|
549
|
-
- [ ] BaseMasterService<T> extended by all services
|
|
550
|
-
- [ ] MasterDefinition with correct Type (GLOBAL/COMPANY_SPECIFIC/UNIVERSAL)
|
|
551
|
-
- [ ] Override tables for GLOBAL masters (if applicable)
|
|
552
|
-
|
|
553
|
-
## API
|
|
554
|
-
- [ ] Minimal API (NO MVC controllers)
|
|
555
|
-
- [ ] URL versioning /api/v1/
|
|
556
|
-
- [ ] RBAC on all endpoints (RequirePermission)
|
|
557
|
-
- [ ] Problem Details RFC 7807 on all errors
|
|
558
|
-
- [ ] LookupField /search endpoint on all masters
|
|
559
|
-
- [ ] Scalar (NO Swagger)
|
|
560
|
-
|
|
561
|
-
## Testing
|
|
562
|
-
- [ ] TDD — tests written before production code
|
|
563
|
-
- [ ] xUnit + EF Core InMemory for unit tests
|
|
564
|
-
- [ ] xUnit + Testcontainers.PostgreSql for integration tests
|
|
565
|
-
```
|
|
1
|
+
---
|
|
2
|
+
type: base-architecture
|
|
3
|
+
scope: backend
|
|
4
|
+
status: base
|
|
5
|
+
note: >
|
|
6
|
+
This document was automatically generated during siesa-agents installation.
|
|
7
|
+
It represents the Siesa corporate base architecture applicable to all microservices.
|
|
8
|
+
It can be extended with the /create-architecture workflow for project-specific decisions.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Architecture Decision Document — Siesa Corporate Base (Backend)
|
|
12
|
+
|
|
13
|
+
_This document establishes the mandatory backend architectural decisions for all Siesa microservices. It serves as the source of truth for consistent AI-driven development._
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 1. Technology Stack
|
|
18
|
+
|
|
19
|
+
### 1.1 Backend
|
|
20
|
+
|
|
21
|
+
| Layer | Technology | Version | Notes |
|
|
22
|
+
|-------|-----------|---------|-------|
|
|
23
|
+
| Language | C# | Latest | Modern features (records, pattern matching) |
|
|
24
|
+
| Framework | .NET | 10.x | Minimal API — NO MVC controllers |
|
|
25
|
+
| Primary ORM | Entity Framework Core | 10.x | Code-first with migrations |
|
|
26
|
+
| Advanced ORM | linq2db | Latest | Complex and high-performance queries |
|
|
27
|
+
| Dynamic queries | DynamicLinq | Latest | Filters from user input |
|
|
28
|
+
| Composable LINQ | LinqKit | Latest | Composable predicates in repositories |
|
|
29
|
+
| Validation | FluentValidation | 11.* | `LocalizedValidator<T>` |
|
|
30
|
+
| Testing | xUnit | Latest | TDD mandatory |
|
|
31
|
+
| DB | PostgreSQL | 18+ | One per microservice |
|
|
32
|
+
| PDF | QuestPDF | Latest | Document generation |
|
|
33
|
+
| API Docs | Scalar | Latest | NO Swagger / NO OpenAPI UI |
|
|
34
|
+
| Orchestration | Dapr | Latest | Pub/Sub + Service Invocation |
|
|
35
|
+
|
|
36
|
+
### 1.2 Mandatory Backend Libraries
|
|
37
|
+
|
|
38
|
+
| Library | Package | Version | Purpose |
|
|
39
|
+
|---------|---------|---------|---------|
|
|
40
|
+
| MasterPattern | `Siesa.MasterPattern` | `0.1.*` | Master CRUD, overrides |
|
|
41
|
+
| AccessManager | `Siesa.AccessManager` | `0.1.0-*` | RBAC, permissions |
|
|
42
|
+
| LookupField | `Siesa.BusinessUtilities.LookupFieldQueryBuilder` | `0.0.*` | Master record search |
|
|
43
|
+
| i18n | `Microsoft.Extensions.Localization` | Built-in | Internationalization |
|
|
44
|
+
| FluentValidation | `FluentValidation.DependencyInjectionExtensions` | `11.*` | Request validation |
|
|
45
|
+
| Pluralization | `Humanizer.Core` | `3.*` | EF Core table names |
|
|
46
|
+
| EF Core Design | `Microsoft.EntityFrameworkCore.Design` | `10.*` | `dotnet ef migrations` (required in API project) |
|
|
47
|
+
|
|
48
|
+
> **CRITICAL:** `Microsoft.EntityFrameworkCore.Design` must be present in the API (startup) project AND in Infrastructure. Without it in the startup project, `dotnet ef migrations add` will fail.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 2. Architectural Patterns
|
|
53
|
+
|
|
54
|
+
### 2.1 Clean Architecture + DDD (Mandatory)
|
|
55
|
+
|
|
56
|
+
Dependencies always point inward: `Domain ← Application ← Infrastructure ← API`
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
Domain → Entities, Value Objects, Domain Events, Repository Interfaces
|
|
60
|
+
Application → Commands, Queries, DTOs, Validators, Use Cases
|
|
61
|
+
Infrastructure → Repositories (EF Core), DB Context, external services
|
|
62
|
+
API → Minimal API Endpoints, Middleware
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Key principles:**
|
|
66
|
+
- Business logic ONLY in Domain and Application layers
|
|
67
|
+
- Infrastructure MUST NOT contain business logic
|
|
68
|
+
- Domain MUST NOT reference external frameworks
|
|
69
|
+
- Each microservice has its own dedicated PostgreSQL database
|
|
70
|
+
|
|
71
|
+
### 2.2 MasterPattern — GLOBAL / COMPANY-SPECIFIC / UNIVERSAL
|
|
72
|
+
|
|
73
|
+
`Siesa.MasterPattern` defines three master types:
|
|
74
|
+
|
|
75
|
+
| Type | `CompanyID` | Overrides Table | Override Endpoints | Assign Endpoints |
|
|
76
|
+
|------|-------------|-----------------|-------------------|-----------------|
|
|
77
|
+
| `GLOBAL` | NO | YES `{entity}_overrides` | YES `POST /{id}/override` | YES `POST /{id}/assign` |
|
|
78
|
+
| `COMPANY_SPECIFIC` | YES | NO | NO | NO |
|
|
79
|
+
| `UNIVERSAL` | NO | NO | NO | NO |
|
|
80
|
+
|
|
81
|
+
**Override Resolution Rule:**
|
|
82
|
+
```
|
|
83
|
+
Override.Field == NULL → Inherits from the base Global
|
|
84
|
+
Override.Field != NULL → Uses the override value
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Mandatory rules:**
|
|
88
|
+
- R-MP-001: All masters MUST extend `BaseMasterService<T>`
|
|
89
|
+
- R-MP-002: All masters MUST have a static `MasterDefinition` class
|
|
90
|
+
- R-MP-003: GLOBAL masters MUST have an Overrides table
|
|
91
|
+
- R-MP-004: Immutable fields (Code, Name) MUST NOT be in the Overrides table
|
|
92
|
+
- R-MP-005: Overridable fields MUST be nullable in Overrides
|
|
93
|
+
- R-MP-006: Tables MUST use snake_case
|
|
94
|
+
- R-MP-007: Override tables MUST follow the `{entities}_overrides` pattern
|
|
95
|
+
|
|
96
|
+
### 2.3 Result Pattern (Mandatory)
|
|
97
|
+
|
|
98
|
+
All domain operations return `Result<T>` — exceptions are never thrown for expected business flows.
|
|
99
|
+
|
|
100
|
+
```csharp
|
|
101
|
+
// ✅ Correct
|
|
102
|
+
public Result<UserDto> CreateUser(CreateUserCommand cmd)
|
|
103
|
+
{
|
|
104
|
+
if (string.IsNullOrEmpty(cmd.Email))
|
|
105
|
+
return Result.Failure<UserDto>("Email is required");
|
|
106
|
+
// ...
|
|
107
|
+
return Result.Success(new UserDto(user));
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// ❌ Incorrect
|
|
111
|
+
public UserDto CreateUser(CreateUserCommand cmd)
|
|
112
|
+
{
|
|
113
|
+
if (string.IsNullOrEmpty(cmd.Email))
|
|
114
|
+
throw new ArgumentException("Email is required"); // Do not use for business validations
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### 2.4 Dependency Injection — Registration Sequence (Mandatory)
|
|
119
|
+
|
|
120
|
+
```csharp
|
|
121
|
+
// Program.cs — MANDATORY ORDER
|
|
122
|
+
builder.Services.AddLocalization(); // 1. i18n first
|
|
123
|
+
builder.Services.AddFluentValidation(); // 2. Validation
|
|
124
|
+
builder.Services.AddDbContext<AppDbContext>(); // 3. DB Context
|
|
125
|
+
builder.Services.AddRepositories(); // 4. Repositories
|
|
126
|
+
builder.Services.AddApplicationServices(); // 5. Application services
|
|
127
|
+
builder.Services.AddMasterPattern(); // 6. MasterPattern
|
|
128
|
+
builder.Services.AddAccessManager(); // 7. AccessManager
|
|
129
|
+
builder.Services.AddLookupFieldQueryBuilder(); // 8. LookupField
|
|
130
|
+
builder.Services.AddHealthChecks(); // 9. Health Checks
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 3. Solution Structure (Backend)
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
src/
|
|
139
|
+
├── {Service}.API/ # Presentation Layer — Minimal API Endpoints
|
|
140
|
+
│ ├── Endpoints/
|
|
141
|
+
│ │ └── {Feature}/ # Endpoint classes per feature
|
|
142
|
+
│ ├── Middleware/
|
|
143
|
+
│ └── Program.cs
|
|
144
|
+
├── {Service}.Application/ # Application Layer — CQRS, DTOs, Validators
|
|
145
|
+
│ └── {Feature}/
|
|
146
|
+
│ ├── Commands/
|
|
147
|
+
│ ├── Queries/
|
|
148
|
+
│ ├── DTOs/
|
|
149
|
+
│ ├── Validators/
|
|
150
|
+
│ └── Interfaces/
|
|
151
|
+
├── {Service}.Domain/ # Domain Layer — Entities, Value Objects, Events
|
|
152
|
+
│ └── {Feature}/
|
|
153
|
+
│ ├── Entities/
|
|
154
|
+
│ ├── ValueObjects/
|
|
155
|
+
│ └── Events/
|
|
156
|
+
└── {Service}.Infrastructure/ # Infrastructure Layer — EF Core, Repositories
|
|
157
|
+
├── Data/
|
|
158
|
+
│ ├── Configurations/
|
|
159
|
+
│ ├── Migrations/
|
|
160
|
+
│ └── {Service}DbContext.cs
|
|
161
|
+
└── Repositories/
|
|
162
|
+
tests/
|
|
163
|
+
├── {Service}.UnitTests/ # xUnit + EF Core InMemory
|
|
164
|
+
└── {Service}.IntegrationTests/ # xUnit + Testcontainers.PostgreSql
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## 4. Backend Standards
|
|
170
|
+
|
|
171
|
+
### 4.1 DateTime — Mandatory Types
|
|
172
|
+
|
|
173
|
+
⚠️ **ALWAYS use `DateTimeOffset`, NEVER `DateTime`**
|
|
174
|
+
|
|
175
|
+
```csharp
|
|
176
|
+
// ✅ Correct
|
|
177
|
+
public DateTimeOffset CreatedAt { get; private set; } = DateTimeOffset.UtcNow;
|
|
178
|
+
public DateTimeOffset UpdatedAt { get; private set; } = DateTimeOffset.UtcNow;
|
|
179
|
+
|
|
180
|
+
// ❌ Incorrect
|
|
181
|
+
public DateTime CreatedAt { get; private set; } // NEVER
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
| Case | C# Type | PostgreSQL Type |
|
|
185
|
+
|------|---------|----------------|
|
|
186
|
+
| Timestamp with timezone | `DateTimeOffset` | `TIMESTAMP WITH TIME ZONE` |
|
|
187
|
+
| Date only | `DateOnly` | `DATE` |
|
|
188
|
+
| Time only | `TimeOnly` | `TIME` |
|
|
189
|
+
| NEVER use | ~~`DateTime`~~ | — |
|
|
190
|
+
|
|
191
|
+
### 4.2 Primary Keys — UUID v7
|
|
192
|
+
|
|
193
|
+
```csharp
|
|
194
|
+
// ✅ Mandatory — UUID v7 for all PKs
|
|
195
|
+
public Guid ID { get; private set; } = Guid.CreateVersion7();
|
|
196
|
+
|
|
197
|
+
// ❌ Incorrect
|
|
198
|
+
public Guid ID { get; private set; } = Guid.NewGuid(); // UUID v4 — do not use
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
PostgreSQL: `DEFAULT uuidv7()` in migrations.
|
|
202
|
+
|
|
203
|
+
### 4.3 Optimistic Concurrency — xmin
|
|
204
|
+
|
|
205
|
+
- All masters expose `rowVersion` (uint) in GET responses
|
|
206
|
+
- PUT/DELETE require the client to send `rowVersion`
|
|
207
|
+
- Mismatch → HTTP 409 Problem Details RFC 7807
|
|
208
|
+
- Force-save via `?force=true` (requires elevated permission)
|
|
209
|
+
|
|
210
|
+
### 4.4 ORM Strategy — When to Use Each Tool
|
|
211
|
+
|
|
212
|
+
| Tool | When to Use |
|
|
213
|
+
|------|------------|
|
|
214
|
+
| **EF Core 10** | Standard CRUD, DDD entities with tracking, relationships, migrations |
|
|
215
|
+
| **linq2db** | High-performance complex queries, dashboards, analytics, reports |
|
|
216
|
+
| **DynamicLinq** | Dynamic filters from user input, configurable grids |
|
|
217
|
+
| **LinqKit** | Type-safe composable predicates, DDD repositories with multiple criteria |
|
|
218
|
+
|
|
219
|
+
### 4.5 Domain Entity — Mandatory Structure
|
|
220
|
+
|
|
221
|
+
```csharp
|
|
222
|
+
public class {Entity}Entity : IMasterEntity
|
|
223
|
+
{
|
|
224
|
+
private {Entity}Entity() { } // EF Core materialization
|
|
225
|
+
|
|
226
|
+
private {Entity}Entity(Guid id, /* params */) : base()
|
|
227
|
+
{
|
|
228
|
+
ID = id;
|
|
229
|
+
// ...
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// IMasterEntity
|
|
233
|
+
public Guid ID { get; private set; }
|
|
234
|
+
public string Code { get; private set; } = string.Empty; // Immutable after creation
|
|
235
|
+
public bool IsActive { get; set; } = true;
|
|
236
|
+
public uint Version { get; set; } // PostgreSQL xmin → rowVersion DTO
|
|
237
|
+
|
|
238
|
+
// Timestamps
|
|
239
|
+
public DateTimeOffset CreatedAt { get; private set; }
|
|
240
|
+
public DateTimeOffset UpdatedAt { get; private set; }
|
|
241
|
+
|
|
242
|
+
// Audit — FK to amgr_users_prj
|
|
243
|
+
public Guid CreatedByUserID { get; private set; }
|
|
244
|
+
public Guid UpdatedByUserID { get; private set; }
|
|
245
|
+
|
|
246
|
+
// Mandatory factory method
|
|
247
|
+
public static {Entity}Entity Create(/* params */, Guid createdByUserId)
|
|
248
|
+
{
|
|
249
|
+
return new {Entity}Entity(Guid.CreateVersion7(), /* params */);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### 4.6 Minimal API — Endpoint Structure
|
|
255
|
+
|
|
256
|
+
```csharp
|
|
257
|
+
public static class {Feature}Endpoints
|
|
258
|
+
{
|
|
259
|
+
public static void Map{Feature}Endpoints(this IEndpointRouteBuilder app)
|
|
260
|
+
{
|
|
261
|
+
var group = app.MapGroup("/api/v1/{feature}")
|
|
262
|
+
.WithTags("{Feature}")
|
|
263
|
+
.RequireAuthorization();
|
|
264
|
+
|
|
265
|
+
group.MapPost("/", Create{Entity})
|
|
266
|
+
.WithName("Create{Entity}")
|
|
267
|
+
.Produces<{Entity}ResponseDto>(StatusCodes.Status201Created)
|
|
268
|
+
.ProducesValidationProblem();
|
|
269
|
+
|
|
270
|
+
group.MapGet("/{id:guid}", GetById)
|
|
271
|
+
.WithName("Get{Entity}ById")
|
|
272
|
+
.Produces<{Entity}ResponseDto>()
|
|
273
|
+
.Produces(StatusCodes.Status404NotFound);
|
|
274
|
+
|
|
275
|
+
group.MapPost("/search", Search)
|
|
276
|
+
.WithName("Search{Entity}")
|
|
277
|
+
.Produces<LookupFieldResult>();
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
**URL versioning mandatory:** `/api/v1/` prefix on all business endpoints.
|
|
283
|
+
|
|
284
|
+
### 4.7 Error Handling — Problem Details RFC 7807
|
|
285
|
+
|
|
286
|
+
```json
|
|
287
|
+
{
|
|
288
|
+
"type": "https://tools.ietf.org/html/rfc7807",
|
|
289
|
+
"title": "Validation Error",
|
|
290
|
+
"status": 400,
|
|
291
|
+
"detail": "One or more validation errors occurred.",
|
|
292
|
+
"errors": [
|
|
293
|
+
{ "field": "email", "message": "Email is required" }
|
|
294
|
+
]
|
|
295
|
+
}
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
| Scenario | HTTP Status |
|
|
299
|
+
|----------|------------|
|
|
300
|
+
| Validation | 400 |
|
|
301
|
+
| Unauthorized | 401 |
|
|
302
|
+
| Forbidden | 403 |
|
|
303
|
+
| Not found | 404 |
|
|
304
|
+
| Dependency conflict | 409 |
|
|
305
|
+
| Concurrency conflict (xmin) | 409 |
|
|
306
|
+
|
|
307
|
+
### 4.8 Testing Standards
|
|
308
|
+
|
|
309
|
+
```csharp
|
|
310
|
+
// Unit Tests — xUnit + EF Core InMemory
|
|
311
|
+
[Fact]
|
|
312
|
+
public async Task Handle_ValidCommand_ShouldCreate{Entity}()
|
|
313
|
+
{
|
|
314
|
+
// Arrange
|
|
315
|
+
var options = new DbContextOptionsBuilder<AppDbContext>()
|
|
316
|
+
.UseInMemoryDatabase(Guid.NewGuid().ToString()).Options;
|
|
317
|
+
// Act + Assert
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// Integration Tests — xUnit + Testcontainers
|
|
321
|
+
[Collection("PostgreSQL")]
|
|
322
|
+
public class {Entity}IntegrationTests : IAsyncLifetime
|
|
323
|
+
{
|
|
324
|
+
// Testcontainers.PostgreSql — real database in a container
|
|
325
|
+
}
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**TDD is mandatory** — write tests before production code.
|
|
329
|
+
|
|
330
|
+
### 4.9 LookupField — Integration
|
|
331
|
+
|
|
332
|
+
```csharp
|
|
333
|
+
// Program.cs
|
|
334
|
+
builder.Services.AddLookupFieldQueryBuilder();
|
|
335
|
+
|
|
336
|
+
// Endpoint — mandatory pattern
|
|
337
|
+
group.MapPost("/search", async (SearchRequest request, AppDbContext ctx,
|
|
338
|
+
ILookupFieldQueryService lookup) =>
|
|
339
|
+
{
|
|
340
|
+
try
|
|
341
|
+
{
|
|
342
|
+
var query = ctx.{Entities}.AsNoTracking();
|
|
343
|
+
var result = await lookup.SearchAsync(query, request);
|
|
344
|
+
return Results.Ok(result);
|
|
345
|
+
}
|
|
346
|
+
catch (LookupFieldValidationException ex)
|
|
347
|
+
{
|
|
348
|
+
return Results.BadRequest(new { errors = ex.Errors });
|
|
349
|
+
}
|
|
350
|
+
})
|
|
351
|
+
.RequirePermission("{service}.{entity}.read")
|
|
352
|
+
.WithName("Search{Entity}");
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
**LookupField rules:**
|
|
356
|
+
- R-LF-001: All master selectors MUST use LookupField
|
|
357
|
+
- R-LF-002: Backend MUST use `AsNoTracking()`
|
|
358
|
+
- R-LF-003: Backend MUST handle `LookupFieldValidationException`
|
|
359
|
+
- R-LF-004: Version with minor pinning `0.0.*`
|
|
360
|
+
- R-LF-005: Register with `services.AddLookupFieldQueryBuilder()`
|
|
361
|
+
- R-LF-006: Endpoint pattern: `POST /api/v1/{masters}/search`
|
|
362
|
+
|
|
363
|
+
---
|
|
364
|
+
|
|
365
|
+
## 5. Database Conventions (PostgreSQL)
|
|
366
|
+
|
|
367
|
+
### 5.1 Naming Conventions
|
|
368
|
+
|
|
369
|
+
| Element | Convention | C# → DB Example |
|
|
370
|
+
|---------|-----------|----------------|
|
|
371
|
+
| Tables | `snake_case` plural | `products`, `order_items` |
|
|
372
|
+
| Columns | `snake_case` | `CustomerID` → `customer_id` |
|
|
373
|
+
| FK columns | `{entity_name}_id` | `OriginWarehouseID` → `origin_warehouse_id` |
|
|
374
|
+
| Audit FKs | `{action}_by_user_id` | `CreatedByUserID` → `created_by_user_id` |
|
|
375
|
+
| Indexes | `ix_{table}_{columns}` | `ix_products_code` |
|
|
376
|
+
| Unique | `uk_{table}_{columns}` | `uk_products_code` |
|
|
377
|
+
| Constraints | `{type}_{table}_{columns}` | `fk_orders_customers` |
|
|
378
|
+
| Schemas | `lowercase_underscore` | `inventory`, `sales` |
|
|
379
|
+
|
|
380
|
+
### 5.2 Projected Tables (Cross-Service)
|
|
381
|
+
|
|
382
|
+
Read-only local copies of entities from other microservices. Updated via Pub/Sub.
|
|
383
|
+
|
|
384
|
+
| Element | Convention | Example |
|
|
385
|
+
|---------|-----------|---------|
|
|
386
|
+
| C# Class | `{PREFIX}_{Entity}Prj` | `SEGM_CompanyPrj` |
|
|
387
|
+
| DB Table | `{prefix}_{origin_table}_prj` | `segm_companies_prj` |
|
|
388
|
+
| Prefix | 4 chars uppercase | `AUTH`, `INVT`, `SEGM`, `TPRT` |
|
|
389
|
+
|
|
390
|
+
**Mandatory patterns for projected tables:**
|
|
391
|
+
1. All inherit from `Entity` (Guid Id as PK)
|
|
392
|
+
2. Read-only across 3 layers: API (no POST/PUT/DELETE), Repository (reads only), EF Core (`.AsNoTracking()`)
|
|
393
|
+
3. No physical FKs between projected tables (out-of-order event handling)
|
|
394
|
+
4. IDs belong to the origin service — Core NEVER generates IDs for projections
|
|
395
|
+
|
|
396
|
+
### 5.3 EF Core — Mapping Strategy
|
|
397
|
+
|
|
398
|
+
```csharp
|
|
399
|
+
// DbContext — always apply snake_case LAST
|
|
400
|
+
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
401
|
+
{
|
|
402
|
+
modelBuilder.HasDefaultSchema("{service}");
|
|
403
|
+
modelBuilder.ApplyConfigurationsFromAssembly(typeof(AppDbContext).Assembly);
|
|
404
|
+
modelBuilder.ApplySnakeCaseNaming(); // ALWAYS last
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
// Entity Configuration
|
|
408
|
+
public class {Entity}Configuration : IEntityTypeConfiguration<{Entity}Entity>
|
|
409
|
+
{
|
|
410
|
+
public void Configure(EntityTypeBuilder<{Entity}Entity> builder)
|
|
411
|
+
{
|
|
412
|
+
builder.ToTable("{entities}", "{schema}");
|
|
413
|
+
builder.HasKey(e => e.ID);
|
|
414
|
+
builder.Property(e => e.ID).HasColumnType("uuid").IsRequired();
|
|
415
|
+
builder.Property(e => e.Version)
|
|
416
|
+
.HasColumnName("xmin")
|
|
417
|
+
.HasColumnType("xid")
|
|
418
|
+
.ValueGeneratedOnAddOrUpdate()
|
|
419
|
+
.IsConcurrencyToken();
|
|
420
|
+
builder.Ignore(e => e.DomainEvents);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
---
|
|
426
|
+
|
|
427
|
+
## 6. Infrastructure Decisions
|
|
428
|
+
|
|
429
|
+
### 6.1 Multi-Tenancy
|
|
430
|
+
|
|
431
|
+
- JWT Token contains `TenantId` → Connection Resolver selects the tenant database
|
|
432
|
+
- `Company-ID` in headers/payload for multi-company operations within the tenant
|
|
433
|
+
- Schema isolation per microservice within the tenant database
|
|
434
|
+
|
|
435
|
+
**Mandatory flow:**
|
|
436
|
+
```
|
|
437
|
+
Request → JWT Validation → TenantId Extraction → Connection Resolver → AppDbContext (tenant DB)
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
### 6.2 RBAC — Permissions System
|
|
441
|
+
|
|
442
|
+
- Permission namespace: `{service}.{resource}.{action}`
|
|
443
|
+
- Examples: `manufacturing.methods.create`, `segment.companies.read`
|
|
444
|
+
- Validated against AccessManager on EVERY operation
|
|
445
|
+
- Server-side enforcement ONLY — never trust UI context
|
|
446
|
+
|
|
447
|
+
```csharp
|
|
448
|
+
group.MapPost("/", CreateEntity)
|
|
449
|
+
.RequirePermission("{service}.{entity}.create");
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
### 6.3 Dapr Integration
|
|
453
|
+
|
|
454
|
+
**Pub/Sub — Topic naming:** `{service}.{entity}.{action}`
|
|
455
|
+
Examples: `inventory.cost-segment.updated`, `segment.company.created`
|
|
456
|
+
|
|
457
|
+
**Idempotency Handler Pattern:**
|
|
458
|
+
```csharp
|
|
459
|
+
[Topic("pubsub", "{service}.{entity}.{action}")]
|
|
460
|
+
public async Task<IActionResult> Handle{Entity}{Action}Event(
|
|
461
|
+
[FromBody] DomainEventEnvelope<{Entity}{Action}Event> envelope)
|
|
462
|
+
{
|
|
463
|
+
// Check idempotency (process only once)
|
|
464
|
+
// Validate tenantId
|
|
465
|
+
// Process event
|
|
466
|
+
}
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
### 6.4 Health Checks
|
|
470
|
+
|
|
471
|
+
```csharp
|
|
472
|
+
builder.Services.AddHealthChecks()
|
|
473
|
+
.AddNpgsql(connectionString, name: "postgresql")
|
|
474
|
+
.AddRedis(redisConnection, name: "redis");
|
|
475
|
+
|
|
476
|
+
app.MapHealthChecks("/health");
|
|
477
|
+
app.MapHealthChecks("/health/ready", new HealthCheckOptions
|
|
478
|
+
{
|
|
479
|
+
Predicate = check => check.Tags.Contains("ready")
|
|
480
|
+
});
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
### 6.5 Logging
|
|
484
|
+
|
|
485
|
+
```csharp
|
|
486
|
+
// Structured logging mandatory
|
|
487
|
+
_logger.LogInformation("Processing {EntityType} {EntityId} for tenant {TenantId}",
|
|
488
|
+
entityType, entityId, tenantId);
|
|
489
|
+
|
|
490
|
+
// NEVER log sensitive data
|
|
491
|
+
// Correlation IDs for request tracing
|
|
492
|
+
// Log levels: Trace, Debug, Information, Warning, Error, Critical
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
### 6.6 Docker
|
|
496
|
+
|
|
497
|
+
- Docker ONLY for production and CI/CD environments
|
|
498
|
+
- Local development without Docker using `dotnet CLI`
|
|
499
|
+
- `docker-compose` defines: PostgreSQL, Redis (Dapr state store), Dapr Placement
|
|
500
|
+
|
|
501
|
+
---
|
|
502
|
+
|
|
503
|
+
## 7. Naming Conventions Summary
|
|
504
|
+
|
|
505
|
+
### 7.1 C# / Backend
|
|
506
|
+
|
|
507
|
+
| Element | Convention | Example |
|
|
508
|
+
|---------|-----------|---------|
|
|
509
|
+
| Classes | PascalCase singular | `MethodEntity`, `WorkCenterRate` |
|
|
510
|
+
| Properties | PascalCase | `StorageGroupID`, `IsActive` |
|
|
511
|
+
| Private fields | `_camelCase` | `_repository`, `_daprClient` |
|
|
512
|
+
| Interfaces | `I` + PascalCase | `IUserRepository` |
|
|
513
|
+
| Commands | `{Action}{Entity}Command` | `CreateUserCommand` |
|
|
514
|
+
| Queries | `Get{Entity}Query` | `GetUserByIdQuery` |
|
|
515
|
+
| DTOs | `{Entity}{Type}Dto` | `UserResponseDto`, `UserCreateDto` |
|
|
516
|
+
|
|
517
|
+
### 7.2 PostgreSQL
|
|
518
|
+
|
|
519
|
+
| Element | Convention | Example |
|
|
520
|
+
|---------|-----------|---------|
|
|
521
|
+
| Tables | `snake_case` plural | `methods`, `work_centers` |
|
|
522
|
+
| Columns | `snake_case` | `cost_center_id`, `is_active` |
|
|
523
|
+
| FK columns | `{entity}_id` | `method_id`, `company_id` |
|
|
524
|
+
| Indexes | `ix_{table}_{cols}` | `ix_methods_code` |
|
|
525
|
+
| Unique | `uk_{table}_{cols}` | `uk_methods_code` |
|
|
526
|
+
|
|
527
|
+
---
|
|
528
|
+
|
|
529
|
+
## 8. Compliance Checklist — Backend (New Microservice)
|
|
530
|
+
|
|
531
|
+
```markdown
|
|
532
|
+
## Setup
|
|
533
|
+
- [ ] .NET 10 solution with 4 projects (API, Application, Domain, Infrastructure)
|
|
534
|
+
- [ ] NuGet: Siesa.MasterPattern 0.1.*, Siesa.AccessManager, LookupFieldQueryBuilder 0.0.*
|
|
535
|
+
- [ ] GitHub Packages source configured (PAT read:packages)
|
|
536
|
+
- [ ] PostgreSQL 18+ — dedicated database
|
|
537
|
+
- [ ] docker-compose with PostgreSQL + Redis + Dapr Placement
|
|
538
|
+
|
|
539
|
+
## Architecture
|
|
540
|
+
- [ ] Clean Architecture — dependencies point inward
|
|
541
|
+
- [ ] DDD — entities with factory methods, private setters
|
|
542
|
+
- [ ] UUID v7 (Guid.CreateVersion7()) on all PKs
|
|
543
|
+
- [ ] DateTimeOffset on all timestamps (NEVER DateTime)
|
|
544
|
+
- [ ] xmin concurrency on all master entities
|
|
545
|
+
- [ ] Result Pattern in domain operations
|
|
546
|
+
|
|
547
|
+
## MasterPattern
|
|
548
|
+
- [ ] All master entities implement IMasterEntity
|
|
549
|
+
- [ ] BaseMasterService<T> extended by all services
|
|
550
|
+
- [ ] MasterDefinition with correct Type (GLOBAL/COMPANY_SPECIFIC/UNIVERSAL)
|
|
551
|
+
- [ ] Override tables for GLOBAL masters (if applicable)
|
|
552
|
+
|
|
553
|
+
## API
|
|
554
|
+
- [ ] Minimal API (NO MVC controllers)
|
|
555
|
+
- [ ] URL versioning /api/v1/
|
|
556
|
+
- [ ] RBAC on all endpoints (RequirePermission)
|
|
557
|
+
- [ ] Problem Details RFC 7807 on all errors
|
|
558
|
+
- [ ] LookupField /search endpoint on all masters
|
|
559
|
+
- [ ] Scalar (NO Swagger)
|
|
560
|
+
|
|
561
|
+
## Testing
|
|
562
|
+
- [ ] TDD — tests written before production code
|
|
563
|
+
- [ ] xUnit + EF Core InMemory for unit tests
|
|
564
|
+
- [ ] xUnit + Testcontainers.PostgreSql for integration tests
|
|
565
|
+
```
|