@maestro-ai/cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -0
- package/content/guides/Cat/303/241logo de Stacks para Cloud Moderna.md" +119 -0
- package/content/guides/Cat/303/241logo de Stacks para Hospedagem Compartilhada.md" +147 -0
- package/content/guides/Checklist Mestre de Entrega.md +68 -0
- package/content/guides/Gates de Qualidade.md +209 -0
- package/content/guides/Guia de Adi/303/247/303/243o de Novas Funcionalidades.md" +355 -0
- package/content/guides/Guia de Chaos Engineering.md +267 -0
- package/content/guides/Guia de Debugging com IA.md +135 -0
- package/content/guides/Guia de Estrat/303/251gias de Cache.md" +352 -0
- package/content/guides/Guia de Migrations Zero-Downtime.md +311 -0
- package/content/guides/Guia de Multi-tenancy.md +368 -0
- package/content/guides/Guia de Otimiza/303/247/303/243o de Custos Cloud.md" +195 -0
- package/content/guides/Guia de Refatora/303/247/303/243o de C/303/263digo Legado com IA.md" +162 -0
- package/content/guides/Guia de SLOs e Error Budgets.md +315 -0
- package/content/guides/M/303/251tricas de Efici/303/252ncia do Desenvolvimento com IA.md" +93 -0
- package/content/guides/Rules base.md +90 -0
- package/content/prompts/README.md +203 -0
- package/content/prompts/acessibilidade/analise-acessibilidade.md +257 -0
- package/content/prompts/apis/design-api-rest.md +303 -0
- package/content/prompts/apis/idempotencia.md +254 -0
- package/content/prompts/apis/versionamento.md +313 -0
- package/content/prompts/arquitetura/arquitetura-c4-completo.md +190 -0
- package/content/prompts/arquitetura/clean-architecture.md +151 -0
- package/content/prompts/arquitetura/ddd-bounded-contexts.md +183 -0
- package/content/prompts/arquitetura/ddd-cqrs.md +176 -0
- package/content/prompts/arquitetura/modelo-dominio.md +207 -0
- package/content/prompts/arquitetura/multi-tenancy.md +235 -0
- package/content/prompts/database/migrations-zero-downtime.md +192 -0
- package/content/prompts/database/otimizacao-queries.md +296 -0
- package/content/prompts/desenvolvimento/code-review.md +301 -0
- package/content/prompts/desenvolvimento/gerar-servico.md +271 -0
- package/content/prompts/devops/docker-compose.md +336 -0
- package/content/prompts/devops/feature-flags.md +374 -0
- package/content/prompts/devops/kubernetes-deploy.md +460 -0
- package/content/prompts/devops/pipeline-cicd.md +358 -0
- package/content/prompts/devops/terraform-iac.md +502 -0
- package/content/prompts/escalabilidade/analise-performance.md +240 -0
- package/content/prompts/escalabilidade/analise-performance.txt +94 -0
- package/content/prompts/escalabilidade/caching.md +255 -0
- package/content/prompts/observabilidade/chaos-testing.md +237 -0
- package/content/prompts/observabilidade/estrategia-observabilidade.md +263 -0
- package/content/prompts/observabilidade/estrategia-observabilidade.txt +134 -0
- package/content/prompts/observabilidade/slos.md +215 -0
- package/content/prompts/produto/discovery-inicial.md +203 -0
- package/content/prompts/produto/discovery-inicial.txt +33 -0
- package/content/prompts/requisitos/refinar-requisitos.md +232 -0
- package/content/prompts/requisitos/refinar-requisitos.txt +40 -0
- package/content/prompts/seguranca/analise-seguranca.md +243 -0
- package/content/prompts/seguranca/pentest-checklist.md +333 -0
- package/content/prompts/seguranca/rate-limiting.md +356 -0
- package/content/prompts/seguranca/revisao-lgpd.md +227 -0
- package/content/prompts/seguranca/threat-modeling.md +224 -0
- package/content/prompts/testes/contract-testing.md +340 -0
- package/content/prompts/testes/gerar-testes-unitarios.md +474 -0
- package/content/prompts/testes/testes-e2e.md +460 -0
- package/content/prompts/testes/testes-integracao.md +418 -0
- package/content/prompts/testes/testes-performance.md +458 -0
- package/content/prompts/ux/gerar-ui-stitch.md +151 -0
- package/content/skills/api-patterns/SKILL.md +81 -0
- package/content/skills/api-patterns/api-style.md +42 -0
- package/content/skills/api-patterns/auth.md +24 -0
- package/content/skills/api-patterns/documentation.md +26 -0
- package/content/skills/api-patterns/graphql.md +41 -0
- package/content/skills/api-patterns/rate-limiting.md +31 -0
- package/content/skills/api-patterns/response.md +37 -0
- package/content/skills/api-patterns/rest.md +40 -0
- package/content/skills/api-patterns/scripts/api_validator.py +211 -0
- package/content/skills/api-patterns/security-testing.md +122 -0
- package/content/skills/api-patterns/trpc.md +41 -0
- package/content/skills/api-patterns/versioning.md +22 -0
- package/content/skills/app-builder/SKILL.md +75 -0
- package/content/skills/app-builder/agent-coordination.md +71 -0
- package/content/skills/app-builder/feature-building.md +53 -0
- package/content/skills/app-builder/project-detection.md +34 -0
- package/content/skills/app-builder/scaffolding.md +118 -0
- package/content/skills/app-builder/tech-stack.md +40 -0
- package/content/skills/app-builder/templates/SKILL.md +39 -0
- package/content/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/content/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/content/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/content/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/content/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/content/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/content/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/content/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
- package/content/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
- package/content/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
- package/content/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
- package/content/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/content/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
- package/content/skills/architecture/SKILL.md +55 -0
- package/content/skills/architecture/context-discovery.md +43 -0
- package/content/skills/architecture/examples.md +94 -0
- package/content/skills/architecture/pattern-selection.md +68 -0
- package/content/skills/architecture/patterns-reference.md +50 -0
- package/content/skills/architecture/trade-off-analysis.md +77 -0
- package/content/skills/bash-linux/SKILL.md +199 -0
- package/content/skills/behavioral-modes/SKILL.md +242 -0
- package/content/skills/brainstorming/SKILL.md +163 -0
- package/content/skills/brainstorming/dynamic-questioning.md +350 -0
- package/content/skills/clean-code/SKILL.md +201 -0
- package/content/skills/code-review-checklist/SKILL.md +109 -0
- package/content/skills/database-design/SKILL.md +52 -0
- package/content/skills/database-design/database-selection.md +43 -0
- package/content/skills/database-design/indexing.md +39 -0
- package/content/skills/database-design/migrations.md +48 -0
- package/content/skills/database-design/optimization.md +36 -0
- package/content/skills/database-design/orm-selection.md +30 -0
- package/content/skills/database-design/schema-design.md +56 -0
- package/content/skills/database-design/scripts/schema_validator.py +172 -0
- package/content/skills/deployment-procedures/SKILL.md +241 -0
- package/content/skills/doc.md +177 -0
- package/content/skills/documentation-templates/SKILL.md +194 -0
- package/content/skills/frontend-design/SKILL.md +396 -0
- package/content/skills/frontend-design/animation-guide.md +331 -0
- package/content/skills/frontend-design/color-system.md +311 -0
- package/content/skills/frontend-design/decision-trees.md +418 -0
- package/content/skills/frontend-design/motion-graphics.md +306 -0
- package/content/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/content/skills/frontend-design/scripts/ux_audit.py +722 -0
- package/content/skills/frontend-design/typography-system.md +345 -0
- package/content/skills/frontend-design/ux-psychology.md +541 -0
- package/content/skills/frontend-design/visual-effects.md +383 -0
- package/content/skills/game-development/2d-games/SKILL.md +119 -0
- package/content/skills/game-development/3d-games/SKILL.md +135 -0
- package/content/skills/game-development/SKILL.md +167 -0
- package/content/skills/game-development/game-art/SKILL.md +185 -0
- package/content/skills/game-development/game-audio/SKILL.md +190 -0
- package/content/skills/game-development/game-design/SKILL.md +129 -0
- package/content/skills/game-development/mobile-games/SKILL.md +108 -0
- package/content/skills/game-development/multiplayer/SKILL.md +132 -0
- package/content/skills/game-development/pc-games/SKILL.md +144 -0
- package/content/skills/game-development/vr-ar/SKILL.md +123 -0
- package/content/skills/game-development/web-games/SKILL.md +150 -0
- package/content/skills/geo-fundamentals/SKILL.md +156 -0
- package/content/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/content/skills/i18n-localization/SKILL.md +154 -0
- package/content/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/content/skills/intelligent-routing/SKILL.md +334 -0
- package/content/skills/lint-and-validate/SKILL.md +45 -0
- package/content/skills/lint-and-validate/scripts/lint_runner.py +172 -0
- package/content/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/content/skills/mcp-builder/SKILL.md +176 -0
- package/content/skills/mobile-design/SKILL.md +394 -0
- package/content/skills/mobile-design/decision-trees.md +516 -0
- package/content/skills/mobile-design/mobile-backend.md +491 -0
- package/content/skills/mobile-design/mobile-color-system.md +420 -0
- package/content/skills/mobile-design/mobile-debugging.md +122 -0
- package/content/skills/mobile-design/mobile-design-thinking.md +357 -0
- package/content/skills/mobile-design/mobile-navigation.md +458 -0
- package/content/skills/mobile-design/mobile-performance.md +767 -0
- package/content/skills/mobile-design/mobile-testing.md +356 -0
- package/content/skills/mobile-design/mobile-typography.md +433 -0
- package/content/skills/mobile-design/platform-android.md +666 -0
- package/content/skills/mobile-design/platform-ios.md +561 -0
- package/content/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/content/skills/mobile-design/touch-psychology.md +537 -0
- package/content/skills/nextjs-best-practices/SKILL.md +203 -0
- package/content/skills/nodejs-best-practices/SKILL.md +333 -0
- package/content/skills/parallel-agents/SKILL.md +175 -0
- package/content/skills/performance-profiling/SKILL.md +143 -0
- package/content/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/content/skills/plan-writing/SKILL.md +152 -0
- package/content/skills/powershell-windows/SKILL.md +167 -0
- package/content/skills/python-patterns/SKILL.md +441 -0
- package/content/skills/react-patterns/SKILL.md +198 -0
- package/content/skills/red-team-tactics/SKILL.md +199 -0
- package/content/skills/seo-fundamentals/SKILL.md +129 -0
- package/content/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
- package/content/skills/server-management/SKILL.md +161 -0
- package/content/skills/systematic-debugging/SKILL.md +109 -0
- package/content/skills/tailwind-patterns/SKILL.md +269 -0
- package/content/skills/tdd-workflow/SKILL.md +149 -0
- package/content/skills/testing-patterns/SKILL.md +178 -0
- package/content/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/content/skills/vulnerability-scanner/SKILL.md +276 -0
- package/content/skills/vulnerability-scanner/checklists.md +121 -0
- package/content/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/content/skills/webapp-testing/SKILL.md +187 -0
- package/content/skills/webapp-testing/scripts/playwright_runner.py +173 -0
- package/content/specialists/Especialista em Acessibilidade.md +266 -0
- package/content/specialists/Especialista em An/303/241lise de Testes.md" +434 -0
- package/content/specialists/Especialista em Arquitetura Avan/303/247ada.md" +358 -0
- package/content/specialists/Especialista em Arquitetura de Software.md +177 -0
- package/content/specialists/Especialista em Banco de Dados.md +260 -0
- package/content/specialists/Especialista em Contrato de API.md +172 -0
- package/content/specialists/Especialista em Dados e Analytics com IA.md +246 -0
- package/content/specialists/Especialista em Debugging e Troubleshooting.md +191 -0
- package/content/specialists/Especialista em Desenvolvimento Frontend.md +477 -0
- package/content/specialists/Especialista em Desenvolvimento Mobile.md +241 -0
- package/content/specialists/Especialista em Desenvolvimento e Vibe Coding Estruturado.md +417 -0
- package/content/specialists/Especialista em DevOps e Infraestrutura.md +294 -0
- package/content/specialists/Especialista em Documenta/303/247/303/243o T/303/251cnica.md" +227 -0
- package/content/specialists/Especialista em Engenharia de Requisitos com IA.md +299 -0
- package/content/specialists/Especialista em Explora/303/247/303/243o de Codebase.md" +179 -0
- package/content/specialists/Especialista em Gest/303/243o de Produto.md" +179 -0
- package/content/specialists/Especialista em Migra/303/247/303/243o e Moderniza/303/247/303/243o.md" +410 -0
- package/content/specialists/Especialista em Modelagem e Arquitetura de Dom/303/255nio com IA.md" +248 -0
- package/content/specialists/Especialista em Observabilidade.md +415 -0
- package/content/specialists/Especialista em Performance e Escalabilidade.md +373 -0
- package/content/specialists/Especialista em Plano de Execu/303/247/303/243o com IA.md" +341 -0
- package/content/specialists/Especialista em Prototipagem R/303/241pida com Google Stitch.md" +419 -0
- package/content/specialists/Especialista em Seguran/303/247a da Informa/303/247/303/243o.md" +508 -0
- package/content/specialists/Especialista em UX Design.md +453 -0
- package/content/specialists/INDEX.md +43 -0
- package/content/templates/PRD.md +165 -0
- package/content/templates/README.md +65 -0
- package/content/templates/adr.md +103 -0
- package/content/templates/arquitetura.md +279 -0
- package/content/templates/backlog.md +185 -0
- package/content/templates/checklist-seguranca.md +180 -0
- package/content/templates/contexto.md +120 -0
- package/content/templates/criterios-aceite.md +99 -0
- package/content/templates/design-banco.md +270 -0
- package/content/templates/design-doc.md +240 -0
- package/content/templates/feature.md +88 -0
- package/content/templates/historia-backend.md +84 -0
- package/content/templates/historia-frontend.md +75 -0
- package/content/templates/historia-usuario.md +125 -0
- package/content/templates/mapa-navegacao.md +133 -0
- package/content/templates/matriz-rastreabilidade.md +121 -0
- package/content/templates/modelo-dominio.md +219 -0
- package/content/templates/plano-testes.md +199 -0
- package/content/templates/prototipo-stitch.md +138 -0
- package/content/templates/requisitos.md +162 -0
- package/content/templates/slo-sli.md +197 -0
- package/content/workflows/README-MCP.md +363 -0
- package/content/workflows/brainstorm.md +113 -0
- package/content/workflows/create.md +59 -0
- package/content/workflows/debug.md +103 -0
- package/content/workflows/deploy.md +176 -0
- package/content/workflows/enhance.md +63 -0
- package/content/workflows/mcp-debug.md +506 -0
- package/content/workflows/mcp-feature.md +385 -0
- package/content/workflows/mcp-gate.md +413 -0
- package/content/workflows/mcp-next.md +388 -0
- package/content/workflows/mcp-refactor.md +600 -0
- package/content/workflows/mcp-start.md +304 -0
- package/content/workflows/mcp-status.md +400 -0
- package/content/workflows/orchestrate.md +237 -0
- package/content/workflows/plan.md +89 -0
- package/content/workflows/preview.md +81 -0
- package/content/workflows/status.md +86 -0
- package/content/workflows/test.md +144 -0
- package/content/workflows/ui-ux-pro-max.md +296 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.js +138 -0
- package/dist/commands/update.d.ts +5 -0
- package/dist/commands/update.js +50 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +21 -0
- package/package.json +48 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# Prompt: DDD - Bounded Contexts e Strategic Design
|
|
2
|
+
|
|
3
|
+
> **Quando usar**: Projetos complexos com múltiplos domínios ou equipes
|
|
4
|
+
> **Especialista**: [Arquitetura de Software](../../02-especialistas/Especialista%20em%20Arquitetura%20de%20Software.md)
|
|
5
|
+
> **Nível**: Complexo (3+ meses, domínio rico)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Fluxo de Contexto
|
|
10
|
+
|
|
11
|
+
Antes de usar este prompt, tenha em mãos:
|
|
12
|
+
- `docs/CONTEXTO.md` - Entendimento atual do projeto
|
|
13
|
+
- `docs/04-modelo/modelo-dominio.md` - Modelo de domínio inicial
|
|
14
|
+
|
|
15
|
+
Após gerar, salve o resultado em:
|
|
16
|
+
- `docs/05-arquitetura/bounded-contexts.md`
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Prompt Completo
|
|
21
|
+
|
|
22
|
+
```text
|
|
23
|
+
Atue como arquiteto de software especialista em Domain-Driven Design.
|
|
24
|
+
|
|
25
|
+
## Contexto do Projeto
|
|
26
|
+
|
|
27
|
+
[COLE O CONTEÚDO DE docs/CONTEXTO.md]
|
|
28
|
+
|
|
29
|
+
## Modelo de Domínio Atual
|
|
30
|
+
|
|
31
|
+
[COLE ENTIDADES E RELACIONAMENTOS DE docs/04-modelo/modelo-dominio.md]
|
|
32
|
+
|
|
33
|
+
## Requisitos de Negócio
|
|
34
|
+
|
|
35
|
+
[COLE REQUISITOS OU REGRAS DE NEGÓCIO PRINCIPAIS]
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Sua Missão
|
|
40
|
+
|
|
41
|
+
Aplique Strategic DDD e Tactical DDD:
|
|
42
|
+
|
|
43
|
+
### 1. Strategic Design
|
|
44
|
+
|
|
45
|
+
#### 1.1 Bounded Contexts
|
|
46
|
+
Para cada contexto identificado:
|
|
47
|
+
- Nome do contexto
|
|
48
|
+
- Classificação: **Core Domain** / **Supporting** / **Generic**
|
|
49
|
+
- Responsabilidade principal (1-2 frases)
|
|
50
|
+
- Linguagem Ubíqua (termos específicos deste contexto)
|
|
51
|
+
- Time responsável sugerido
|
|
52
|
+
|
|
53
|
+
#### 1.2 Context Map
|
|
54
|
+
Mapeie relacionamentos entre contextos:
|
|
55
|
+
- **Partnership**: Colaboração mútua
|
|
56
|
+
- **Shared Kernel**: Código compartilhado
|
|
57
|
+
- **Customer-Supplier**: Upstream → Downstream
|
|
58
|
+
- **Conformist**: Downstream adapta-se ao Upstream
|
|
59
|
+
- **Anti-Corruption Layer (ACL)**: Proteção contra modelo externo
|
|
60
|
+
- **Open Host Service / Published Language**: API pública
|
|
61
|
+
|
|
62
|
+
#### 1.3 Diagrama de Contextos
|
|
63
|
+
Em Mermaid, mostre os bounded contexts e seus relacionamentos.
|
|
64
|
+
|
|
65
|
+
### 2. Tactical Design
|
|
66
|
+
|
|
67
|
+
Para cada Bounded Context **Core**:
|
|
68
|
+
|
|
69
|
+
#### 2.1 Aggregates
|
|
70
|
+
- Nome do Aggregate
|
|
71
|
+
- Raiz do Aggregate (Aggregate Root)
|
|
72
|
+
- Entidades internas
|
|
73
|
+
- Value Objects
|
|
74
|
+
- Invariantes (regras que SEMPRE devem ser verdade)
|
|
75
|
+
- Limites transacionais
|
|
76
|
+
|
|
77
|
+
#### 2.2 Domain Events
|
|
78
|
+
- Evento (nome no passado: PedidoCriado)
|
|
79
|
+
- Quando é disparado
|
|
80
|
+
- Payload (dados que carrega)
|
|
81
|
+
- Quem consome (outros contextos ou serviços)
|
|
82
|
+
|
|
83
|
+
#### 2.3 Domain Services
|
|
84
|
+
Lógica que não pertence a uma entidade específica.
|
|
85
|
+
|
|
86
|
+
#### 2.4 Repository Interfaces
|
|
87
|
+
Interface do repositório para cada Aggregate Root.
|
|
88
|
+
|
|
89
|
+
### 3. Decisões e Trade-offs
|
|
90
|
+
- Por que esses contextos e não outros?
|
|
91
|
+
- Riscos de comunicação entre contextos
|
|
92
|
+
- Sugestão de tecnologia para integração
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Exemplo de Uso
|
|
98
|
+
|
|
99
|
+
```text
|
|
100
|
+
Atue como arquiteto de software especialista em Domain-Driven Design.
|
|
101
|
+
|
|
102
|
+
## Contexto do Projeto
|
|
103
|
+
|
|
104
|
+
Marketplace de serviços locais conectando prestadores e clientes.
|
|
105
|
+
Inclui agendamento, pagamentos e avaliações.
|
|
106
|
+
|
|
107
|
+
## Modelo de Domínio Atual
|
|
108
|
+
|
|
109
|
+
- Usuario (id, nome, email, tipo)
|
|
110
|
+
- Servico (id, nome, preco, prestadorId)
|
|
111
|
+
- Agendamento (id, clienteId, servicoId, data, status)
|
|
112
|
+
- Pagamento (id, agendamentoId, valor, status)
|
|
113
|
+
- Avaliacao (id, agendamentoId, nota, comentario)
|
|
114
|
+
|
|
115
|
+
## Requisitos de Negócio
|
|
116
|
+
|
|
117
|
+
- Prestadores definem disponibilidade
|
|
118
|
+
- Clientes agendam e pagam antecipadamente
|
|
119
|
+
- Após conclusão do serviço, cliente pode avaliar
|
|
120
|
+
- Prestador recebe após 7 dias da conclusão
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Resposta Esperada
|
|
126
|
+
|
|
127
|
+
### 1. Bounded Contexts
|
|
128
|
+
|
|
129
|
+
| Contexto | Tipo | Responsabilidade | Linguagem |
|
|
130
|
+
|---|---|---|---|
|
|
131
|
+
| **Agendamentos** | Core | Gerenciar agendas e horários | Agendamento, Slot, Confirmação |
|
|
132
|
+
| **Clientes** | Supporting | Cadastro e perfil de clientes | Cliente, Preferências |
|
|
133
|
+
| **Pagamentos** | Generic | Processar cobranças | Transação, Fatura |
|
|
134
|
+
| **Notificações** | Generic | Enviar comunicações | Notificação, Template |
|
|
135
|
+
|
|
136
|
+
### Context Map
|
|
137
|
+
|
|
138
|
+
```mermaid
|
|
139
|
+
graph TB
|
|
140
|
+
AG[Agendamentos - Core]
|
|
141
|
+
CL[Clientes - Supporting]
|
|
142
|
+
PG[Pagamentos - Generic]
|
|
143
|
+
NT[Notificações - Generic]
|
|
144
|
+
|
|
145
|
+
AG -->|"Customer-Supplier"| CL
|
|
146
|
+
AG -->|"ACL"| PG
|
|
147
|
+
AG -->|"Published Language"| NT
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### 2. Aggregate: Agendamento
|
|
151
|
+
|
|
152
|
+
**Raiz:** Agendamento
|
|
153
|
+
|
|
154
|
+
**Entidades:**
|
|
155
|
+
- Agendamento (raiz)
|
|
156
|
+
- Servico (dentro do agregado)
|
|
157
|
+
|
|
158
|
+
**Value Objects:**
|
|
159
|
+
- HorarioSlot { inicio: DateTime, fim: DateTime }
|
|
160
|
+
- StatusAgendamento { tipo: enum }
|
|
161
|
+
|
|
162
|
+
**Invariantes:**
|
|
163
|
+
- Um agendamento não pode sobrepor outro do mesmo profissional
|
|
164
|
+
- Cancelamento só é permitido até 2h antes
|
|
165
|
+
- Agendamento só pode ser confirmado se pagamento estiver aprovado
|
|
166
|
+
|
|
167
|
+
**Eventos:**
|
|
168
|
+
- AgendamentoCriado { id, clienteId, horario }
|
|
169
|
+
- AgendamentoCancelado { id, motivo }
|
|
170
|
+
- AgendamentoConfirmado { id }
|
|
171
|
+
- AgendamentoConcluido { id }
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Checklist Pós-Geração
|
|
176
|
+
|
|
177
|
+
- [ ] 3-5 Bounded Contexts identificados
|
|
178
|
+
- [ ] Contextos classificados (Core/Supporting/Generic)
|
|
179
|
+
- [ ] Context Map com relações claras
|
|
180
|
+
- [ ] Aggregates definidos com invariantes
|
|
181
|
+
- [ ] Domain Events listados com payload
|
|
182
|
+
- [ ] Linguagem ubíqua definida por contexto
|
|
183
|
+
- [ ] Salvar em `docs/05-arquitetura/bounded-contexts.md`
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# Prompt: Arquitetura DDD + CQRS
|
|
2
|
+
|
|
3
|
+
> **Quando usar**: Projetos de nível Complexo (3+ meses, domínio rico, múltiplos contextos)
|
|
4
|
+
> **Especialista**: Arquitetura Avançada
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Prompt Completo
|
|
9
|
+
|
|
10
|
+
```text
|
|
11
|
+
Atue como arquiteto especialista em Domain-Driven Design e sistemas distribuídos.
|
|
12
|
+
|
|
13
|
+
## Contexto do Projeto
|
|
14
|
+
|
|
15
|
+
PRD:
|
|
16
|
+
[COLE O CONTEÚDO DE docs/01-produto/PRD.md]
|
|
17
|
+
|
|
18
|
+
Requisitos:
|
|
19
|
+
[COLE O CONTEÚDO DE docs/02-requisitos/requisitos.md]
|
|
20
|
+
|
|
21
|
+
Modelo de Domínio:
|
|
22
|
+
[COLE O CONTEÚDO DE docs/04-modelo/modelo-dominio.md]
|
|
23
|
+
|
|
24
|
+
Complexidade específica:
|
|
25
|
+
- Multi-tenant: [SIM/NÃO]
|
|
26
|
+
- Compliance: [LGPD/SOC2/HIPAA/Nenhum]
|
|
27
|
+
- SLA disponibilidade: [99%/99.9%/99.99%]
|
|
28
|
+
- Pico de usuários: [NÚMERO]
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Sua Missão
|
|
33
|
+
|
|
34
|
+
Proponha uma arquitetura DDD com CQRS considerando:
|
|
35
|
+
|
|
36
|
+
### 1. Strategic Design (Bounded Contexts)
|
|
37
|
+
|
|
38
|
+
Identifique e documente:
|
|
39
|
+
|
|
40
|
+
- **Bounded Contexts** (3-5 contextos):
|
|
41
|
+
- Nome e responsabilidade de cada contexto
|
|
42
|
+
- Ubiquitous Language de cada um
|
|
43
|
+
- Qual é o Core Domain vs Supporting/Generic
|
|
44
|
+
|
|
45
|
+
- **Context Map**:
|
|
46
|
+
- Relações entre contextos (diagrama)
|
|
47
|
+
- Tipo de integração:
|
|
48
|
+
- Shared Kernel
|
|
49
|
+
- Customer-Supplier
|
|
50
|
+
- Conformist
|
|
51
|
+
- Anti-Corruption Layer
|
|
52
|
+
- Open Host Service / Published Language
|
|
53
|
+
|
|
54
|
+
### 2. Tactical Design (por Bounded Context)
|
|
55
|
+
|
|
56
|
+
Para cada contexto, defina:
|
|
57
|
+
|
|
58
|
+
- **Aggregates**:
|
|
59
|
+
- Aggregate Roots
|
|
60
|
+
- Invariantes que protegem
|
|
61
|
+
- Limites transacionais
|
|
62
|
+
|
|
63
|
+
- **Entities e Value Objects**:
|
|
64
|
+
- Quais são Entities (identidade)
|
|
65
|
+
- Quais são Value Objects (imutáveis)
|
|
66
|
+
|
|
67
|
+
- **Domain Events**:
|
|
68
|
+
- Eventos que cada agregado publica
|
|
69
|
+
- Subscribers internos e externos
|
|
70
|
+
|
|
71
|
+
- **Domain Services**:
|
|
72
|
+
- Operações que não pertencem a uma entidade
|
|
73
|
+
|
|
74
|
+
### 3. CQRS (Command Query Responsibility Segregation)
|
|
75
|
+
|
|
76
|
+
Defina:
|
|
77
|
+
|
|
78
|
+
- **Command Side (Write Model)**:
|
|
79
|
+
- Commands e Command Handlers
|
|
80
|
+
- Agregados que processam
|
|
81
|
+
- Validações
|
|
82
|
+
|
|
83
|
+
- **Query Side (Read Model)**:
|
|
84
|
+
- Views/Projections otimizadas
|
|
85
|
+
- Como são atualizadas (sync vs async)
|
|
86
|
+
- Tecnologia (mesmo banco vs banco separado)
|
|
87
|
+
|
|
88
|
+
- **Event Sourcing** (se aplicável):
|
|
89
|
+
- Justificativa para usar ou não
|
|
90
|
+
- Event Store
|
|
91
|
+
- Snapshots
|
|
92
|
+
|
|
93
|
+
### 4. Integração entre Contextos
|
|
94
|
+
|
|
95
|
+
- **Message Broker**:
|
|
96
|
+
- Escolha (Kafka/RabbitMQ/SQS) com justificativa
|
|
97
|
+
- Tópicos/Filas por tipo de evento
|
|
98
|
+
|
|
99
|
+
- **Sagas** (se necessário):
|
|
100
|
+
- Fluxos que cruzam contextos
|
|
101
|
+
- Compensação em caso de falha
|
|
102
|
+
|
|
103
|
+
- **Consistência Eventual**:
|
|
104
|
+
- Onde é aceitável
|
|
105
|
+
- SLAs de propagação
|
|
106
|
+
|
|
107
|
+
### 5. Observabilidade
|
|
108
|
+
|
|
109
|
+
- **Distributed Tracing**:
|
|
110
|
+
- Correlation IDs entre serviços
|
|
111
|
+
- Ferramentas (Jaeger, Zipkin, etc)
|
|
112
|
+
|
|
113
|
+
- **Métricas de Domínio**:
|
|
114
|
+
- KPIs por bounded context
|
|
115
|
+
- Alertas críticos
|
|
116
|
+
|
|
117
|
+
### 6. ADRs Obrigatórios
|
|
118
|
+
|
|
119
|
+
- Por que DDD e não arquitetura mais simples
|
|
120
|
+
- Escolha do message broker
|
|
121
|
+
- Event Sourcing sim/não
|
|
122
|
+
- Estratégia de consistência eventual
|
|
123
|
+
- Tecnologia do Event Store
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Formato de Saída
|
|
128
|
+
|
|
129
|
+
Retorne um documento Markdown com:
|
|
130
|
+
|
|
131
|
+
1. **Context Map** (diagrama Mermaid)
|
|
132
|
+
2. **Detalhamento de cada Bounded Context**
|
|
133
|
+
3. **Fluxo de eventos entre contextos**
|
|
134
|
+
4. **ADRs completos**
|
|
135
|
+
5. **Estrutura de projetos/módulos**
|
|
136
|
+
6. **Estimativa de complexidade e riscos**
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Exemplo de Context Map
|
|
142
|
+
|
|
143
|
+
```mermaid
|
|
144
|
+
graph LR
|
|
145
|
+
subgraph Core["Core Domain"]
|
|
146
|
+
ORDERS[Orders Context]
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
subgraph Supporting["Supporting"]
|
|
150
|
+
INVENTORY[Inventory Context]
|
|
151
|
+
SHIPPING[Shipping Context]
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
subgraph Generic["Generic"]
|
|
155
|
+
IDENTITY[Identity Context]
|
|
156
|
+
PAYMENTS[Payments Context]
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
ORDERS -->|Customer-Supplier| INVENTORY
|
|
160
|
+
ORDERS -->|Customer-Supplier| SHIPPING
|
|
161
|
+
ORDERS -->|ACL| PAYMENTS
|
|
162
|
+
ORDERS -->|Conformist| IDENTITY
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Checklist Pós-Geração
|
|
168
|
+
|
|
169
|
+
- [ ] Bounded Contexts identificados (3-5)
|
|
170
|
+
- [ ] Context Map com relações claras
|
|
171
|
+
- [ ] Aggregates definidos com invariantes
|
|
172
|
+
- [ ] Domain Events listados
|
|
173
|
+
- [ ] CQRS com Write/Read separados
|
|
174
|
+
- [ ] Message broker escolhido e justificado
|
|
175
|
+
- [ ] ADRs para decisões críticas
|
|
176
|
+
- [ ] Riscos e complexidade documentados
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# Prompt: Modelo de Domínio
|
|
2
|
+
|
|
3
|
+
> **Quando usar**: Início do projeto, após refinar requisitos
|
|
4
|
+
> **Especialista**: [Engenharia de Requisitos](../../02-especialistas/Especialista%20em%20Engenharia%20de%20Requisitos%20com%20IA.md) ou [Arquitetura de Software](../../02-especialistas/Especialista%20em%20Arquitetura%20de%20Software.md)
|
|
5
|
+
> **Nível**: Simples a Médio
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Fluxo de Contexto
|
|
10
|
+
|
|
11
|
+
Antes de usar este prompt, tenha em mãos:
|
|
12
|
+
- `docs/CONTEXTO.md` - Entendimento atual do projeto
|
|
13
|
+
- `docs/02-requisitos/requisitos.md` - Requisitos funcionais
|
|
14
|
+
|
|
15
|
+
Após gerar, salve o resultado em:
|
|
16
|
+
- `docs/04-modelo/modelo-dominio.md`
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Prompt Completo
|
|
21
|
+
|
|
22
|
+
```text
|
|
23
|
+
Atue como analista de domínio especializado em modelagem de dados.
|
|
24
|
+
|
|
25
|
+
## Contexto do Projeto
|
|
26
|
+
|
|
27
|
+
[COLE O CONTEÚDO DE docs/CONTEXTO.md]
|
|
28
|
+
|
|
29
|
+
## Requisitos
|
|
30
|
+
|
|
31
|
+
[COLE REQUISITOS DE docs/02-requisitos/requisitos.md]
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Sua Missão
|
|
36
|
+
|
|
37
|
+
Proponha um modelo de domínio inicial completo:
|
|
38
|
+
|
|
39
|
+
### 1. Entidades Principais
|
|
40
|
+
Para cada entidade:
|
|
41
|
+
- Nome da entidade
|
|
42
|
+
- Descrição (1 frase)
|
|
43
|
+
- Atributos com tipos (use tipos genéricos: string, int, decimal, datetime, boolean, UUID)
|
|
44
|
+
- Marque campos obrigatórios vs opcionais
|
|
45
|
+
- Indique campos únicos (unique)
|
|
46
|
+
|
|
47
|
+
### 2. Value Objects
|
|
48
|
+
Identifique conceitos que são melhor representados como Value Objects:
|
|
49
|
+
- Nome
|
|
50
|
+
- Atributos
|
|
51
|
+
- Regras de validação
|
|
52
|
+
|
|
53
|
+
### 3. Relacionamentos
|
|
54
|
+
- Cardinalidade (1:1, 1:N, N:N)
|
|
55
|
+
- Direção da navegação
|
|
56
|
+
- Cascade (o que acontece ao deletar)
|
|
57
|
+
|
|
58
|
+
### 4. Diagrama ER
|
|
59
|
+
Gere um diagrama Mermaid do modelo.
|
|
60
|
+
|
|
61
|
+
### 5. Dúvidas Abertas
|
|
62
|
+
Liste perguntas que ainda precisam ser respondidas pelo cliente.
|
|
63
|
+
|
|
64
|
+
### 6. Considerações Técnicas
|
|
65
|
+
- Índices que serão necessários
|
|
66
|
+
- Campos que podem crescer muito (text, blob)
|
|
67
|
+
- Dados sensíveis que precisam de criptografia
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Exemplo de Uso
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
Atue como analista de domínio especializado em modelagem de dados.
|
|
76
|
+
|
|
77
|
+
## Contexto do Projeto
|
|
78
|
+
|
|
79
|
+
Sistema de agendamento online para salões de beleza.
|
|
80
|
+
|
|
81
|
+
## Requisitos
|
|
82
|
+
|
|
83
|
+
- RF-001: Cliente pode se cadastrar com nome, telefone e email
|
|
84
|
+
- RF-002: Salão pode cadastrar serviços com nome, duração e preço
|
|
85
|
+
- RF-003: Cliente pode agendar um serviço para uma data/hora
|
|
86
|
+
- RF-004: Sistema deve enviar confirmação por WhatsApp
|
|
87
|
+
- RF-005: Cliente pode cancelar até 2h antes
|
|
88
|
+
- RF-006: Salão pode ver relatório de agendamentos
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Resposta Esperada
|
|
94
|
+
|
|
95
|
+
### 1. Entidades
|
|
96
|
+
|
|
97
|
+
**Cliente**
|
|
98
|
+
| Atributo | Tipo | Obrigatório | Único | Notas |
|
|
99
|
+
|----------|------|-------------|-------|-------|
|
|
100
|
+
| id | UUID | ✓ | ✓ | PK |
|
|
101
|
+
| nome | string(100) | ✓ | | |
|
|
102
|
+
| telefone | string(20) | ✓ | ✓ | WhatsApp |
|
|
103
|
+
| email | string(255) | | ✓ | |
|
|
104
|
+
| criadoEm | datetime | ✓ | | default: now |
|
|
105
|
+
|
|
106
|
+
**Servico**
|
|
107
|
+
| Atributo | Tipo | Obrigatório | Único | Notas |
|
|
108
|
+
|----------|------|-------------|-------|-------|
|
|
109
|
+
| id | UUID | ✓ | ✓ | PK |
|
|
110
|
+
| nome | string(100) | ✓ | | |
|
|
111
|
+
| duracao | int | ✓ | | minutos |
|
|
112
|
+
| preco | decimal(10,2) | ✓ | | |
|
|
113
|
+
| ativo | boolean | ✓ | | default: true |
|
|
114
|
+
|
|
115
|
+
**Agendamento**
|
|
116
|
+
| Atributo | Tipo | Obrigatório | Único | Notas |
|
|
117
|
+
|----------|------|-------------|-------|-------|
|
|
118
|
+
| id | UUID | ✓ | ✓ | PK |
|
|
119
|
+
| clienteId | UUID | ✓ | | FK → Cliente |
|
|
120
|
+
| servicoId | UUID | ✓ | | FK → Servico |
|
|
121
|
+
| dataHora | datetime | ✓ | | |
|
|
122
|
+
| status | enum | ✓ | | pendente, confirmado, cancelado, concluido |
|
|
123
|
+
| criadoEm | datetime | ✓ | | default: now |
|
|
124
|
+
|
|
125
|
+
### 2. Value Objects
|
|
126
|
+
|
|
127
|
+
**Telefone**
|
|
128
|
+
- numero: string
|
|
129
|
+
- ddi: string (default: +55)
|
|
130
|
+
- Validação: formato válido de WhatsApp
|
|
131
|
+
|
|
132
|
+
**StatusAgendamento**
|
|
133
|
+
- Enum: PENDENTE, CONFIRMADO, CANCELADO, CONCLUIDO
|
|
134
|
+
- Transições válidas definidas
|
|
135
|
+
|
|
136
|
+
### 3. Relacionamentos
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
Cliente 1 ──── N Agendamento
|
|
140
|
+
Servico 1 ──── N Agendamento
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
- Cliente → Agendamento: Cascade soft delete
|
|
144
|
+
- Servico → Agendamento: Não permite deletar serviço com agendamentos futuros
|
|
145
|
+
|
|
146
|
+
### 4. Diagrama ER
|
|
147
|
+
|
|
148
|
+
```mermaid
|
|
149
|
+
erDiagram
|
|
150
|
+
Cliente ||--o{ Agendamento : "faz"
|
|
151
|
+
Servico ||--o{ Agendamento : "é agendado"
|
|
152
|
+
|
|
153
|
+
Cliente {
|
|
154
|
+
UUID id PK
|
|
155
|
+
string nome
|
|
156
|
+
string telefone UK
|
|
157
|
+
string email UK
|
|
158
|
+
datetime criadoEm
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
Servico {
|
|
162
|
+
UUID id PK
|
|
163
|
+
string nome
|
|
164
|
+
int duracao
|
|
165
|
+
decimal preco
|
|
166
|
+
boolean ativo
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
Agendamento {
|
|
170
|
+
UUID id PK
|
|
171
|
+
UUID clienteId FK
|
|
172
|
+
UUID servicoId FK
|
|
173
|
+
datetime dataHora
|
|
174
|
+
enum status
|
|
175
|
+
datetime criadoEm
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### 5. Dúvidas
|
|
180
|
+
|
|
181
|
+
- [ ] Um agendamento pode ter múltiplos serviços?
|
|
182
|
+
- [ ] Há profissionais diferentes por serviço?
|
|
183
|
+
- [ ] Cliente pode ter mais de um telefone?
|
|
184
|
+
- [ ] Qual a política de reagendamento?
|
|
185
|
+
|
|
186
|
+
### 6. Considerações Técnicas
|
|
187
|
+
|
|
188
|
+
**Índices necessários:**
|
|
189
|
+
- `agendamento.dataHora` - Consultas por período
|
|
190
|
+
- `agendamento.status` - Filtros por status
|
|
191
|
+
- `agendamento(servicoId, dataHora)` - Verificar conflitos
|
|
192
|
+
|
|
193
|
+
**Dados sensíveis:**
|
|
194
|
+
- `cliente.telefone` - Considerar mascarar em logs
|
|
195
|
+
- `cliente.email` - Verificar LGPD
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## Checklist Pós-Geração
|
|
200
|
+
|
|
201
|
+
- [ ] Todas as entidades têm PK definida
|
|
202
|
+
- [ ] Relacionamentos têm cardinalidade clara
|
|
203
|
+
- [ ] Campos obrigatórios vs opcionais definidos
|
|
204
|
+
- [ ] Diagrama ER gerado em Mermaid
|
|
205
|
+
- [ ] Dúvidas listadas para validar com cliente
|
|
206
|
+
- [ ] Índices sugeridos para queries principais
|
|
207
|
+
- [ ] Salvar em `docs/04-modelo/modelo-dominio.md`
|