@polymorphism-tech/morph-spec 4.8.14 → 4.8.15
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 +2 -2
- package/bin/morph-spec.js +23 -2
- package/bin/task-manager.js +202 -14
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +1 -1
- package/docs/QUICKSTART.md +1 -1
- package/framework/agents.json +113 -116
- package/framework/hooks/claude-code/post-tool-use/dispatch.js +48 -2
- package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +151 -0
- package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +6 -0
- package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +6 -0
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +27 -0
- package/framework/hooks/claude-code/stop/validate-completion.js +17 -2
- package/framework/hooks/claude-code/teammate-idle/teammate-idle.js +87 -0
- package/framework/hooks/claude-code/user-prompt/set-terminal-title.js +58 -0
- package/framework/hooks/shared/phase-utils.js +1 -1
- package/framework/hooks/shared/state-reader.js +1 -0
- package/framework/skills/README.md +1 -0
- package/framework/skills/level-0-meta/brainstorming/SKILL.md +2 -0
- package/framework/skills/level-0-meta/code-review/SKILL.md +16 -0
- package/framework/skills/level-0-meta/code-review/references/review-guidelines.md +100 -0
- package/framework/skills/level-0-meta/code-review/scripts/scan-csharp.mjs +36 -6
- package/framework/skills/level-0-meta/code-review-nextjs/SKILL.md +16 -0
- package/framework/skills/level-0-meta/code-review-nextjs/scripts/scan-nextjs.mjs +189 -0
- package/framework/skills/level-0-meta/frontend-review/SKILL.md +359 -0
- package/framework/skills/level-0-meta/frontend-review/scripts/scan-accessibility.mjs +376 -0
- package/framework/skills/level-0-meta/morph-checklist/SKILL.md +1 -1
- package/framework/skills/level-0-meta/morph-replicate/SKILL.md +10 -8
- package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +70 -0
- package/framework/skills/level-0-meta/post-implementation/SKILL.md +315 -0
- package/framework/skills/level-0-meta/post-implementation/scripts/detect-dev-server.mjs +153 -0
- package/framework/skills/level-0-meta/post-implementation/scripts/detect-stack.mjs +234 -0
- package/framework/skills/level-0-meta/terminal-title/SKILL.md +61 -0
- package/framework/skills/level-0-meta/terminal-title/scripts/set_title.sh +65 -0
- package/framework/skills/level-0-meta/tool-usage-guide/SKILL.md +13 -206
- package/framework/skills/level-0-meta/tool-usage-guide/references/tools-per-phase.md +213 -0
- package/framework/skills/level-0-meta/verification-before-completion/SKILL.md +2 -0
- package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +4 -7
- package/framework/skills/level-1-workflows/phase-codebase-analysis/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/phase-design/SKILL.md +16 -110
- package/framework/skills/level-1-workflows/phase-design/references/architecture-analysis-guide.md +89 -0
- package/framework/skills/level-1-workflows/phase-design/references/spec-authoring-guide.md +55 -0
- package/framework/skills/level-1-workflows/phase-implement/SKILL.md +153 -118
- package/framework/skills/level-1-workflows/phase-implement/references/vsa-implementation-guide.md +92 -0
- package/framework/skills/level-1-workflows/phase-setup/SKILL.md +1 -2
- package/framework/skills/level-1-workflows/phase-tasks/SKILL.md +11 -158
- package/framework/skills/level-1-workflows/phase-tasks/references/task-planning-patterns.md +172 -0
- package/framework/skills/level-1-workflows/phase-uiux/SKILL.md +42 -3
- package/framework/squad-templates/backend-only.json +14 -1
- package/framework/squad-templates/frontend-only.json +14 -1
- package/framework/squad-templates/full-stack.json +25 -8
- package/framework/standards/STANDARDS.json +631 -86
- package/framework/standards/frontend/design-system/aesthetic-direction.md +213 -0
- package/framework/templates/project/validate.js +122 -0
- package/framework/workflows/configs/zero-touch.json +7 -0
- package/package.json +1 -1
- package/src/commands/agents/dispatch-agents.js +53 -10
- package/src/commands/state/advance-phase.js +56 -0
- package/src/commands/state/index.js +2 -1
- package/src/commands/state/phase-runner.js +215 -0
- package/src/commands/tasks/task.js +23 -2
- package/src/core/paths/output-schema.js +1 -1
- package/src/lib/generators/recap-generator.js +16 -0
- package/src/lib/orchestration/team-orchestrator.js +171 -89
- package/src/lib/phase-chain/eligibility-checker.js +243 -0
- package/src/lib/standards/digest-builder.js +231 -0
- package/src/lib/validators/blazor/blazor-concurrency-analyzer.js +39 -0
- package/src/lib/validators/nextjs/next-component-validator.js +2 -0
- package/src/lib/validators/validation-runner.js +2 -2
- package/src/utils/file-copier.js +1 -0
- package/src/utils/hooks-installer.js +31 -7
|
@@ -4,7 +4,7 @@ description: MORPH-SPEC Phase 2 (Design). Analyzes codebase/schema, then produce
|
|
|
4
4
|
argument-hint: "[feature-name]"
|
|
5
5
|
user-invocable: false
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
7
|
-
cliVersion: "4.8.
|
|
7
|
+
cliVersion: "4.8.15"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MORPH Design - FASE 2
|
|
@@ -91,7 +91,7 @@ Se QUALQUER uma das condições abaixo for verdadeira:
|
|
|
91
91
|
Os 4 artefatos de design são **independentes entre si**. Dispatch em paralelo:
|
|
92
92
|
|
|
93
93
|
```
|
|
94
|
-
# Executar
|
|
94
|
+
# Executar todos ao mesmo tempo (uma mensagem, múltiplos Task tool calls):
|
|
95
95
|
Task(subagent=general): gerar spec.md (endpoints, regras de negócio)
|
|
96
96
|
Task(subagent=general): gerar contracts-vsa.cs ou contracts-levelN.cs
|
|
97
97
|
Task(subagent=general): gerar decisions.md (ADRs)
|
|
@@ -141,77 +141,24 @@ O primeiro comando retorna `activeAgents`. O segundo retorna os agentes a dispar
|
|
|
141
141
|
|
|
142
142
|
**⚠️ OBRIGATÓRIO:** Execute antes de gerar qualquer contrato. Use **Task tool** para isolar esta análise do contexto principal.
|
|
143
143
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
> **Paralelização:** Este Task dispatch pode iniciar SIMULTANEAMENTE com o Passo 2 (schema analysis), pois ambos são independentes. Use dois Task calls em paralelo quando o schema analysis também for necessário.
|
|
147
|
-
|
|
148
|
-
#### Caminho A: `domain-architect` ativo (config sem `architecture.style: "vertical-slice"`)
|
|
149
|
-
|
|
150
|
-
**Ref:** `framework/standards/architecture/ddd/complexity-levels.md`
|
|
151
|
-
|
|
152
|
-
**Obtenha o taskPrompt do dispatch config** e use o Task tool:
|
|
153
|
-
|
|
154
|
-
```
|
|
155
|
-
[Task tool — domain-architect]
|
|
156
|
-
Prompt (do dispatch config, enriquecido com conteúdo da proposta):
|
|
144
|
+
> Para os prompts completos de análise de arquitetura, veja `references/architecture-analysis-guide.md`
|
|
157
145
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
Proposta da feature:
|
|
161
|
-
[conteúdo de .morph/features/$ARGUMENTS/0-proposal/proposal.md]
|
|
162
|
-
|
|
163
|
-
Standards de referência:
|
|
164
|
-
[.morph/framework/standards/architecture/ddd/complexity-levels.md]
|
|
165
|
-
|
|
166
|
-
Sua tarefa — responda cada ponto com "SIM" ou "NÃO" e cite trecho da proposta:
|
|
167
|
-
1. A entidade principal tem estados com transições? (ex: Draft → Confirmed → Shipped)
|
|
168
|
-
2. Existem invariants de negócio que impedem operações? (ex: "só cancela se Ativo")
|
|
169
|
-
3. Há cálculos derivados sobre a entidade? (ex: Total, Saldo, Desconto)
|
|
170
|
-
4. Outros módulos precisam reagir a mudanças? (Domain Events com consumidores reais)
|
|
171
|
-
5. A proposta declara explicitamente Bounded Context ou múltiplos domínios conflitantes?
|
|
172
|
-
|
|
173
|
-
Regra de decisão:
|
|
174
|
-
→ Todas "NÃO": Nível 1 (CRUD simples)
|
|
175
|
-
→ Alguma de 1-4 "SIM": Nível 2 (Business Logic com AggregateRoot)
|
|
176
|
-
→ 5 "SIM" OU múltiplos domínios com modelos conflitantes: Nível 3 (Bounded Context)
|
|
177
|
-
|
|
178
|
-
Retorne:
|
|
179
|
-
- Nível detectado (1, 2 ou 3)
|
|
180
|
-
- Justificativa com citações da proposta
|
|
181
|
-
- Para Nível 2+: Aggregate Blueprint inicial (entidade principal, value objects, invariants)
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
**Após receber o resultado:** Documente no spec.md (seção `## Domain Complexity`).
|
|
185
|
-
**Para Nível 2+:** Preencha o `## Aggregate Blueprint` no spec.md.
|
|
186
|
-
**Para Nível 3:** Adicione `BOUNDED_CONTEXT` como variável ao renderizar o template.
|
|
187
|
-
|
|
188
|
-
#### Caminho B: `vsa-architect` ativo (config com `architecture.style: "vertical-slice"`)
|
|
189
|
-
|
|
190
|
-
**Ref:** `framework/standards/architecture/vertical-slice/vertical-slice.md`
|
|
191
|
-
|
|
192
|
-
**Obtenha o taskPrompt do dispatch config** e use o Task tool:
|
|
146
|
+
O arquiteto ativo (lido do dispatch config no Passo 1) pode ser `domain-architect` (DDD) ou `vsa-architect` (VSA) — o prompt vem do dispatch config retornado por `dispatch-agents`.
|
|
193
147
|
|
|
194
|
-
|
|
195
|
-
[Task tool — vsa-architect]
|
|
196
|
-
Prompt (do dispatch config, enriquecido com conteúdo da proposta):
|
|
148
|
+
**Paralelização:** Este Task dispatch pode iniciar SIMULTANEAMENTE com o Passo 2 (schema analysis).
|
|
197
149
|
|
|
198
|
-
|
|
150
|
+
#### Caminho A: `domain-architect` ativo (DDD)
|
|
199
151
|
|
|
200
|
-
|
|
201
|
-
[conteúdo de .morph/features/$ARGUMENTS/0-proposal/proposal.md]
|
|
152
|
+
Use o `taskPrompt` do dispatch config (enriquecido com o conteúdo da proposta). O agente responde às 5 perguntas de complexidade DDD e retorna o nível (1, 2 ou 3) com justificativa.
|
|
202
153
|
|
|
203
|
-
|
|
204
|
-
|
|
154
|
+
**Após receber o resultado:**
|
|
155
|
+
- Documente no spec.md (seção `## Domain Complexity`)
|
|
156
|
+
- **Para Nível 2+:** Preencha o `## Aggregate Blueprint` no spec.md
|
|
157
|
+
- **Para Nível 3:** Adicione `BOUNDED_CONTEXT` como variável ao renderizar o template
|
|
205
158
|
|
|
206
|
-
|
|
207
|
-
1. ENTITY FIELDS: todos os campos com tipos C# corretos (sem AggregateRoot, sem Value Objects)
|
|
208
|
-
2. OPERATIONS: slices necessários (Create, GetAll, GetById, Update, Delete + operações customizadas)
|
|
209
|
-
3. ROUTES: HTTP method + rota por operação (ex: POST /api/products, GET /api/products/{id:guid})
|
|
210
|
-
4. ERROR TYPES: Error factory methods para {Entity}Errors
|
|
211
|
-
5. VALIDATION RULES: regras FluentValidation por campo por operação
|
|
159
|
+
#### Caminho B: `vsa-architect` ativo (VSA)
|
|
212
160
|
|
|
213
|
-
|
|
214
|
-
```
|
|
161
|
+
Use o `taskPrompt` do dispatch config (enriquecido com o conteúdo da proposta). O agente produz um VSA Blueprint com entity fields, operations, routes, error types e validation rules.
|
|
215
162
|
|
|
216
163
|
**Após receber o resultado:** Documente no spec.md (seção `## Architecture Style: Vertical Slice`).
|
|
217
164
|
|
|
@@ -238,49 +185,9 @@ Execute o workflow de `phase-codebase-analysis.md` para:
|
|
|
238
185
|
|
|
239
186
|
### Passo 3: Gerar `spec.md`
|
|
240
187
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
#### 3.1. Overview
|
|
244
|
-
- **Objetivo:** Resumo de 1-2 parágrafos
|
|
245
|
-
- **Usuários afetados:** Quem vai usar?
|
|
246
|
-
- **Problema resolvido:** Qual dor/necessidade?
|
|
247
|
-
|
|
248
|
-
#### 3.2. Functional Requirements
|
|
249
|
-
Lista detalhada de requisitos funcionais:
|
|
250
|
-
```markdown
|
|
251
|
-
### FR001: {Requisito}
|
|
252
|
-
**Description:** {O que deve fazer}
|
|
253
|
-
**Acceptance Criteria:**
|
|
254
|
-
- [ ] Critério 1
|
|
255
|
-
- [ ] Critério 2
|
|
256
|
-
**Priority:** High/Medium/Low
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
#### 3.3. Non-Functional Requirements
|
|
260
|
-
- Performance (tempos de resposta esperados)
|
|
261
|
-
- Segurança (autenticação, autorização)
|
|
262
|
-
- Escalabilidade (volume de dados/usuários)
|
|
263
|
-
- Disponibilidade (uptime esperado)
|
|
264
|
-
|
|
265
|
-
#### 3.4. Technical Architecture
|
|
266
|
-
- **Camadas:** (Presentation, Application, Domain, Infrastructure)
|
|
267
|
-
- **Patterns:** (Repository, CQRS, DI, etc.)
|
|
268
|
-
- **Dependências:** Bibliotecas/serviços externos necessários
|
|
269
|
-
|
|
270
|
-
#### 3.5. Data Model
|
|
271
|
-
- Entities principais
|
|
272
|
-
- Relacionamentos (1:1, 1:N, N:N)
|
|
273
|
-
- Campos obrigatórios vs opcionais
|
|
274
|
-
- Validações de negócio
|
|
275
|
-
|
|
276
|
-
#### 3.6. Infrastructure Requirements
|
|
277
|
-
Se houver recursos Azure:
|
|
278
|
-
- Banco de dados (Azure SQL, Cosmos DB)
|
|
279
|
-
- Storage (Blob Storage)
|
|
280
|
-
- Compute (Container Apps, App Service)
|
|
281
|
-
- Monitoring (App Insights)
|
|
188
|
+
> Para estrutura detalhada de cada seção, veja `references/spec-authoring-guide.md`
|
|
282
189
|
|
|
283
|
-
|
|
190
|
+
Crie `.morph/features/$ARGUMENTS/1-design/spec.md` com as seções: Overview, Functional Requirements (FR001...), Non-Functional Requirements, Technical Architecture, Data Model, e Infrastructure Requirements (se aplicável).
|
|
284
191
|
|
|
285
192
|
### Passo 4: Gerar `contracts.cs` (BASEADO NO SCHEMA REAL!)
|
|
286
193
|
|
|
@@ -323,7 +230,7 @@ npx morph-spec template render \
|
|
|
323
230
|
}'
|
|
324
231
|
```
|
|
325
232
|
|
|
326
|
-
**Após renderizar (VSA):** Preencha os campos
|
|
233
|
+
**Após renderizar (VSA):** Preencha os campos marcados com `// placeholder:` no template gerado com os campos reais da entidade, validators e mapeamentos do VSA Blueprint (Passo 1.5 Caminho B).
|
|
327
234
|
|
|
328
235
|
**Padrões obrigatórios (DDD — já incluídos no template):**
|
|
329
236
|
- Records para DTOs (immutable)
|
|
@@ -399,7 +306,6 @@ npx morph-spec state set $ARGUMENTS costs.approved {true/false}
|
|
|
399
306
|
### Passo 7: Atualizar State
|
|
400
307
|
|
|
401
308
|
```bash
|
|
402
|
-
npx morph-spec state set $ARGUMENTS phase design
|
|
403
309
|
npx morph-spec state mark-output $ARGUMENTS schema-analysis
|
|
404
310
|
npx morph-spec state mark-output $ARGUMENTS spec
|
|
405
311
|
npx morph-spec state mark-output $ARGUMENTS contracts
|
package/framework/skills/level-1-workflows/phase-design/references/architecture-analysis-guide.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Architecture Analysis Guide — Prompts de Dispatch
|
|
2
|
+
|
|
3
|
+
> Prompts completos para os agentes de análise de arquitetura dispatch via Task tool.
|
|
4
|
+
> Referenciado pelo Passo 1.5 de `phase-design/SKILL.md`.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Caminho A: `domain-architect` (DDD)
|
|
9
|
+
|
|
10
|
+
**Quando usar:** Config **sem** `architecture.style: "vertical-slice"`.
|
|
11
|
+
|
|
12
|
+
**Ref:** `framework/standards/architecture/ddd/complexity-levels.md`
|
|
13
|
+
|
|
14
|
+
**Obtenha o taskPrompt do dispatch config** (`npx morph-spec dispatch-agents $ARGUMENTS design`) e use o Task tool:
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
[Task tool — domain-architect]
|
|
18
|
+
Prompt (do dispatch config, enriquecido com conteúdo da proposta):
|
|
19
|
+
|
|
20
|
+
Você é o Domain Architect da feature '$ARGUMENTS'.
|
|
21
|
+
|
|
22
|
+
Proposta da feature:
|
|
23
|
+
[conteúdo de .morph/features/$ARGUMENTS/0-proposal/proposal.md]
|
|
24
|
+
|
|
25
|
+
Standards de referência:
|
|
26
|
+
[.morph/framework/standards/architecture/ddd/complexity-levels.md]
|
|
27
|
+
|
|
28
|
+
Sua tarefa — responda cada ponto com "SIM" ou "NÃO" e cite trecho da proposta:
|
|
29
|
+
1. A entidade principal tem estados com transições? (ex: Draft → Confirmed → Shipped)
|
|
30
|
+
2. Existem invariants de negócio que impedem operações? (ex: "só cancela se Ativo")
|
|
31
|
+
3. Há cálculos derivados sobre a entidade? (ex: Total, Saldo, Desconto)
|
|
32
|
+
4. Outros módulos precisam reagir a mudanças? (Domain Events com consumidores reais)
|
|
33
|
+
5. A proposta declara explicitamente Bounded Context ou múltiplos domínios conflitantes?
|
|
34
|
+
|
|
35
|
+
Regra de decisão:
|
|
36
|
+
→ Todas "NÃO": Nível 1 (CRUD simples)
|
|
37
|
+
→ Alguma de 1-4 "SIM": Nível 2 (Business Logic com AggregateRoot)
|
|
38
|
+
→ 5 "SIM" OU múltiplos domínios com modelos conflitantes: Nível 3 (Bounded Context)
|
|
39
|
+
|
|
40
|
+
Retorne:
|
|
41
|
+
- Nível detectado (1, 2 ou 3)
|
|
42
|
+
- Justificativa com citações da proposta
|
|
43
|
+
- Para Nível 2+: Aggregate Blueprint inicial (entidade principal, value objects, invariants)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Após receber o resultado:**
|
|
47
|
+
- Documente no spec.md (seção `## Domain Complexity`)
|
|
48
|
+
- **Para Nível 2+:** Preencha o `## Aggregate Blueprint` no spec.md
|
|
49
|
+
- **Para Nível 3:** Adicione `BOUNDED_CONTEXT` como variável ao renderizar o template
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Caminho B: `vsa-architect` (VSA)
|
|
54
|
+
|
|
55
|
+
**Quando usar:** Config com `architecture.style: "vertical-slice"`.
|
|
56
|
+
|
|
57
|
+
**Ref:** `framework/standards/architecture/vertical-slice/vertical-slice.md`
|
|
58
|
+
|
|
59
|
+
**Obtenha o taskPrompt do dispatch config** e use o Task tool:
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
[Task tool — vsa-architect]
|
|
63
|
+
Prompt (do dispatch config, enriquecido com conteúdo da proposta):
|
|
64
|
+
|
|
65
|
+
Você é o VSA Specialist da feature '$ARGUMENTS'.
|
|
66
|
+
|
|
67
|
+
Proposta da feature:
|
|
68
|
+
[conteúdo de .morph/features/$ARGUMENTS/0-proposal/proposal.md]
|
|
69
|
+
|
|
70
|
+
Standards de referência:
|
|
71
|
+
[.morph/framework/standards/architecture/vertical-slice/vertical-slice.md]
|
|
72
|
+
|
|
73
|
+
Produza um VSA Blueprint:
|
|
74
|
+
1. ENTITY FIELDS: todos os campos com tipos C# corretos (sem AggregateRoot, sem Value Objects)
|
|
75
|
+
2. OPERATIONS: slices necessários (Create, GetAll, GetById, Update, Delete + operações customizadas)
|
|
76
|
+
3. ROUTES: HTTP method + rota por operação (ex: POST /api/products, GET /api/products/{id:guid})
|
|
77
|
+
4. ERROR TYPES: Error factory methods para {Entity}Errors
|
|
78
|
+
5. VALIDATION RULES: regras FluentValidation por campo por operação
|
|
79
|
+
|
|
80
|
+
Não use AggregateRoot, DomainEvent, CQRS formal, MediatR, Application Service layer.
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Após receber o resultado:** Documente no spec.md (seção `## Architecture Style: Vertical Slice`).
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Nota sobre Paralelização
|
|
88
|
+
|
|
89
|
+
Este Task dispatch pode iniciar **simultaneamente** com o Passo 2 (schema analysis), pois ambos são independentes. Use dois Task calls em paralelo quando o schema analysis também for necessário.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Spec Authoring Guide — Seções do spec.md
|
|
2
|
+
|
|
3
|
+
> Guia de referência para estrutura e conteúdo de cada seção do `spec.md`.
|
|
4
|
+
> Referenciado pelo Passo 3 de `phase-design/SKILL.md`.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 3.1. Overview
|
|
9
|
+
|
|
10
|
+
- **Objetivo:** Resumo de 1-2 parágrafos
|
|
11
|
+
- **Usuários afetados:** Quem vai usar?
|
|
12
|
+
- **Problema resolvido:** Qual dor/necessidade?
|
|
13
|
+
|
|
14
|
+
## 3.2. Functional Requirements
|
|
15
|
+
|
|
16
|
+
Lista detalhada de requisitos funcionais:
|
|
17
|
+
|
|
18
|
+
```markdown
|
|
19
|
+
### FR001: {Requisito}
|
|
20
|
+
**Description:** {O que deve fazer}
|
|
21
|
+
**Acceptance Criteria:**
|
|
22
|
+
- [ ] Critério 1
|
|
23
|
+
- [ ] Critério 2
|
|
24
|
+
**Priority:** High/Medium/Low
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 3.3. Non-Functional Requirements
|
|
28
|
+
|
|
29
|
+
- Performance (tempos de resposta esperados)
|
|
30
|
+
- Segurança (autenticação, autorização)
|
|
31
|
+
- Escalabilidade (volume de dados/usuários)
|
|
32
|
+
- Disponibilidade (uptime esperado)
|
|
33
|
+
|
|
34
|
+
## 3.4. Technical Architecture
|
|
35
|
+
|
|
36
|
+
- **Camadas:** (Presentation, Application, Domain, Infrastructure)
|
|
37
|
+
- **Patterns:** (Repository, CQRS, DI, etc.)
|
|
38
|
+
- **Dependências:** Bibliotecas/serviços externos necessários
|
|
39
|
+
|
|
40
|
+
## 3.5. Data Model
|
|
41
|
+
|
|
42
|
+
- Entities principais
|
|
43
|
+
- Relacionamentos (1:1, 1:N, N:N)
|
|
44
|
+
- Campos obrigatórios vs opcionais
|
|
45
|
+
- Validações de negócio
|
|
46
|
+
|
|
47
|
+
## 3.6. Infrastructure Requirements
|
|
48
|
+
|
|
49
|
+
Se houver recursos Azure:
|
|
50
|
+
- Banco de dados (Azure SQL, Cosmos DB)
|
|
51
|
+
- Storage (Blob Storage)
|
|
52
|
+
- Compute (Container Apps, App Service)
|
|
53
|
+
- Monitoring (App Insights)
|
|
54
|
+
|
|
55
|
+
> **SEMPRE usar Bicep para infra!**
|