specifica-br 1.2.2 → 1.5.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 +114 -44
- package/dist/boilerplate/commands/executar-task.md +133 -0
- package/dist/boilerplate/commands/gerar-contexto.md +1462 -0
- package/dist/boilerplate/commands/gerar-prd.md +289 -0
- package/dist/boilerplate/commands/gerar-tasks.md +168 -0
- package/dist/boilerplate/commands/gerar-techspec.md +1467 -0
- package/dist/boilerplate/commands/gerar-visao.md +731 -0
- package/dist/boilerplate/commands/realizar-codereview.md +288 -0
- package/dist/boilerplate/opencode-commands/executar-task.md +55 -48
- package/dist/boilerplate/opencode-commands/gerar-contexto.md +1462 -0
- package/dist/boilerplate/opencode-commands/gerar-prd.md +232 -40
- package/dist/boilerplate/opencode-commands/gerar-tasks.md +112 -31
- package/dist/boilerplate/opencode-commands/gerar-techspec.md +1464 -80
- package/dist/boilerplate/opencode-commands/gerar-visao.md +731 -0
- package/dist/boilerplate/opencode-commands/realizar-codereview.md +288 -0
- package/dist/boilerplate/skills/product-manager/SKILL.md +32 -0
- package/dist/boilerplate/skills/techspec-generator/SKILL.md +489 -0
- package/dist/boilerplate/skills/techspec-generator/references/api-contracts.md +421 -0
- package/dist/boilerplate/skills/techspec-generator/references/architecture-patterns.md +316 -0
- package/dist/boilerplate/skills/techspec-generator/references/database-modeling.md +436 -0
- package/dist/boilerplate/skills/techspec-generator/references/observability-testing.md +436 -0
- package/dist/boilerplate/skills/techspec-generator/references/security-hardening.md +238 -0
- package/dist/boilerplate/skills/techspec-generator/references/ux-ui-accessibility.md +511 -0
- package/dist/boilerplate/specs-templates/architecture-template.md +736 -0
- package/dist/boilerplate/specs-templates/codereview-template.md +95 -0
- package/dist/boilerplate/specs-templates/prd-template.md +101 -19
- package/dist/boilerplate/specs-templates/product_vision-template.md +284 -0
- package/dist/boilerplate/specs-templates/task-template.md +64 -18
- package/dist/boilerplate/specs-templates/tasks-template.md +12 -4
- package/dist/boilerplate/specs-templates/techspec-template.md +1227 -89
- package/dist/boilerplate/templates/architecture-template.md +736 -0
- package/dist/boilerplate/templates/codereview-template.md +95 -0
- package/dist/boilerplate/templates/prd-template.md +167 -0
- package/dist/boilerplate/templates/product_vision-template.md +284 -0
- package/dist/boilerplate/templates/task-template.md +169 -0
- package/dist/boilerplate/templates/tasks-template.md +15 -0
- package/dist/boilerplate/templates/techspec-template.md +1306 -0
- package/dist/commands/help.js +33 -11
- package/dist/commands/init.js +39 -43
- package/dist/tools-mapping.json +32 -0
- package/dist/types/init.d.ts +14 -17
- package/dist/utils/file-service.d.ts +5 -3
- package/dist/utils/file-service.js +168 -56
- package/dist/utils/message-formatter.d.ts +2 -1
- package/dist/utils/message-formatter.js +39 -22
- package/package.json +1 -1
|
@@ -0,0 +1,1462 @@
|
|
|
1
|
+
<system_instructions>
|
|
2
|
+
|
|
3
|
+
# SYSTEM COMMAND: CONTEXT GENERATOR (Brownfield Inference)
|
|
4
|
+
|
|
5
|
+
<critical>
|
|
6
|
+
- **INFERÊNCIA NÃO ESPECULAÇÃO:** Baseie todas as conclusões em evidências no código, não em suposições
|
|
7
|
+
- **NÍVEIS DE CONFIANÇA OBRIGATÓRIOS:** Cada inferência deve ter % de confiança justificado
|
|
8
|
+
- **APROVAÇÃO ITERATIVA:** Gerar architecture.md primeiro, validar, depois product_vision.md
|
|
9
|
+
- **MÁXIMO 2 PERGUNTAS POR CATEGORIA:** Apenas para itens com confiança < 70%
|
|
10
|
+
- **ZERO CÓDIGO GERADO:** Este comando cria apenas especificações
|
|
11
|
+
- **NÃO EXPOR SEGREDOS:** Ao ler .env, registre apenas nomes de variáveis, não valores
|
|
12
|
+
</critical>
|
|
13
|
+
|
|
14
|
+
## Objetivo
|
|
15
|
+
Analisar proativamente um repositório existente (brownfield) para inferir regras de negócio e arquitetura técnica, gerando os artefatos fundacionais do projeto sem necessidade de entrevista extensa com o usuário.
|
|
16
|
+
|
|
17
|
+
## 1. DEFINIÇÃO DE PAPEL
|
|
18
|
+
|
|
19
|
+
Atue como **Engenheiro de Software Sênior e Arquiteto de Software**.
|
|
20
|
+
|
|
21
|
+
**Sua responsabilidade é:**
|
|
22
|
+
- Na Análise Técnica: Investigar o código existente para identificar padrões, stack e invariantes
|
|
23
|
+
- Na Inferência de Negócio: Traduzir decisões técnicas em inferências de domínio de negócio
|
|
24
|
+
- **CRÍTICO:** Atribuir níveis de confiança a cada inferência e marcar itens incertos para validação
|
|
25
|
+
|
|
26
|
+
## 2. RECURSOS
|
|
27
|
+
|
|
28
|
+
- **Template Arquitetura:** `@templates/architecture-template.md`
|
|
29
|
+
- **Template Visão de Produto:** `@templates/product_vision-template.md`
|
|
30
|
+
- **Destino Arquitetura:** `./specs/core/architecture.md`
|
|
31
|
+
- **Destino Visão:** `./specs/core/product_vision.md`
|
|
32
|
+
- **Context7:** Use para documentação de frameworks quando necessário
|
|
33
|
+
|
|
34
|
+
## 3. PROTOCOLO DE EXECUÇÃO (7 PASSOS OBRIGATÓRIOS)
|
|
35
|
+
|
|
36
|
+
Você DEVE seguir este fluxo linear. NÃO pule passos.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
### PASSO 1: Verificação de Diretório e Arquivos Existentes
|
|
41
|
+
|
|
42
|
+
**Objetivo:** Verificar se `specs/core/` existe e se arquivos já existem
|
|
43
|
+
|
|
44
|
+
**Ações Concretas:**
|
|
45
|
+
|
|
46
|
+
1. Verificar se diretório `specs/core/` existe:
|
|
47
|
+
```
|
|
48
|
+
Se NÃO existir:
|
|
49
|
+
- Criar diretório specs/core/
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
2. Verificar se arquivos existem:
|
|
53
|
+
```
|
|
54
|
+
Se specs/core/architecture.md existir:
|
|
55
|
+
- Perguntar: "Arquivo specs/core/architecture.md já existe. Deseja sobrescrever? (SIM/NÃO)"
|
|
56
|
+
- Se resposta NÃO: encerrar execução
|
|
57
|
+
- Se resposta SIM: continuar
|
|
58
|
+
|
|
59
|
+
Se specs/core/product_vision.md existir:
|
|
60
|
+
- Perguntar: "Arquivo specs/core/product_vision.md já existe. Deseja sobrescrever? (SIM/NÃO)"
|
|
61
|
+
- Se resposta NÃO: encerrar execução
|
|
62
|
+
- Se resposta SIM: continuar
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Checkpoint de Validação:**
|
|
66
|
+
- [ ] Diretório `specs/core/` existe ou foi criado
|
|
67
|
+
- [ ] Confirmação obtida para sobrescrever arquivos existentes (se aplicável)
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
### PASSO 2: Leitura Proativa da Estrutura do Repositório
|
|
72
|
+
|
|
73
|
+
**Objetivo:** Analisar arquivos de configuração, código e estrutura para identificar stack, padrões e dependências
|
|
74
|
+
|
|
75
|
+
**Ações Concretas:**
|
|
76
|
+
|
|
77
|
+
#### 2.1. Análise de Stack Tecnológica (Arquivos de Configuração)
|
|
78
|
+
|
|
79
|
+
**Arquivos a verificar (agnóstico a linguagem):**
|
|
80
|
+
- `package.json`, `pnpm-lock.yaml`, `yarn.lock`, `npm-shrinkwrap.json` (Node.js)
|
|
81
|
+
- `.csproj`, `.sln`, `packages.config` ( .NET)
|
|
82
|
+
- `requirements.txt`, `pyproject.toml`, `Pipfile`, `poetry.lock` (Python)
|
|
83
|
+
- `go.mod`, `go.sum` (Go)
|
|
84
|
+
- `Gemfile`, `Gemfile.lock` (Ruby)
|
|
85
|
+
- `pom.xml`, `build.gradle` (Java)
|
|
86
|
+
- `composer.json`, `composer.lock` (PHP)
|
|
87
|
+
- `Cargo.toml`, `Cargo.lock` (Rust)
|
|
88
|
+
|
|
89
|
+
**Para cada arquivo detectado:**
|
|
90
|
+
1. Ler completamente
|
|
91
|
+
2. Extrair dependências principais e versões
|
|
92
|
+
3. Identificar frameworks e bibliotecas core
|
|
93
|
+
4. Detectar scripts de build/test/deploy
|
|
94
|
+
|
|
95
|
+
**Exemplo de saída (mantenha internamente):**
|
|
96
|
+
```
|
|
97
|
+
Stack Detectada:
|
|
98
|
+
- Linguagem: TypeScript 5.3 (package.json: "typescript": "^5.3")
|
|
99
|
+
- Framework: Node.js 20 (package.json: "engines": { "node": ">=20" })
|
|
100
|
+
- Backend: Express.js 4.18 ("express": "^4.18.2")
|
|
101
|
+
- Frontend: Vue.js 3.4 ("vue": "^3.4.21")
|
|
102
|
+
- Database: PostgreSQL via Prisma ("@prisma/client": "^5.8.0")
|
|
103
|
+
- Testing: Jest 29.7 ("@jest/globals": "^29.7.0")
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
#### 2.2. Mapeamento de Integrações Externas [NOVO]
|
|
107
|
+
|
|
108
|
+
**Objetivo:** Identificar APIs de terceiros, serviços e dependências externas
|
|
109
|
+
|
|
110
|
+
**CHECKLIST DE ANÁLISE:**
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
[ ] APIS DE TERCEIROS
|
|
114
|
+
- Buscar por keywords em código: "stripe", "aws", "google", "firebase", "twilio", "sendgrid", "paypal"
|
|
115
|
+
- Verificar imports:
|
|
116
|
+
* from 'stripe' or from '@stripe/stripe-js'
|
|
117
|
+
* from '@aws-sdk/client-s3' or from 'aws-sdk'
|
|
118
|
+
* from 'firebase-admin' or from '@firebase/app'
|
|
119
|
+
- Identificar em arquivos de config:
|
|
120
|
+
* .env.example (STRIPE_API_KEY, AWS_ACCESS_KEY_ID)
|
|
121
|
+
* appsettings.json (Stripe:SecretKey)
|
|
122
|
+
* config/services.yml
|
|
123
|
+
|
|
124
|
+
[ ] WEBHOOKS E CALLBACKS
|
|
125
|
+
- Detectar endpoints:
|
|
126
|
+
* /webhooks/*, /hooks/*, /callbacks/*
|
|
127
|
+
* Buscar rotas: router.post('/webhooks/stripe')
|
|
128
|
+
* Controllers: WebhookController, StripeWebhookController
|
|
129
|
+
- Verificar handlers de webhook:
|
|
130
|
+
* Métodos: handleWebhook, processWebhook, verifySignature
|
|
131
|
+
* Middleware de verificação de assinatura
|
|
132
|
+
- Identificar webhooks configurados:
|
|
133
|
+
* Stripe Dashboard (webhooks)
|
|
134
|
+
* Console AWS (SNS subscriptions)
|
|
135
|
+
* Configuração de callbacks (URLs)
|
|
136
|
+
|
|
137
|
+
[ ] RATE LIMITING E RETRIES
|
|
138
|
+
- Buscar bibliotecas:
|
|
139
|
+
* "express-rate-limit", "rate-limiter-flexible"
|
|
140
|
+
* "@aws-sdk/protocol-tcp", "axios-retry"
|
|
141
|
+
- Verificar configurações:
|
|
142
|
+
* rateLimit: { windowMs: 900000, max: 100 }
|
|
143
|
+
* retry: { retries: 3, backoff: true }
|
|
144
|
+
- Identificar circuit breakers:
|
|
145
|
+
* "opossum", "circuit-breaker-js"
|
|
146
|
+
* @CircuitBreaker decorator (TypeScript)
|
|
147
|
+
|
|
148
|
+
[ ] AUTHENTICATION EXTERNA
|
|
149
|
+
- OAuth providers:
|
|
150
|
+
* "passport-google-oauth20", "passport-facebook", "next-auth"
|
|
151
|
+
* "react-oauth/google", "@react-oauth/google"
|
|
152
|
+
- JWT libraries:
|
|
153
|
+
* "jsonwebtoken", "jose", "jwt-decode"
|
|
154
|
+
- SSO configurations:
|
|
155
|
+
* SAML: "passport-saml"
|
|
156
|
+
* LDAP: "passport-ldapauth"
|
|
157
|
+
- Detectar em código:
|
|
158
|
+
* OAuth flow: /auth/google, /auth/callback
|
|
159
|
+
* JWT verification: jwt.verify(token, secret)
|
|
160
|
+
* Middleware: authenticateToken, requireAuth
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**EXEMPLO DE SAÍDA (mantenha internamente):**
|
|
164
|
+
```
|
|
165
|
+
Integrações Detectadas:
|
|
166
|
+
|
|
167
|
+
| Serviço | Tipo | Detalhes |
|
|
168
|
+
|:---|:---|:---|
|
|
169
|
+
| **Stripe** | Payment | v14.2 (@stripe/stripe-js), webhooks em /api/webhooks/stripe |
|
|
170
|
+
| **AWS S3** | Storage | @aws-sdk/client-s3 v3.450, presigned URLs para uploads |
|
|
171
|
+
| **SendGrid** | Email | @sendgrid/mail v7.7, templates transactionais |
|
|
172
|
+
| **Google OAuth** | Auth | passport-google-oauth20 v2.0, callback /auth/google/callback |
|
|
173
|
+
| **Redis** | Cache | ioredis v5.3, rate limiting: 100 req/15min por IP |
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
#### 2.3. Análise de Maturidade de Testes [NOVO]
|
|
177
|
+
|
|
178
|
+
**Objetivo:** Avaliar qualidade e cobertura de testes existentes
|
|
179
|
+
|
|
180
|
+
**CHECKLIST DE ANÁLISE:**
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
[ ] FRAMEWORK DE TESTES
|
|
184
|
+
- Detectar framework:
|
|
185
|
+
* JavaScript/TypeScript: jest, vitest, mocha, jasmine, ava
|
|
186
|
+
* .NET: xUnit, NUnit, MSTest
|
|
187
|
+
* Python: pytest, unittest, nose2
|
|
188
|
+
* Ruby: RSpec, minitest
|
|
189
|
+
* Java: JUnit, TestNG
|
|
190
|
+
- Verificar configuração:
|
|
191
|
+
* jest.config.js, vitest.config.ts
|
|
192
|
+
* pytest.ini, pyproject.toml [tool.pytest]
|
|
193
|
+
* .rspec, spec/spec_helper.rb
|
|
194
|
+
- Identificar runner:
|
|
195
|
+
* npm test, npm run test
|
|
196
|
+
* dotnet test, pytest, rspec
|
|
197
|
+
|
|
198
|
+
[ ] TIPOS DE TESTES
|
|
199
|
+
- Unit tests:
|
|
200
|
+
* Diretório: /tests/unit/, /test/unit/, __tests__
|
|
201
|
+
* Padrão de arquivo: *.test.ts, *.spec.cs, test_*.py
|
|
202
|
+
* Framework-specific: describe(), [Fact], def test_
|
|
203
|
+
- Integration tests:
|
|
204
|
+
* Diretório: /tests/integration/, /test/integration/
|
|
205
|
+
* Padrão: *.integration.ts, *.IntegrationTests.cs
|
|
206
|
+
* TestContainers, database em memória
|
|
207
|
+
- E2E tests:
|
|
208
|
+
* Diretório: /tests/e2e/, /e2e/, cypress/, playwright/
|
|
209
|
+
* Framework: cypress, playwright, selenium
|
|
210
|
+
* Testes de UI completos
|
|
211
|
+
|
|
212
|
+
[ ] COVERAGE (SE DISPONÍVEL)
|
|
213
|
+
- Verificar coverage reports:
|
|
214
|
+
* coverage/, .coverage/, coverage-output/
|
|
215
|
+
* lcov.info, coverage.json
|
|
216
|
+
* Jest: npm run test:coverage
|
|
217
|
+
- Identificar configuração:
|
|
218
|
+
* jest: --coverage, collectCoverage: true
|
|
219
|
+
* pytest: --cov, pytest-cov
|
|
220
|
+
* .NET: dotnet test --collect:"XPlat Code Coverage"
|
|
221
|
+
- Thresholds:
|
|
222
|
+
* Buscar: coverageThreshold: { statements: 80, branches: 80 }
|
|
223
|
+
* Configuration: minimum coverage 80%
|
|
224
|
+
|
|
225
|
+
[ ] FIXTURES E MOCKS
|
|
226
|
+
- Detectar factories:
|
|
227
|
+
* FactoryBot, factory_bot_rails (Ruby)
|
|
228
|
+
* jest-fixture, ts-auto-mock (TypeScript)
|
|
229
|
+
* Faker.js, @faker-js/faker
|
|
230
|
+
- Mock libraries:
|
|
231
|
+
* sinon, jest.mock, unittest.mock
|
|
232
|
+
* moq, NSubstitute (.NET)
|
|
233
|
+
* mockito (Java)
|
|
234
|
+
- Test data:
|
|
235
|
+
* fixtures/, __fixtures__/, testData/
|
|
236
|
+
* seeds/, /tests/seeds/
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**EXEMPLO DE SAÍDA (Nível de Maturidade):**
|
|
240
|
+
```
|
|
241
|
+
Matriz de Maturidade de Testes:
|
|
242
|
+
|
|
243
|
+
| Framework | Jest v29.7 + Testing Library |
|
|
244
|
+
|:---|:---|
|
|
245
|
+
| **Tipos** | Unit (70%), Integration (20%), E2E (10%) |
|
|
246
|
+
| **Coverage** | 62% (cobertura parcial) |
|
|
247
|
+
| | - Statements: 58% |
|
|
248
|
+
| | - Branches: 54% |
|
|
249
|
+
| | - Functions: 65% |
|
|
250
|
+
| | - Lines: 62% |
|
|
251
|
+
| **Fixtures** | Jest fixtures em /__tests__/fixtures |
|
|
252
|
+
| | Faker.js para dados fake |
|
|
253
|
+
| **Nível de Maturidade** | INTERMEDIÁRIO |
|
|
254
|
+
| | - Framework configurado |
|
|
255
|
+
| | - Coverage abaixo de 70% |
|
|
256
|
+
| | - Testes de integração presentes |
|
|
257
|
+
| | - Ausência de testes E2E completos |
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
#### 2.4. Análise de Estrutura de Diretórios e Padrões de Código
|
|
261
|
+
|
|
262
|
+
**CHECKLIST:**
|
|
263
|
+
|
|
264
|
+
```
|
|
265
|
+
[ ] ESTRUTURA DE PASTAS
|
|
266
|
+
- Organização principal:
|
|
267
|
+
* /src, /app, /lib, /server?
|
|
268
|
+
* Por feature ou por layer?
|
|
269
|
+
- Módulos detectados:
|
|
270
|
+
* /src/users, /src/orders, /src/payments
|
|
271
|
+
* /features/, /domains/, /contexts/
|
|
272
|
+
|
|
273
|
+
[ ] CONVENÇÕES DE NOMEAÇÃO
|
|
274
|
+
- Classes:
|
|
275
|
+
* PascalCase (User, UserService)
|
|
276
|
+
* camelCase (user, userService)
|
|
277
|
+
- Arquivos:
|
|
278
|
+
* kebab-case (user-service.ts)
|
|
279
|
+
* PascalCase (UserService.cs)
|
|
280
|
+
* snake_case (user_service.rb)
|
|
281
|
+
- Testes:
|
|
282
|
+
* FeatureName.test.ts, User.spec.cs
|
|
283
|
+
|
|
284
|
+
[ ] PADRÕES ARQUITETURAIS
|
|
285
|
+
- Separation of concerns:
|
|
286
|
+
* Controllers/Handlers/Resolvers?
|
|
287
|
+
* Services/Use Cases?
|
|
288
|
+
* Repositories/DAOs?
|
|
289
|
+
- Design patterns:
|
|
290
|
+
* Dependency Injection (constructor injection?)
|
|
291
|
+
* Factory/Builder?
|
|
292
|
+
* Strategy/Template Method?
|
|
293
|
+
|
|
294
|
+
[ ] BIBLIOTECAS E UTILITÁRIOS
|
|
295
|
+
- Pastas comuns:
|
|
296
|
+
* /common, /shared, /utils, /helpers
|
|
297
|
+
* /lib, /core, /base
|
|
298
|
+
- Logging:
|
|
299
|
+
* winston, pino, serilog
|
|
300
|
+
- Validation:
|
|
301
|
+
* zod, yup, joi, class-validator, FluentValidation
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
**Checkpoint de Validação:**
|
|
305
|
+
- [ ] Stack tecnológica identificada (linguagens, frameworks, versões)
|
|
306
|
+
- [ ] Integrações externas mapeadas (APIs, webhooks, rate limiting)
|
|
307
|
+
- [ ] Maturidade de testes avaliada (framework, coverage, tipos)
|
|
308
|
+
- [ ] Estrutura de diretórios analisada
|
|
309
|
+
- [ ] Padrões de código identificados
|
|
310
|
+
|
|
311
|
+
**Output Esperado:**
|
|
312
|
+
- Tabela de Stack Tecnológico
|
|
313
|
+
- Catálogo de Integrações Externas
|
|
314
|
+
- Matriz de Maturidade de Testes
|
|
315
|
+
- Mapa de Estrutura de Diretórios
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
### PASSO 3: Identificação de Stack Tecnológica com Níveis de Confiança
|
|
320
|
+
|
|
321
|
+
**Objetivo:** Detectar tecnologias específicas e atribuir níveis de confiança
|
|
322
|
+
|
|
323
|
+
**Ações Concretas:**
|
|
324
|
+
|
|
325
|
+
#### 3.1. Sistema de Níveis de Confiança
|
|
326
|
+
|
|
327
|
+
Para cada tecnologia detectada, atribuir nível de confiança baseado em evidências:
|
|
328
|
+
|
|
329
|
+
**ALTA CONFIANÇA (90-100%)** - Evidência explícita no código
|
|
330
|
+
- Imports diretos: `import express from 'express'`
|
|
331
|
+
- Arquivos de config: `.csproj` com `<TargetFramework>net8.0</TargetFramework>`
|
|
332
|
+
- Connection strings explícitas: `Host=localhost;Port=5432;Database=mydb`
|
|
333
|
+
- Migration files com schema claro
|
|
334
|
+
- package.json com versões exatas
|
|
335
|
+
|
|
336
|
+
**MÉDIA CONFIANÇA (60-89%)** - Evidência indireta ou parcial
|
|
337
|
+
- Padrões de nomenclatura sugerem uso (mas não confirmado)
|
|
338
|
+
- Arquivos de exemplo ou boilerplate
|
|
339
|
+
- Comentários mencionando tecnologia
|
|
340
|
+
- Estrutura de pastas típica (mas sem confirmação direta)
|
|
341
|
+
- Versão não especificada (ex: "PostgreSQL" sem versão)
|
|
342
|
+
|
|
343
|
+
**BAIXA CONFIANÇA (< 60%)** - Inferência baseada em convenções
|
|
344
|
+
- Apenas estrutura de pastas (pode ser coincidência)
|
|
345
|
+
- Dependências transitivas (não diretamente usadas)
|
|
346
|
+
- Ausência de evidências contraditórias
|
|
347
|
+
- Convenções de命名 típicas para stack
|
|
348
|
+
- Arquivos de config sem valores concretos
|
|
349
|
+
|
|
350
|
+
#### 3.2. Análise Detalhada por Camada
|
|
351
|
+
|
|
352
|
+
**BACKEND:**
|
|
353
|
+
```
|
|
354
|
+
Para detectar:
|
|
355
|
+
1. Linguagem e versão:
|
|
356
|
+
- .csproj: <TargetFramework>net8.0</TargetFramework>
|
|
357
|
+
- package.json: "engines": { "node": ">=20" }
|
|
358
|
+
- go.mod: module x.y/z
|
|
359
|
+
- pyproject.toml: requires-python = ">=3.11"
|
|
360
|
+
|
|
361
|
+
2. Framework:
|
|
362
|
+
- ASP.NET Core: Microsoft.AspNetCore.App
|
|
363
|
+
- Express: "express": "^4.18.2"
|
|
364
|
+
- FastAPI: fastapi, uvicorn
|
|
365
|
+
- Rails: "rails", "~> 7.0"
|
|
366
|
+
|
|
367
|
+
3. ORM/Database:
|
|
368
|
+
- Entity Framework: Microsoft.EntityFrameworkCore
|
|
369
|
+
- Prisma: @prisma/client
|
|
370
|
+
- SQLAlchemy: sqlalchemy
|
|
371
|
+
- ActiveRecord: activerecord
|
|
372
|
+
|
|
373
|
+
Exemplo de saída com confiança:
|
|
374
|
+
```
|
|
375
|
+
| Tecnologia | Confiança | Justificativa |
|
|
376
|
+
|:---|:---:|:---|
|
|
377
|
+
| **.NET 8** | 100% | .csproj com <TargetFramework>net8.0</TargetFramework> |
|
|
378
|
+
| **PostgreSQL 15** | 75% | Connection string "Server=localhost;Port=5432" mas versão não especificada |
|
|
379
|
+
| **Entity Framework 8** | 95% | Microsoft.EntityFrameworkCore.SqlServer v8.0.0 no .csproj |
|
|
380
|
+
| **Redis Cache** | 35% | docker-compose tem redis mas código não usa ioredis/redis-client |
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
**FRONTEND:**
|
|
384
|
+
```
|
|
385
|
+
Para detectar:
|
|
386
|
+
1. Framework:
|
|
387
|
+
- React: "react", "react-dom"
|
|
388
|
+
- Vue: "vue"
|
|
389
|
+
- Angular: "@angular/core"
|
|
390
|
+
- Svelte: "svelte"
|
|
391
|
+
|
|
392
|
+
2. Build Tool:
|
|
393
|
+
- Vite: "vite"
|
|
394
|
+
- Webpack: "webpack"
|
|
395
|
+
- Turbopack: "next-turbo"
|
|
396
|
+
|
|
397
|
+
3. UI Library:
|
|
398
|
+
- shadcn-vue, shadcn-ui
|
|
399
|
+
- @mui/material, @chakra-ui/react
|
|
400
|
+
- primevue, vuetify
|
|
401
|
+
|
|
402
|
+
Exemplo de saída:
|
|
403
|
+
```
|
|
404
|
+
| Tecnologia | Confiança | Justificativa |
|
|
405
|
+
|:---|:---:|:---|
|
|
406
|
+
| **Vue.js 3.4** | 98% | package.json: "vue": "^3.4.21" |
|
|
407
|
+
| **TypeScript** | 100% | tsconfig.json com "compilerOptions" |
|
|
408
|
+
| **TailwindCSS** | 92% | tailwind.config.js existe, classes @ usadas em .vue |
|
|
409
|
+
| **Pinia (State)** | 88% | stores/ folder com useXStore |
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
**INFRAESTRUTURA:**
|
|
413
|
+
```
|
|
414
|
+
Para detectar:
|
|
415
|
+
1. Docker:
|
|
416
|
+
- docker-compose.yml com serviços definidos
|
|
417
|
+
- Dockerfile na raiz
|
|
418
|
+
|
|
419
|
+
2. Cloud:
|
|
420
|
+
- AWS: @aws-sdk/* packages
|
|
421
|
+
- Azure: @azure/* packages
|
|
422
|
+
- GCP: @google-cloud/* packages
|
|
423
|
+
|
|
424
|
+
3. CI/CD:
|
|
425
|
+
- GitHub Actions: .github/workflows/*.yml
|
|
426
|
+
- GitLab CI: .gitlab-ci.yml
|
|
427
|
+
- Docker: Dockerfile
|
|
428
|
+
|
|
429
|
+
Exemplo de saída:
|
|
430
|
+
```
|
|
431
|
+
| Tecnologia | Confiança | Justificativa |
|
|
432
|
+
|:---|:---:|:---|
|
|
433
|
+
| **Docker** | 100% | docker-compose.yml existe |
|
|
434
|
+
| **PostgreSQL** | 95% | db: image: postgres:15-alpine |
|
|
435
|
+
| **GitHub Actions** | 100% | .github/workflows/ci.yml existe |
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
**MARCAÇÃO PARA VALIDAÇÃO:**
|
|
439
|
+
- Todos os itens com confiança < 70% DEVEM ser marcados com tag **[REVISAR]**
|
|
440
|
+
- Estes itens serão priorizados no Passo 6 (Clarificação)
|
|
441
|
+
|
|
442
|
+
**Checkpoint de Validação:**
|
|
443
|
+
- [ ] Todas as tecnologias detectadas listadas
|
|
444
|
+
- [ ] Níveis de confiança atribuídos (100%, 75%, 35%, etc.)
|
|
445
|
+
- [ ] Justificativas documentadas para cada inferência
|
|
446
|
+
- [ ] Itens baixa confiança marcados para revisão
|
|
447
|
+
|
|
448
|
+
**Output Esperado:**
|
|
449
|
+
- Tabela completa de Stack Tecnológico com confiança
|
|
450
|
+
- Lista de itens marcados [REVISAR] (confiança < 70%)
|
|
451
|
+
|
|
452
|
+
---
|
|
453
|
+
|
|
454
|
+
### PASSO 4: Inferência de Padrões Arquiteturais e Domínio
|
|
455
|
+
|
|
456
|
+
**Objetivo:** Identificar paradigma arquitetural, padrões de design e elementos de DDD no código
|
|
457
|
+
|
|
458
|
+
**Ações Concretas:**
|
|
459
|
+
|
|
460
|
+
#### 4.1. Detecção de Paradigma Arquitetural
|
|
461
|
+
|
|
462
|
+
**CHECKLIST DE ANÁLISE:**
|
|
463
|
+
|
|
464
|
+
```
|
|
465
|
+
[ ] CLEAN ARCHITECTURE / ONION ARCHITECTURE
|
|
466
|
+
Indicadores:
|
|
467
|
+
- Pastas: /src/Domain, /src/Application, /src/Infrastructure, /src/Interface
|
|
468
|
+
- Dependências: Domain não depende de ninguém
|
|
469
|
+
- Entities em /src/Domain/Entities ou /src/Domain/Models
|
|
470
|
+
- Use Cases em /src/Application/Commands ou /src/Application/UseCases
|
|
471
|
+
- Repositories como interfaces em /src/Domain/Interfaces
|
|
472
|
+
- Implementações de infra em /src/Infrastructure/Persistence
|
|
473
|
+
|
|
474
|
+
[ ] HEXAGONAL ARCHITECTURE / PORTS AND ADAPTERS
|
|
475
|
+
Indicadores:
|
|
476
|
+
- Pastas: /ports, /adapters
|
|
477
|
+
- Interfaces como ports: IPort, IGateway
|
|
478
|
+
- Adapters: RepositoryAdapter, ExternalServiceAdapter
|
|
479
|
+
- Domain core isolado
|
|
480
|
+
|
|
481
|
+
[ ] DOMAIN-DRIVEN DESIGN (DDD)
|
|
482
|
+
Indicadores:
|
|
483
|
+
- Bounded contexts: /src/Users, /src/Orders, /src/Shipping
|
|
484
|
+
- Aggregates: User (root), Order (root com OrderItems)
|
|
485
|
+
- Value Objects: Email, Money, Address
|
|
486
|
+
- Domain Events: UserCreated, OrderPaid
|
|
487
|
+
- Repositories: IUserRepository, IOrderRepository
|
|
488
|
+
|
|
489
|
+
[ ] MVC TRADITIONAL / LAYERED ARCHITECTURE
|
|
490
|
+
Indicadores:
|
|
491
|
+
- Controllers/Handlers em /controllers ou /api
|
|
492
|
+
- Services em /services
|
|
493
|
+
- Models/Entities em /models
|
|
494
|
+
- Database access em services ou repositories
|
|
495
|
+
|
|
496
|
+
[ ] MICROSERVICES
|
|
497
|
+
Indicadores:
|
|
498
|
+
- Múltiplos entry points (server.ts, main.py separados)
|
|
499
|
+
- API Gateway ou BFF
|
|
500
|
+
- Comunicação via eventos/mensageria
|
|
501
|
+
- Bancos separados por serviço
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
**EXEMPLO DE SAÍDA (mantenha internamente):**
|
|
505
|
+
```
|
|
506
|
+
PARADIGMA ARQUITETURAL DETECTADO
|
|
507
|
+
-----------------------------------------------------------
|
|
508
|
+
|
|
509
|
+
Paradigma Principal: Clean Architecture [Confiança: 65%]
|
|
510
|
+
|
|
511
|
+
Indicadores Favoráveis:
|
|
512
|
+
- [OK] /src/Domain com Entities e ValueObjects
|
|
513
|
+
- [OK] /src/Application com Commands e Queries
|
|
514
|
+
- [OK] /src/Infrastructure com Repositories
|
|
515
|
+
|
|
516
|
+
Violacoes Detectadas (baixa confianca):
|
|
517
|
+
- [WARNING] UsersController tem metodo CalculateDiscount()
|
|
518
|
+
(logica de negocio em controller, viola Clean Arch)
|
|
519
|
+
- [WARNING] OrdersController acessa DbContext diretamente
|
|
520
|
+
(infraestrutura em UI layer)
|
|
521
|
+
|
|
522
|
+
Conclusão:
|
|
523
|
+
Estrutura segue Clean Architecture mas há violacoes
|
|
524
|
+
locais. Possivelmente codigo em evolucao ou time
|
|
525
|
+
ainda adaptando ao padrao.
|
|
526
|
+
-----------------------------------------------------------
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
#### 4.2. Inferência de Domínio (DDD Patterns) [NOVO]
|
|
530
|
+
|
|
531
|
+
**Objetivo:** Identificar elementos de Domain-Driven Design no código
|
|
532
|
+
|
|
533
|
+
**CHECKLIST DE ANÁLISE:**
|
|
534
|
+
|
|
535
|
+
```
|
|
536
|
+
[ ] BOUNDED CONTEXTS
|
|
537
|
+
Indicadores:
|
|
538
|
+
- Módulos funcionalmente isolados?
|
|
539
|
+
- Pastas: /src/Users/, /src/Orders/, /src/Payments/
|
|
540
|
+
- Verificar se há comunicação apenas via APIs/events
|
|
541
|
+
- Cada context tem seu próprio modelo de domínio?
|
|
542
|
+
|
|
543
|
+
Exemplo:
|
|
544
|
+
[OK] /src/Users/{Domain,Application,Infrastructure} - bounded context
|
|
545
|
+
[OK] /src/Orders/{Domain,Application,Infrastructure} - bounded context
|
|
546
|
+
[WARNING] /src/Payments/ - apenas controllers, sem domínio rico
|
|
547
|
+
|
|
548
|
+
[ ] AGGREGATES E ENTITIES
|
|
549
|
+
Indicadores:
|
|
550
|
+
- Aggregates raiz (User root, Order root)
|
|
551
|
+
- Buscar invariants (métodos privados de validação)
|
|
552
|
+
- Verificar consistência transacional
|
|
553
|
+
- Collections dentro de aggregates (Order com OrderItems)
|
|
554
|
+
|
|
555
|
+
Exemplo:
|
|
556
|
+
[OK] User (Confiança: 90%) - Entidade com invariants (Email must be valid)
|
|
557
|
+
[OK] Order (Confiança: 85%) - Root com OrderItems, invariants (total > 0)
|
|
558
|
+
[WARNING] Payment (Confiança: 50%) - Pouca lógica de domínio, anêmico
|
|
559
|
+
|
|
560
|
+
[ ] VALUE OBJECTS
|
|
561
|
+
Indicadores:
|
|
562
|
+
- Classes imutáveis sem ID próprio
|
|
563
|
+
- record (C#), dataclass (Python), frozen dataclasses
|
|
564
|
+
- Tipos: Email, Money, Address, DateRange, PhoneNumber
|
|
565
|
+
|
|
566
|
+
Exemplo:
|
|
567
|
+
[OK] Email (Confiança: 95%) - record C# imutável com validação
|
|
568
|
+
[X] Money - NÃO ENCONTRADO (usa decimal simples)
|
|
569
|
+
[WARNING] Address (Confiança: 70%) - classe sem ID mas mutável (deveria ser imutável)
|
|
570
|
+
|
|
571
|
+
[ ] DOMAIN EVENTS
|
|
572
|
+
Indicadores:
|
|
573
|
+
- Eventos passados: UserCreated, OrderPaid
|
|
574
|
+
- Verificar se há event handlers/dispatchers
|
|
575
|
+
- Identificar event sourcing (se aplicável)
|
|
576
|
+
|
|
577
|
+
Exemplo:
|
|
578
|
+
[OK] UserCreated, OrderPaid (Confiança: 80%)
|
|
579
|
+
[OK] Event dispatcher: MediatR (INotificationHandlers)
|
|
580
|
+
|
|
581
|
+
[ ] REPOSITORIES
|
|
582
|
+
Indicadores:
|
|
583
|
+
- Interfaces de persistência abstraindo detalhes de DB
|
|
584
|
+
- Padrão: IUserRepository, IOrderRepository
|
|
585
|
+
- Implementações em Infrastructure layer
|
|
586
|
+
- Methods: Add, Update, Delete, GetById, Find
|
|
587
|
+
|
|
588
|
+
Exemplo:
|
|
589
|
+
[OK] IUserRepository, IOrderRepository (Confiança: 92%)
|
|
590
|
+
[OK] Implementações com Dapper (Confiança: 95%)
|
|
591
|
+
[WARNING] IPaymentRepository (Confiança: 40%) - Interface existe mas não implementada
|
|
592
|
+
|
|
593
|
+
[ ] SERVICES (DOMAIN/APP)
|
|
594
|
+
Indicadores:
|
|
595
|
+
- Serviços de domínio (lógica complexa sem estado)
|
|
596
|
+
- Application services (use cases/orchestrators)
|
|
597
|
+
- Diferenciar de infrastructure services
|
|
598
|
+
|
|
599
|
+
Exemplo:
|
|
600
|
+
[OK] PaymentService (Confiança: 75%) - Orquestra fluxo de pagamento
|
|
601
|
+
[OK] EmailService (Confiança: 60%) - Infra service, envia emails
|
|
602
|
+
```
|
|
603
|
+
|
|
604
|
+
**EXEMPLO DE SAÍDA COMPLETA (mantenha internamente):**
|
|
605
|
+
```
|
|
606
|
+
DOMÍNIO INFERIDO (DOMAIN-DRIVEN DESIGN)
|
|
607
|
+
-----------------------------------------------------------
|
|
608
|
+
|
|
609
|
+
Bounded Contexts:
|
|
610
|
+
- [OK] Users (Confiança: 85%)
|
|
611
|
+
- Estrutura: /src/Users/{Domain,Application,Infra}
|
|
612
|
+
- Aggregates: User
|
|
613
|
+
- Events: UserCreated, UserUpdated
|
|
614
|
+
- [OK] Orders (Confiança: 72%)
|
|
615
|
+
- Estrutura: /src/Orders mas com services com lógica
|
|
616
|
+
- Aggregates: Order (root com OrderItems)
|
|
617
|
+
- Events: OrderCreated, OrderPaid, OrderCancelled
|
|
618
|
+
- [WARNING] Payments (Confiança: 40%) [REVISAR]
|
|
619
|
+
- Apenas controllers, sem domínio rico
|
|
620
|
+
- Possível bounded context externo (API wrapper)
|
|
621
|
+
|
|
622
|
+
Aggregates:
|
|
623
|
+
- [OK] User (Confiança: 90%)
|
|
624
|
+
- Entidade com invariants: Email unico, CPF valido
|
|
625
|
+
- [OK] Order (Confiança: 85%)
|
|
626
|
+
- Root com OrderItems (collection)
|
|
627
|
+
- Invariants: Total > 0, Status transitions valid
|
|
628
|
+
- [WARNING] Payment (Confiança: 50%) [REVISAR]
|
|
629
|
+
- Pouca logica de dominio, anemico
|
|
630
|
+
|
|
631
|
+
Value Objects:
|
|
632
|
+
- [OK] Email (Confiança: 95%)
|
|
633
|
+
- record C# imutavel com validacao
|
|
634
|
+
- [OK] CPF (Confianca: 88%)
|
|
635
|
+
- record C# com validacao de digito
|
|
636
|
+
- [X] Money - NAO ENCONTRADO (usa decimal simples)
|
|
637
|
+
- [WARNING] Address (Confiança: 70%) [REVISAR]
|
|
638
|
+
- classe sem ID mas mutavel (deveria ser imutavel)
|
|
639
|
+
|
|
640
|
+
Domain Events:
|
|
641
|
+
- [OK] UserCreated, UserUpdated (Confiança: 80%)
|
|
642
|
+
- [OK] OrderCreated, OrderPaid, OrderCancelled (Confiança: 82%)
|
|
643
|
+
- [X] Payment-related events - NAO ENCONTRADOS
|
|
644
|
+
- [OK] Event dispatcher: MediatR (INotificationHandlers)
|
|
645
|
+
|
|
646
|
+
Repositories:
|
|
647
|
+
- [OK] IUserRepository, IOrderRepository (Confiança: 92%)
|
|
648
|
+
- Interfaces em /src/Domain/Interfaces
|
|
649
|
+
- [OK] Implementacoes com Dapper (Confiança: 95%)
|
|
650
|
+
- /src/Infrastructure/Persistence/DapperUserRepository
|
|
651
|
+
- [WARNING] IPaymentRepository (Confiança: 40%) [REVISAR]
|
|
652
|
+
- Interface existe mas nao implementada
|
|
653
|
+
|
|
654
|
+
Domain Services:
|
|
655
|
+
- [OK] PaymentService (Confiança: 75%)
|
|
656
|
+
- Orquestra fluxo: Valida -> Processa -> Atualiza
|
|
657
|
+
- [WARNING] DiscountService (Confiança: 65%) [REVISAR]
|
|
658
|
+
- Logica complexa em controller (deveria ser em dominio)
|
|
659
|
+
|
|
660
|
+
Nivel de Maturidade DDD: INTERMEDIARIO
|
|
661
|
+
- [OK] Bounded contexts definidos
|
|
662
|
+
- [OK] Aggregates e entities identificadas
|
|
663
|
+
- [WARNING] Value_objects parciais (nem todos imutaveis)
|
|
664
|
+
- [OK] Domain events implementados via MediatR
|
|
665
|
+
- [OK] Repositories pattern aplicado
|
|
666
|
+
- [WARNING] Alguns servicos de dominio em camada errada
|
|
667
|
+
- [X] Faltam: Specifications, Domain Services explicitos
|
|
668
|
+
```
|
|
669
|
+
|
|
670
|
+
**Checkpoint de Validação:**
|
|
671
|
+
- [ ] Paradigma arquitetural identificado (Clean Arch, DDD, MVC, etc.)
|
|
672
|
+
- [ ] Nível de confiança atribuído ao paradigma
|
|
673
|
+
- [ ] Bounded contexts mapeados (se aplicável)
|
|
674
|
+
- [ ] Aggregates e entities catalogados
|
|
675
|
+
- [ ] Value objects identificados
|
|
676
|
+
- [ ] Domain events listados
|
|
677
|
+
- [ ] Repositories e services classificados
|
|
678
|
+
- [ ] Itens com baixa confiança marcados [REVISAR]
|
|
679
|
+
|
|
680
|
+
**Output Esperado:**
|
|
681
|
+
- Paradigma arquitetural com confiança
|
|
682
|
+
- Mapa completo de domínio (DDD)
|
|
683
|
+
- Lista de itens [REVISAR] (confiança < 70%)
|
|
684
|
+
|
|
685
|
+
---
|
|
686
|
+
|
|
687
|
+
### PASSO 5: Geração Iterativa - architecture.md
|
|
688
|
+
|
|
689
|
+
**Objetivo:** Gerar rascunho de arquitetura baseado em fatos detectados e validar rapidamente
|
|
690
|
+
|
|
691
|
+
**Ações Concretas:**
|
|
692
|
+
|
|
693
|
+
#### 5.1. Gerar Rascunho de architecture.md
|
|
694
|
+
|
|
695
|
+
1. **Criar diretório se não existir:**
|
|
696
|
+
```
|
|
697
|
+
./specs/core/
|
|
698
|
+
```
|
|
699
|
+
|
|
700
|
+
2. **Usar template** `@templates/architecture-template.md`
|
|
701
|
+
|
|
702
|
+
3. **Preencher seções** baseado em análise dos Passos 2-4:
|
|
703
|
+
- Seção 1: Paradigma Arquitetural (do Passo 4.1)
|
|
704
|
+
- Seção 2: Stack Tecnológico (do Passo 3)
|
|
705
|
+
- Seção 3: Padrões de Design e Convenções (do Passo 2.4)
|
|
706
|
+
- Seção 4: Estrutura de Diretórios (do Passo 2.4)
|
|
707
|
+
- Seção 5: Contratos e Interfaces (detectar de controllers/endpoints)
|
|
708
|
+
- Seção 6: Pipeline de CI/CD (se detectado)
|
|
709
|
+
- **Seção 7: Integrações Externas [NOVO]** (do Passo 2.2)
|
|
710
|
+
- **Seção 8: Maturidade de Testes [NOVO]** (do Passo 2.3)
|
|
711
|
+
- **Seção 9: Domínio Inferido [NOVO]** (do Passo 4.2)
|
|
712
|
+
|
|
713
|
+
4. **Marcar itens com baixa confiança:**
|
|
714
|
+
- Para cada inferência com confiança < 70%, adicionar tag **[REVISAR]**
|
|
715
|
+
- Adicionar justificativa da baixa confiança
|
|
716
|
+
|
|
717
|
+
5. **Preencher campos de metadados:**
|
|
718
|
+
- Status: DRAFT
|
|
719
|
+
- Data: Data atual
|
|
720
|
+
- Nível de Profundidade: Detalhado automaticamente
|
|
721
|
+
|
|
722
|
+
6. **Salvar arquivo:**
|
|
723
|
+
```
|
|
724
|
+
./specs/core/architecture.md
|
|
725
|
+
```
|
|
726
|
+
|
|
727
|
+
#### 5.2. Apresentar para Validação Rápida
|
|
728
|
+
|
|
729
|
+
**Apresentar resumo executivo (focado em itens críticos):**
|
|
730
|
+
|
|
731
|
+
```
|
|
732
|
+
[ARQUITETURA] RASCUNHO DE ARQUITETURA GERADO
|
|
733
|
+
|
|
734
|
+
ARQUIVO: ./specs/core/architecture.md
|
|
735
|
+
|
|
736
|
+
-----------------------------------------------------------
|
|
737
|
+
|
|
738
|
+
STACK TECNOLÓGICA DETECTADA:
|
|
739
|
+
- Backend: .NET 8 (C# 12) [OK] Confiança: 100%
|
|
740
|
+
- Database: PostgreSQL 15 [WARNING] Confiança: 75% [REVISAR]
|
|
741
|
+
- Motivo: Versão não explicitada em config
|
|
742
|
+
- ORM: Entity Framework Core 8.0 [OK] Confiança: 95%
|
|
743
|
+
- Frontend: Vue.js 3.4 + TypeScript [OK] Confiança: 98%
|
|
744
|
+
|
|
745
|
+
PARADIGMA ARQUITETURAL:
|
|
746
|
+
- Clean Architecture [WARNING] Confiança: 65% [REVISAR]
|
|
747
|
+
-[OK] Indicadores: Domain/Application/Infrastructure separados
|
|
748
|
+
-[WARNING] Violações: Controllers com lógica de negócio detectados
|
|
749
|
+
- Motivo: UsersController.CalculateDiscount() em UI layer
|
|
750
|
+
- Separação de camadas: [OK] Presente
|
|
751
|
+
|
|
752
|
+
INTEGRAÇÕES EXTERNAS:
|
|
753
|
+
- Stripe (Payments) [OK] v14.2, webhooks configurados
|
|
754
|
+
- AWS S3 (Storage) [OK] presigned URLs implementados
|
|
755
|
+
- SendGrid (Email) [OK] templates transactionais
|
|
756
|
+
- Redis (Cache) [WARNING] Confiança: 35% [REVISAR]
|
|
757
|
+
- Motivo: docker-compose tem redis mas código não usa
|
|
758
|
+
|
|
759
|
+
MATURIDADE DE TESTES: INTERMEDIÁRIO
|
|
760
|
+
- Framework: Jest [OK] v29.7 configurado
|
|
761
|
+
- Coverage: [WARNING] 62% (abaixo do ideal 70%)
|
|
762
|
+
- Statements: 58%
|
|
763
|
+
- Branches: 54%
|
|
764
|
+
- Functions: 65%
|
|
765
|
+
- Tipos: [OK] Unit (70%), Integration (20%), E2E (10%)
|
|
766
|
+
- Fixtures: [OK] Jest fixtures + Faker.js
|
|
767
|
+
|
|
768
|
+
DOMÍNIO INFERIDO (DDD):
|
|
769
|
+
- Bounded Contexts: 3 detectados [OK]
|
|
770
|
+
- Users (85%), Orders (72%), Payments (40% [REVISAR])
|
|
771
|
+
- Aggregates: User (90%), Order (85%), Payment (50% [REVISAR])
|
|
772
|
+
- Value Objects:
|
|
773
|
+
-[OK] Email (95%), CPF (88%)
|
|
774
|
+
-[WARNING] Address (70% [REVISAR] - mutável, deveria ser imutável)
|
|
775
|
+
-[X] Money - NÃO ENCONTRADO (usa decimal simples)
|
|
776
|
+
- Domain Events: [OK] MediatR implementado (UserCreated, OrderPaid)
|
|
777
|
+
|
|
778
|
+
-----------------------------------------------------------
|
|
779
|
+
|
|
780
|
+
ITENS MARCADOS [REVISAR] (5 itens):
|
|
781
|
+
1. PostgreSQL 15 (75%) - versão inferida, não confirmada
|
|
782
|
+
2. Clean Architecture (65%) - violações detectadas
|
|
783
|
+
3. Redis Cache (35%) - configurado mas não usado em código
|
|
784
|
+
4. Payments Bounded Context (40%) - sem domínio rico
|
|
785
|
+
5. Payment Aggregate (50%) - anêmico, sem lógica
|
|
786
|
+
|
|
787
|
+
TEMPO ESTIMADO DE REVISÃO: 2 minutos
|
|
788
|
+
|
|
789
|
+
-----------------------------------------------------------
|
|
790
|
+
|
|
791
|
+
QUAL SUA DECISÃO?
|
|
792
|
+
|
|
793
|
+
A) APROVAR [OK]
|
|
794
|
+
-> Confirmo que a arquitetura inferida está correta
|
|
795
|
+
-> Prosseguir para gerar product_vision.md
|
|
796
|
+
|
|
797
|
+
B) REVISAR
|
|
798
|
+
-> Quero abrir o arquivo e fazer ajustes manualmente
|
|
799
|
+
-> Após revisão, voltarei para confirmar
|
|
800
|
+
|
|
801
|
+
C) REGER [REVISAR] itens específicos
|
|
802
|
+
-> Quero corrigir as inferências com baixa confiança
|
|
803
|
+
-> Especificar quais itens corrigir (máx 3)
|
|
804
|
+
|
|
805
|
+
D) CANCELAR [X]
|
|
806
|
+
-> Encerrar sem salvar alterações
|
|
807
|
+
```
|
|
808
|
+
|
|
809
|
+
**Aguardar resposta do usuário.**
|
|
810
|
+
|
|
811
|
+
#### 5.3. Processar Resposta do Usuário
|
|
812
|
+
|
|
813
|
+
**SE resposta APROVAR:**
|
|
814
|
+
1. Atualizar status de `./specs/core/architecture.md` para `APPROVED`
|
|
815
|
+
2. Prosseguir para Passo 6 (se houver itens [REVISAR]) ou Passo 7 (se não houver)
|
|
816
|
+
3. Registrar aprovação com timestamp
|
|
817
|
+
|
|
818
|
+
**SE resposta REVISAR:**
|
|
819
|
+
1. Permitir que usuário abra o arquivo `./specs/core/architecture.md`
|
|
820
|
+
2. Aguardar usuário fazer edições
|
|
821
|
+
3. Após edição, reapresentar resumo atualizado
|
|
822
|
+
4. Repetir pergunta de aprovação
|
|
823
|
+
|
|
824
|
+
**SE resposta REGER:**
|
|
825
|
+
1. Solicitar ao usuário especificar quais itens corrigir (máx 3)
|
|
826
|
+
2. Para cada item:
|
|
827
|
+
- Re-analisar seções específicas do código
|
|
828
|
+
- Atualizar inferências com nova evidência
|
|
829
|
+
- Recalcular nível de confiança
|
|
830
|
+
3. Regerar rascunho de `architecture.md` com correções
|
|
831
|
+
4. Repetir apresentação para validação
|
|
832
|
+
|
|
833
|
+
**SE resposta CANCELAR:**
|
|
834
|
+
1. Informar que arquivo foi salvo em `./specs/core/architecture.md` (status DRAFT)
|
|
835
|
+
2. Usuário pode revisar posteriormente
|
|
836
|
+
3. Encerrar execução
|
|
837
|
+
|
|
838
|
+
**Checkpoint de Validação:**
|
|
839
|
+
- [ ] Arquivo `architecture.md` gerado
|
|
840
|
+
- [ ] Resumo executivo apresentado ao usuário
|
|
841
|
+
- [ ] Usuário tomou decisão (Aprovar/Revisar/Regenerar/Cancelar)
|
|
842
|
+
- [ ] Status do arquivo atualizado conforme decisão
|
|
843
|
+
|
|
844
|
+
**Output Esperado:**
|
|
845
|
+
- Arquivo `./specs/core/architecture.md` gerado (DRAFT ou APPROVED)
|
|
846
|
+
- Resumo executivo apresentado
|
|
847
|
+
- Decisão do usuário registrada
|
|
848
|
+
|
|
849
|
+
---
|
|
850
|
+
|
|
851
|
+
### PASSO 6: Validação e Clarificação (Apenas itens baixa confiança)
|
|
852
|
+
|
|
853
|
+
**Objetivo:** Focar perguntas APENAS em itens com confiança < 70% e que bloqueiam a inferência de negócio
|
|
854
|
+
|
|
855
|
+
**CRÍTICO:** Este passo só deve ser executado se houver itens [REVISAR] marcados no Passo 5. Se todos os itens tiverem confiança >= 70%, PULE para o Passo 7.
|
|
856
|
+
|
|
857
|
+
**Ações Concretas:**
|
|
858
|
+
|
|
859
|
+
#### 6.1. Filtrar e Priorizar Itens Baixa Confiança
|
|
860
|
+
|
|
861
|
+
1. **Filtrar itens** com confiança < 70% do Passo 5
|
|
862
|
+
2. **Agrupar por categoria:**
|
|
863
|
+
- DOMÍNIO (bounded contexts, aggregates, value objects)
|
|
864
|
+
- ARQUITETURA (paradigma, padrões, separação de camadas)
|
|
865
|
+
- STACK (tecnologias, versões, bibliotecas)
|
|
866
|
+
3. **Priorizar por impacto:**
|
|
867
|
+
- ALTO IMPACTO: Bloqueia inferência de negócio (ex: bounded context ausente)
|
|
868
|
+
- MÉDIO IMPACTO: Impacta arquitetura mas não bloqueia negócio (ex: Redis não usado)
|
|
869
|
+
- BAIXO IMPACTO: Detalhe técnico (ex: versão exata do PostgreSQL)
|
|
870
|
+
|
|
871
|
+
#### 6.2. Preparar Perguntas (Máximo 2 por categoria)
|
|
872
|
+
|
|
873
|
+
**Regras:**
|
|
874
|
+
- **MÁXIMO 2 perguntas por categoria** (total max 6 perguntas)
|
|
875
|
+
- **Focar em itens com ALTO ou MÉDIO impacto**
|
|
876
|
+
- **Itens BAIXO impacto devem ser documentados como "Nota de Decisão"**
|
|
877
|
+
- **Cada pergunta deve fornecer contexto específico do código analisado**
|
|
878
|
+
|
|
879
|
+
**Modelo de Pergunta Efetiva:**
|
|
880
|
+
|
|
881
|
+
```
|
|
882
|
+
[LACUNA: CATEGORIA - NÍVEL DE IMPACTO]
|
|
883
|
+
|
|
884
|
+
Item: [Nome do item inferido]
|
|
885
|
+
Confiança: [X%] - [Justificativa da baixa confiança]
|
|
886
|
+
|
|
887
|
+
CONTEXTO (do código analisado):
|
|
888
|
+
[Descrever o que foi encontrado no código]
|
|
889
|
+
[Evidências parciais ou contraditórias]
|
|
890
|
+
|
|
891
|
+
ANÁLISE:
|
|
892
|
+
[Por que a confiança é baixa]
|
|
893
|
+
[O que está faltando para aumentar confiança]
|
|
894
|
+
|
|
895
|
+
PERGUNTA [NÚMERO]/[TOTAL]:
|
|
896
|
+
[Pergunta clara e específica com 3-4 opções]
|
|
897
|
+
|
|
898
|
+
OPÇÕES:
|
|
899
|
+
A) [Opção 1 - baseada em evidências]
|
|
900
|
+
B) [Opção 2 - alternativa plausível]
|
|
901
|
+
C) [Opção 3 - confirmar análise atual]
|
|
902
|
+
D) [Outro: descrever]
|
|
903
|
+
```
|
|
904
|
+
|
|
905
|
+
**Exemplos Práticos de Perguntas:**
|
|
906
|
+
|
|
907
|
+
**Exemplo 1: Paradigma Arquitetural (ALTO IMPACTO)**
|
|
908
|
+
```
|
|
909
|
+
[LACUNA: ARQUITETURA - ALTO IMPACTO]
|
|
910
|
+
|
|
911
|
+
Item: Paradigma Clean Architecture
|
|
912
|
+
Confiança: 55% (detectado Domain/Application mas há violações)
|
|
913
|
+
|
|
914
|
+
CONTEXTO:
|
|
915
|
+
Análise detectou estrutura de pastas típica de Clean Architecture:
|
|
916
|
+
- /src/Domain (Entities, ValueObjects)
|
|
917
|
+
- /src/Application (Commands, Queries)
|
|
918
|
+
- /src/Infrastructure (Repositories)
|
|
919
|
+
|
|
920
|
+
Porém, também detectei violações:
|
|
921
|
+
- UsersController tem método CalculateDiscount() (lógica de negócio em UI)
|
|
922
|
+
- OrdersController acessa DbContext diretamente (infra em UI layer)
|
|
923
|
+
- PaymentService está em /src/Services (não em /src/Application)
|
|
924
|
+
|
|
925
|
+
ANÁLISE:
|
|
926
|
+
Estrutura segue Clean Architecture mas implementação tem inconsistências.
|
|
927
|
+
Possíveis causas: código em evolução, time ainda adaptando, ou paradigma diferente.
|
|
928
|
+
|
|
929
|
+
PERGUNTA 1/2 (ARQUITETURA):
|
|
930
|
+
Este projeto segue Clean Architecture ou há outro paradigma em uso?
|
|
931
|
+
|
|
932
|
+
A) Clean Architecture (vou documentar violações como debt técnico)
|
|
933
|
+
B) MVC tradicional com pastas organizadas por feature (não é Clean Arch)
|
|
934
|
+
C) Layered Architecture sem separação estrita entre camadas
|
|
935
|
+
D) Outro paradigma: [descrever]
|
|
936
|
+
|
|
937
|
+
IMPACTO:
|
|
938
|
+
Esta decisão afeta:
|
|
939
|
+
- Como documentar separação de responsabilidades
|
|
940
|
+
- Quais padrões esperar para novas features
|
|
941
|
+
- Como classificar a arquitetura no architecture.md
|
|
942
|
+
```
|
|
943
|
+
|
|
944
|
+
**Exemplo 2: Bounded Context (ALTO IMPACTO)**
|
|
945
|
+
```
|
|
946
|
+
[LACUNA: DOMÍNIO - ALTO IMPACTO]
|
|
947
|
+
|
|
948
|
+
Item: Bounded Context "Payments"
|
|
949
|
+
Confiança: 40% (apenas controllers, sem domínio rico)
|
|
950
|
+
|
|
951
|
+
CONTEXTO:
|
|
952
|
+
Detectei /src/Payments/ com:
|
|
953
|
+
- PaymentsController (endpoints de pagamento)
|
|
954
|
+
- PaymentService (regras de validação e processamento)
|
|
955
|
+
|
|
956
|
+
Porém, NÃO encontrei:
|
|
957
|
+
- Payment aggregate/entity (classe de domínio)
|
|
958
|
+
- Domain events para pagamentos (PaymentProcessed, PaymentFailed)
|
|
959
|
+
- Value objects típicos (Money, CardNumber)
|
|
960
|
+
|
|
961
|
+
ANÁLISE:
|
|
962
|
+
Possible que Payments seja:
|
|
963
|
+
A) Bounded context anêmico (CRUD simples, sem domínio rico)
|
|
964
|
+
B) Contexto externo (API wrapper para serviço terceiro)
|
|
965
|
+
C) Domínio ainda em evolução (não implementado ainda)
|
|
966
|
+
|
|
967
|
+
PERGUNTA 2/2 (DOMÍNIO):
|
|
968
|
+
Payments é um bounded context com domínio rico ou apenas um wrapper/CRUD?
|
|
969
|
+
|
|
970
|
+
A) Domínio rico (vou inferir entidades/VOs baseado em endpoints)
|
|
971
|
+
B) CRUD simples (vou documentar como "anêmico" no architecture.md)
|
|
972
|
+
C) Contexto externo/API wrapper (vou documentar integração)
|
|
973
|
+
D) Outro: [descrever]
|
|
974
|
+
|
|
975
|
+
IMPACTO:
|
|
976
|
+
Esta decisão afeta:
|
|
977
|
+
- Como inferir casos de uso de negócio para Payments
|
|
978
|
+
- Quais entidades documentar em product_vision.md
|
|
979
|
+
- Como classificar maturidade DDD do projeto
|
|
980
|
+
```
|
|
981
|
+
|
|
982
|
+
**Exemplo 3: Stack Tecnológica (MÉDIO IMPACTO)**
|
|
983
|
+
```
|
|
984
|
+
[LACUNA: STACK - MÉDIO IMPACTO]
|
|
985
|
+
|
|
986
|
+
Item: Redis Cache
|
|
987
|
+
Confiança: 35% (docker-compose tem redis mas código não usa)
|
|
988
|
+
|
|
989
|
+
CONTEXTO:
|
|
990
|
+
Detectei Redis em docker-compose.yml:
|
|
991
|
+
```yaml
|
|
992
|
+
redis:
|
|
993
|
+
image: redis:7-alpine
|
|
994
|
+
ports: ["6379:6379"]
|
|
995
|
+
```
|
|
996
|
+
|
|
997
|
+
Porém, NÃO encontrei no código:
|
|
998
|
+
- Imports de redis-client, ioredis, @redis/client
|
|
999
|
+
- Uso de cache em queries ou services
|
|
1000
|
+
- Configuração de Redis em .env ou appsettings
|
|
1001
|
+
|
|
1002
|
+
ANÁLISE:
|
|
1003
|
+
Redis pode estar:
|
|
1004
|
+
A) Configurado para uso futuro (não implementado ainda)
|
|
1005
|
+
B) Usado por serviço externo (não no código analisado)
|
|
1006
|
+
C) Esquecimento do docker-compose (serviço não necessário)
|
|
1007
|
+
|
|
1008
|
+
PERGUNTA 1/2 (STACK):
|
|
1009
|
+
Redis deve ser documentado como parte da stack atual?
|
|
1010
|
+
|
|
1011
|
+
A) SIM, faz parte (planejado para futuro ou uso externo)
|
|
1012
|
+
B) NÃO, remover (não é usado no código atual)
|
|
1013
|
+
C) Manter como "opcional/futuro" com nota
|
|
1014
|
+
|
|
1015
|
+
IMPACTO:
|
|
1016
|
+
Baixo - não afeta inferência de negócio, apenas documentação técnica.
|
|
1017
|
+
```
|
|
1018
|
+
|
|
1019
|
+
#### 6.3. Apresentar Perguntas ao Usuário
|
|
1020
|
+
|
|
1021
|
+
**Formato de apresentação:**
|
|
1022
|
+
```
|
|
1023
|
+
[PERGUNTA] CLARIFICAÇÕES NECESSÁRIAS (6 perguntas máx)
|
|
1024
|
+
|
|
1025
|
+
Foram detectados 5 itens com baixa confiança que impactam a arquitetura.
|
|
1026
|
+
Por favor, responda para refinar as inferências.
|
|
1027
|
+
|
|
1028
|
+
-----------------------------------------------------------
|
|
1029
|
+
|
|
1030
|
+
CATEGORIA 1: ARQUITETURA (2 perguntas)
|
|
1031
|
+
|
|
1032
|
+
[LACUNA: ARQUITETURA - ALTO IMPACTO]
|
|
1033
|
+
|
|
1034
|
+
Item: Paradigma Clean Architecture
|
|
1035
|
+
Confiança: 55% (detectado Domain/Application mas há violações)
|
|
1036
|
+
|
|
1037
|
+
CONTEXTO:
|
|
1038
|
+
[... mesmo contexto do exemplo acima ...]
|
|
1039
|
+
|
|
1040
|
+
PERGUNTA 1/2 (ARQUITETURA):
|
|
1041
|
+
Este projeto segue Clean Architecture ou há outro paradigma em uso?
|
|
1042
|
+
|
|
1043
|
+
A) Clean Architecture (vou documentar violações como debt técnico)
|
|
1044
|
+
B) MVC tradicional com pastas organizadas por feature
|
|
1045
|
+
C) Layered Architecture sem separação estrita
|
|
1046
|
+
D) Outro: [descrever]
|
|
1047
|
+
|
|
1048
|
+
Sua resposta: [Aguardando input]
|
|
1049
|
+
|
|
1050
|
+
-----------------------------------------------------------
|
|
1051
|
+
|
|
1052
|
+
[Segunda pergunta de arquitetura, se houver]
|
|
1053
|
+
|
|
1054
|
+
-----------------------------------------------------------
|
|
1055
|
+
|
|
1056
|
+
CATEGORIA 2: DOMÍNIO (2 perguntas)
|
|
1057
|
+
|
|
1058
|
+
[LACUNA: DOMÍNIO - ALTO IMPACTO]
|
|
1059
|
+
|
|
1060
|
+
Item: Bounded Context "Payments"
|
|
1061
|
+
Confiança: 40% (apenas controllers, sem domínio rico)
|
|
1062
|
+
|
|
1063
|
+
[... mesmo formato da pergunta acima ...]
|
|
1064
|
+
|
|
1065
|
+
Sua resposta: [Aguardando input]
|
|
1066
|
+
|
|
1067
|
+
-----------------------------------------------------------
|
|
1068
|
+
|
|
1069
|
+
[Segunda pergunta de domínio, se houver]
|
|
1070
|
+
|
|
1071
|
+
-----------------------------------------------------------
|
|
1072
|
+
|
|
1073
|
+
CATEGORIA 3: STACK (2 perguntas)
|
|
1074
|
+
|
|
1075
|
+
[LACUNA: STACK - MÉDIO IMPACTO]
|
|
1076
|
+
[... mesma estrutura ...]
|
|
1077
|
+
|
|
1078
|
+
-----------------------------------------------------------
|
|
1079
|
+
|
|
1080
|
+
INSTRUÇÕES:
|
|
1081
|
+
- Responda cada pergunta com A, B, C ou D
|
|
1082
|
+
- Para D (Outro), forneça detalhes
|
|
1083
|
+
- Após responder todas, vou regerar architecture.md
|
|
1084
|
+
```
|
|
1085
|
+
|
|
1086
|
+
**Aguardar respostas do usuário.**
|
|
1087
|
+
|
|
1088
|
+
#### 6.4. Processar Respostas e Regenerar
|
|
1089
|
+
|
|
1090
|
+
**Para cada resposta recebida:**
|
|
1091
|
+
|
|
1092
|
+
1. **SE resposta for A, B ou C:**
|
|
1093
|
+
- Atualizar inferência com base na opção escolhida
|
|
1094
|
+
- Aumentar confiança para 90-100% (usuário confirmou)
|
|
1095
|
+
- Remover tag [REVISAR]
|
|
1096
|
+
|
|
1097
|
+
2. **SE resposta for D (Outro):**
|
|
1098
|
+
- Solicitar detalhes adicionais se necessário
|
|
1099
|
+
- Re-analisar código com nova informação
|
|
1100
|
+
- Atualizar inferência e aumentar confiança
|
|
1101
|
+
|
|
1102
|
+
3. **Após todas as respostas:**
|
|
1103
|
+
- Regerar arquivo `./specs/core/architecture.md` com correções
|
|
1104
|
+
- Atualizar status para `APPROVED`
|
|
1105
|
+
- Prosseguir para Passo 7
|
|
1106
|
+
|
|
1107
|
+
**Checkpoint de Validação:**
|
|
1108
|
+
- [ ] Apenas itens baixa confiança foram questionados
|
|
1109
|
+
- [ ] Máximo 2 perguntas por categoria
|
|
1110
|
+
- [ ] Máximo total de 6 perguntas
|
|
1111
|
+
- [ ] Perguntas priorizadas por impacto (Alto > Médio > Baixo)
|
|
1112
|
+
- [ ] Respostas obtidas antes de prosseguir
|
|
1113
|
+
- [ ] architecture.md regenerado com correções
|
|
1114
|
+
|
|
1115
|
+
**Output Esperado:**
|
|
1116
|
+
- architecture.md atualizado (sem tags [REVISAR])
|
|
1117
|
+
- Todas as inferências com confiança >= 90%
|
|
1118
|
+
- Arquivo pronto para usar como base para product_vision.md
|
|
1119
|
+
|
|
1120
|
+
---
|
|
1121
|
+
|
|
1122
|
+
### PASSO 7: Geração Final - product_vision.md
|
|
1123
|
+
|
|
1124
|
+
**Objetivo:** Inferir visão de negócio a partir de padrões técnicos validados no architecture.md
|
|
1125
|
+
|
|
1126
|
+
**Ações Concretas:**
|
|
1127
|
+
|
|
1128
|
+
#### 7.1. Mapeamento Técnico -> Negócio
|
|
1129
|
+
|
|
1130
|
+
Usar `architecture.md` aprovado como fonte de verdade para inferir negócio:
|
|
1131
|
+
|
|
1132
|
+
**TABELA DE MAPEAMENTO:**
|
|
1133
|
+
|
|
1134
|
+
| DETECAO TECNICA | INFERENCIA DE NEGOCIO |
|
|
1135
|
+
|:---|:---|
|
|
1136
|
+
| **Bounded Contexts** | Subdominios de negocio |
|
|
1137
|
+
| /Users, /Orders, /Payments | "Gestao de Usuarios", "Pedidos", "Pagamentos" |
|
|
1138
|
+
| **Aggregates** | Entidades principais |
|
|
1139
|
+
| User, Order, Payment | "Usuario", "Pedido", "Pagamento" |
|
|
1140
|
+
| **Webhooks (Stripe)** | Eventos de negocio criticos |
|
|
1141
|
+
| | "Pagamentos assincronos" |
|
|
1142
|
+
| **Integration Tests** | Fluxos complexos |
|
|
1143
|
+
| (Order flow) | "Ciclo de vida do pedido" |
|
|
1144
|
+
| **Rate Limiting** | Alto volume/requisicoes |
|
|
1145
|
+
| (Redis, 100/15min) | "Sistema em escala" |
|
|
1146
|
+
| **JWT + OAuth** | Multi-tenant/SSO |
|
|
1147
|
+
| | "Autenticacao corporativa" |
|
|
1148
|
+
| **SendGrid Templates** | Comunicacao transacional |
|
|
1149
|
+
| | "Notificacoes ao usuario" |
|
|
1150
|
+
| **Controllers/Actions** | Casos de uso |
|
|
1151
|
+
| CreateOrder, ProcessPayment | "Criar pedido", "Processar pagamento" |
|
|
1152
|
+
| -CreateOrder | "Criar pedido" |
|
|
1153
|
+
| -ProcessPayment | "Processar pagamento" |
|
|
1154
|
+
|
|
1155
|
+
#### 7.2. Inferir Elementos de Negócio
|
|
1156
|
+
|
|
1157
|
+
**1. PERSONAS (baseado em aggregates e controllers):**
|
|
1158
|
+
```
|
|
1159
|
+
DE: User aggregate, UsersController, AdminController
|
|
1160
|
+
PARA:
|
|
1161
|
+
- Persona 1: "Cliente Final" (usuário do sistema)
|
|
1162
|
+
- Cria pedidos, faz pagamentos, gerencia perfil
|
|
1163
|
+
- Persona 2: "Administrador" (gestor do sistema)
|
|
1164
|
+
- Gerencia usuários, visualiza relatórios, configura sistema
|
|
1165
|
+
```
|
|
1166
|
+
|
|
1167
|
+
**2. PROBLEMA CENTRAL (baseado em webhooks, events, integrations):**
|
|
1168
|
+
```
|
|
1169
|
+
DE: Stripe webhooks, PaymentFailed events, Retry logic
|
|
1170
|
+
PARA:
|
|
1171
|
+
"Gerenciar ciclo de vida de pedidos com pagamentos assíncronos,
|
|
1172
|
+
garantindo consistência mesmo quando pagamentos falham ou são
|
|
1173
|
+
processados em background."
|
|
1174
|
+
```
|
|
1175
|
+
|
|
1176
|
+
**3. CASOS DE USO PRINCIPAIS (baseado em controllers/endpoints):**
|
|
1177
|
+
```
|
|
1178
|
+
DE: UsersController.Create, OrdersController.PlaceOrder
|
|
1179
|
+
PARA:
|
|
1180
|
+
- UC1: "Cadastrar novo usuário no sistema"
|
|
1181
|
+
- UC2: "Criar pedido com múltiplos itens"
|
|
1182
|
+
- UC3: "Processar pagamento de forma assíncrona"
|
|
1183
|
+
- UC4: "Notificar usuário sobre status do pedido"
|
|
1184
|
+
```
|
|
1185
|
+
|
|
1186
|
+
**4. MÉTRICAS DE SUCESSO (baseado em monitoring/logging):**
|
|
1187
|
+
```
|
|
1188
|
+
DE: Prometheus metrics, error tracking, coverage reports
|
|
1189
|
+
PARA:
|
|
1190
|
+
- "Taxa de sucesso de pagamentos" (monitorado via PaymentFailed events)
|
|
1191
|
+
- "Tempo de processamento de pedidos" (trackeado em logs)
|
|
1192
|
+
- "Disponibilidade do sistema" (uptime monitoring)
|
|
1193
|
+
```
|
|
1194
|
+
|
|
1195
|
+
**5. ESCOPO (IN/OUT) (baseado em bounded contexts):**
|
|
1196
|
+
```
|
|
1197
|
+
DE: Bounded Contexts: Users, Orders, Payments
|
|
1198
|
+
PARA:
|
|
1199
|
+
IN-SCOPE:
|
|
1200
|
+
- Gestão de usuários e autenticação
|
|
1201
|
+
- Ciclo completo de pedidos
|
|
1202
|
+
- Processamento de pagamentos
|
|
1203
|
+
|
|
1204
|
+
OUT-OF-SCOPE:
|
|
1205
|
+
- Gestão de estoque (não detectado como bounded context)
|
|
1206
|
+
- Sistema de notificações push (apenas email via SendGrid)
|
|
1207
|
+
- Analytics e dashboards (não detectado)
|
|
1208
|
+
```
|
|
1209
|
+
|
|
1210
|
+
**6. PROPOSTA DE VALOR (baseado em integrações):**
|
|
1211
|
+
```
|
|
1212
|
+
DE: Stripe (pagamentos), AWS S3 (storage), SendGrid (email),
|
|
1213
|
+
Rate limiting (escala), Webhooks (assíncrono)
|
|
1214
|
+
PARA:
|
|
1215
|
+
"Plataforma de e-commerce em escala com processamento
|
|
1216
|
+
assíncrono de pagamentos, notificações transacionais e
|
|
1217
|
+
infraestrutura elástica para alto volume."
|
|
1218
|
+
```
|
|
1219
|
+
|
|
1220
|
+
#### 7.3. Preencher product_vision-template.md
|
|
1221
|
+
|
|
1222
|
+
**Ações:**
|
|
1223
|
+
|
|
1224
|
+
1. **Ler architecture.md aprovado** como referência
|
|
1225
|
+
2. **Para cada seção do template**, fazer inferências:
|
|
1226
|
+
- **Declaração do Problema:** Baseada em webhooks/events/errors
|
|
1227
|
+
- **Personas:** Baseadas em aggregates/controllers
|
|
1228
|
+
- **Proposta de Valor:** Baseada em integrações/infra
|
|
1229
|
+
- **Métricas:** Baseadas em monitoring/logging
|
|
1230
|
+
- **Escopo:** Baseada em bounded contexts
|
|
1231
|
+
- **Jornada do Usuário:** Baseada em integration tests
|
|
1232
|
+
- **Riscos:** Baseada em baixa cobertura, debt técnico
|
|
1233
|
+
|
|
1234
|
+
3. **Adicionar seção especial** "Inferências do Código Legado":
|
|
1235
|
+
```markdown
|
|
1236
|
+
## 10. Inferências do Código Legado
|
|
1237
|
+
|
|
1238
|
+
<!-- Esta seção documenta como a visão de negócio foi inferida -->
|
|
1239
|
+
|
|
1240
|
+
| Inferência de Negócio | Fonte Técnica | Confiança |
|
|
1241
|
+
|:---|:---|:---:|
|
|
1242
|
+
| **Multi-tenant SaaS** | JWT com tenant_id em todos os tokens | 85% |
|
|
1243
|
+
| **Pagamentos assíncronos** | Stripe webhooks, background jobs | 95% |
|
|
1244
|
+
| **Sistema em escala** | Rate limiting (Redis), load balancer | 78% |
|
|
1245
|
+
| **E-commerce B2C** | Catalog de produtos, checkout flow | 90% |
|
|
1246
|
+
```
|
|
1247
|
+
|
|
1248
|
+
4. **Status:** DRAFT (ou IN_PROGRESS se houver ajustes)
|
|
1249
|
+
|
|
1250
|
+
5. **Salvar em:**
|
|
1251
|
+
```
|
|
1252
|
+
./specs/core/product_vision.md
|
|
1253
|
+
```
|
|
1254
|
+
|
|
1255
|
+
#### 7.4. Apresentar Resumo Final
|
|
1256
|
+
|
|
1257
|
+
```
|
|
1258
|
+
- [OK] ARTEFATOS FUNDACIONAIS CRIADOS
|
|
1259
|
+
|
|
1260
|
+
Arquivos gerados:
|
|
1261
|
+
- [ARQUITETURA] ./specs/core/architecture.md (APPROVED)
|
|
1262
|
+
- Stack: .NET 8 + Vue.js 3 + PostgreSQL 15
|
|
1263
|
+
- Paradigma: Clean Architecture
|
|
1264
|
+
- Integrações: Stripe, AWS S3, SendGrid
|
|
1265
|
+
|
|
1266
|
+
- [DOCUMENTO] ./specs/core/product_vision.md (DRAFT)
|
|
1267
|
+
- Problema: Gestão de pedidos com pagamentos assincronos
|
|
1268
|
+
- Personas: Cliente Final, Administrador
|
|
1269
|
+
- Proposta: Plataforma e-commerce em escala
|
|
1270
|
+
- Escopo: Usuarios, Pedidos, Pagamentos
|
|
1271
|
+
|
|
1272
|
+
-----------------------------------------------------------
|
|
1273
|
+
|
|
1274
|
+
INFERÊNCIAS REALIZADAS:
|
|
1275
|
+
|
|
1276
|
+
Domínio de Negócio:
|
|
1277
|
+
- Detectados: 3 bounded contexts (Users, Orders, Payments)
|
|
1278
|
+
- Entidades: 5 aggregates principais
|
|
1279
|
+
- Casos de uso: 8 inferidos de controllers/endpoints
|
|
1280
|
+
- Confiança média: 82%
|
|
1281
|
+
|
|
1282
|
+
Arquitetura Técnica:
|
|
1283
|
+
- Stack completa: Backend, Frontend, Database, Infra
|
|
1284
|
+
- Paradigma: Clean Architecture (com violações documentadas)
|
|
1285
|
+
- Integrações: 4 serviços externos mapeados
|
|
1286
|
+
- Confiança média: 88%
|
|
1287
|
+
|
|
1288
|
+
Próximos Passos:
|
|
1289
|
+
1. Revise product_vision.md para validar inferências de negócio
|
|
1290
|
+
2. Use /gerar-prd para criar requisitos de novas features
|
|
1291
|
+
(lerá product_vision.md para contexto de negócio)
|
|
1292
|
+
3. Use /gerar-techspec para especificações técnicas
|
|
1293
|
+
(lerá architecture.md para validar decisões técnicas)
|
|
1294
|
+
|
|
1295
|
+
-----------------------------------------------------------
|
|
1296
|
+
|
|
1297
|
+
Status: Fundação do projeto estabelecida [OK]
|
|
1298
|
+
|
|
1299
|
+
Para revisar os arquivos:
|
|
1300
|
+
- architecture.md: vim ./specs/core/architecture.md
|
|
1301
|
+
- product_vision.md: vim ./specs/core/product_vision.md
|
|
1302
|
+
```
|
|
1303
|
+
|
|
1304
|
+
**Checkpoint de Validação:**
|
|
1305
|
+
- [ ] architecture.md lido como base para inferências
|
|
1306
|
+
- [ ] Mapeamento técnico -> negócio realizado
|
|
1307
|
+
- [ ] Personas inferidas de aggregates/controllers
|
|
1308
|
+
- [ ] Problema inferido de events/webhooks
|
|
1309
|
+
- [ ] Casos de uso inferidos de endpoints
|
|
1310
|
+
- [ ] Métricas inferidas de monitoring
|
|
1311
|
+
- [ ] Escopo delimitado por bounded contexts
|
|
1312
|
+
- [ ] Seção "Inferências do Código Legado" adicionada
|
|
1313
|
+
- [ ] Arquivo `product_vision.md` gerado
|
|
1314
|
+
- [ ] Resumo final apresentado ao usuário
|
|
1315
|
+
|
|
1316
|
+
**Output Esperado:**
|
|
1317
|
+
- Arquivo `./specs/core/product_vision.md` (DRAFT)
|
|
1318
|
+
- Resumo executivo das inferências
|
|
1319
|
+
- Orientações sobre próximos passos
|
|
1320
|
+
|
|
1321
|
+
---
|
|
1322
|
+
|
|
1323
|
+
## 4. CHECKLIST DE QUALIDADE FINAL
|
|
1324
|
+
|
|
1325
|
+
Antes de finalizar o comando, confirme:
|
|
1326
|
+
|
|
1327
|
+
### Artefatos Gerados
|
|
1328
|
+
- [ ] `./specs/core/architecture.md` existe e está APPROVED
|
|
1329
|
+
- [ ] `./specs/core/product_vision.md` existe e está DRAFT
|
|
1330
|
+
- [ ] Diretório `specs/core/` criado (se não existia)
|
|
1331
|
+
|
|
1332
|
+
### Qualidade das Inferências
|
|
1333
|
+
- [ ] Todas as tecnologias detectadas têm nível de confiança
|
|
1334
|
+
- [ ] Itens com confiança < 70% foram marcados [REVISAR]
|
|
1335
|
+
- [ ] Itens [REVISAR] foram questionados no Passo 6 (se existirem)
|
|
1336
|
+
- [ ] Paradigma arquitetural identificado com justificativa
|
|
1337
|
+
- [ ] Bounded contexts mapeados (se aplicável)
|
|
1338
|
+
- [ ] Integrações externas catalogadas
|
|
1339
|
+
- [ ] Maturidade de testes avaliada
|
|
1340
|
+
|
|
1341
|
+
### Mapeamento Técnico -> Negócio
|
|
1342
|
+
- [ ] Personas inferidas de aggregates/controllers
|
|
1343
|
+
- [ ] Problema inferido de events/webhooks/errors
|
|
1344
|
+
- [ ] Casos de uso inferidos de endpoints
|
|
1345
|
+
- [ ] Métricas inferidas de monitoring/logging
|
|
1346
|
+
- [ ] Escopo delimitado por bounded contexts
|
|
1347
|
+
- [ ] Seção "Inferências do Código Legado" preenchida
|
|
1348
|
+
|
|
1349
|
+
### Validação de Usuário
|
|
1350
|
+
- [ ] architecture.md apresentado para aprovação rápida (2 min)
|
|
1351
|
+
- [ ] Perguntas limitadas a itens baixa confiança (máx 6)
|
|
1352
|
+
- [ ] Respostas incorporadas nas inferências finais
|
|
1353
|
+
- [ ] Usuário informado sobre próximos passos
|
|
1354
|
+
|
|
1355
|
+
---
|
|
1356
|
+
|
|
1357
|
+
## 5. EXEMPLOS DE BOAS E MÁS INFERÊNCIAS
|
|
1358
|
+
|
|
1359
|
+
### Exemplo 1: Inferência de Paradigma Arquitetural
|
|
1360
|
+
|
|
1361
|
+
**Detectado no código:**
|
|
1362
|
+
```
|
|
1363
|
+
/src
|
|
1364
|
+
/Domain
|
|
1365
|
+
/Entities
|
|
1366
|
+
User.cs
|
|
1367
|
+
Order.cs
|
|
1368
|
+
/Application
|
|
1369
|
+
/Commands
|
|
1370
|
+
CreateOrderCommand.cs
|
|
1371
|
+
/Infrastructure
|
|
1372
|
+
/Persistence
|
|
1373
|
+
SqlUserRepository.cs
|
|
1374
|
+
/API
|
|
1375
|
+
/Controllers
|
|
1376
|
+
UsersController.cs (com método CalculateDiscount())
|
|
1377
|
+
```
|
|
1378
|
+
|
|
1379
|
+
**[X] MÁ INFERÊNCIA:**
|
|
1380
|
+
"Paradigma: Clean Architecture perfeitamente implementado."
|
|
1381
|
+
|
|
1382
|
+
**[OK] BOA INFERÊNCIA:**
|
|
1383
|
+
"Paradigma: Clean Architecture (Confiança: 65%)
|
|
1384
|
+
- Indicadores favoráveis: Domain/Application/Infrastructure separados
|
|
1385
|
+
- Violações detectadas: UsersController.CalculateDiscount() (lógica em UI)
|
|
1386
|
+
- Conclusão: Estrutura segue Clean Arch mas há violações locais (debt técnico)"
|
|
1387
|
+
|
|
1388
|
+
---
|
|
1389
|
+
|
|
1390
|
+
### Exemplo 2: Inferência de Domínio de Negócio
|
|
1391
|
+
|
|
1392
|
+
**Detectado no código:**
|
|
1393
|
+
```
|
|
1394
|
+
Stripe webhook em /api/webhooks/stripe
|
|
1395
|
+
PaymentFailed event em background jobs
|
|
1396
|
+
Retry logic em PaymentService
|
|
1397
|
+
```
|
|
1398
|
+
|
|
1399
|
+
**[X] MÁ INFERÊNCIA:**
|
|
1400
|
+
"O sistema processa pagamentos."
|
|
1401
|
+
|
|
1402
|
+
**[OK] BOA INFERÊNCIA:**
|
|
1403
|
+
"Problema Central: Gestão de pedidos com pagamentos assíncronos
|
|
1404
|
+
- Confiança: 88%
|
|
1405
|
+
- Fontes: Stripe webhooks, PaymentFailed events, Retry logic
|
|
1406
|
+
- Inferência: Sistema lida com processamento assíncrono, falhas de
|
|
1407
|
+
pagamento e reprocessamento, o que indica complexidade de
|
|
1408
|
+
consistência distribuída."
|
|
1409
|
+
|
|
1410
|
+
---
|
|
1411
|
+
|
|
1412
|
+
### Exemplo 3: Inferência de Persona
|
|
1413
|
+
|
|
1414
|
+
**Detectado no código:**
|
|
1415
|
+
```
|
|
1416
|
+
UsersController (create, update, delete)
|
|
1417
|
+
AdminsController (banUser, viewReports)
|
|
1418
|
+
```
|
|
1419
|
+
|
|
1420
|
+
**[X] MÁ INFERÊNCIA:**
|
|
1421
|
+
"Usuários do sistema."
|
|
1422
|
+
|
|
1423
|
+
**[OK] BOA INFERÊNCIA:**
|
|
1424
|
+
"Personas:
|
|
1425
|
+
1. Cliente Final (Confiança: 95%)
|
|
1426
|
+
- Fonte: UsersController com CRUD completo
|
|
1427
|
+
- Ações: Cria conta, gerencia perfil, faz pedidos
|
|
1428
|
+
|
|
1429
|
+
2. Administrador (Confiança: 90%)
|
|
1430
|
+
- Fonte: AdminsController com métodos de ban/report
|
|
1431
|
+
- Ações: Gerencia usuários, visualiza relatórios, configura sistema"
|
|
1432
|
+
|
|
1433
|
+
---
|
|
1434
|
+
|
|
1435
|
+
## 6. NOTAS DE IMPLEMENTAÇÃO
|
|
1436
|
+
|
|
1437
|
+
### Sistema de Confiança
|
|
1438
|
+
- Sempre atribuir % de confiança baseado em evidências concretas
|
|
1439
|
+
- 90-100%: Evidência explícita (imports, configs, migrations)
|
|
1440
|
+
- 60-89%: Evidência indireta (estrutura, padrões)
|
|
1441
|
+
- < 60%: Inferência fraca (convenções, ausência de contradições)
|
|
1442
|
+
|
|
1443
|
+
### Abordagem Iterativa
|
|
1444
|
+
- **CRÍTICO:** Gerar architecture.md PRIMEIRO, validar, depois product_vision.md
|
|
1445
|
+
- Não pular validação rápida (2 min)
|
|
1446
|
+
- Usuário pode interromper a qualquer momento
|
|
1447
|
+
|
|
1448
|
+
### Máximo de Perguntas
|
|
1449
|
+
- **MÁXIMO 2 perguntas por categoria** (Domínio, Arquitetura, Stack)
|
|
1450
|
+
- Total máximo: 6 perguntas
|
|
1451
|
+
- Apenas itens com confiança < 70%
|
|
1452
|
+
- Apenas itens com ALTO ou MÉDIO impacto
|
|
1453
|
+
|
|
1454
|
+
### Separação de Artefatos
|
|
1455
|
+
- architecture.md: ZERO menções a funcionalidades de negócio
|
|
1456
|
+
- product_vision.md: ZERO menções a frameworks/bancos
|
|
1457
|
+
- Crossing: "Inferências do Código Legado" (seção em product_vision.md)
|
|
1458
|
+
|
|
1459
|
+
---
|
|
1460
|
+
|
|
1461
|
+
**Command Version:** 0.1.0
|
|
1462
|
+
</system_instructions>
|