@maestro-ai/mcp-server 5.6.5 → 6.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/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/content/skills/specialist-api-contract/SKILL.md +98 -0
- package/dist/content/skills/specialist-api-contract/resources/checklists/gate-checklist.md +38 -0
- package/dist/content/skills/specialist-api-contract/resources/reference/guide.md +109 -0
- package/dist/content/skills/specialist-architect/SKILL.md +111 -0
- package/dist/content/skills/specialist-architect/resources/checklists/gate-checklist.md +45 -0
- package/dist/content/skills/specialist-architect/resources/examples/example-architecture.md +345 -0
- package/dist/content/skills/specialist-architect/resources/reference/guide.md +86 -0
- package/dist/content/skills/specialist-architect/resources/templates/arquitetura.md +282 -0
- package/dist/content/skills/specialist-backend/SKILL.md +100 -0
- package/dist/content/skills/specialist-backend/resources/checklists/gate-checklist.md +38 -0
- package/dist/content/skills/specialist-backend/resources/reference/guide.md +160 -0
- package/dist/content/skills/specialist-design/SKILL.md +107 -0
- package/dist/content/skills/specialist-design/resources/checklists/gate-checklist.md +45 -0
- package/dist/content/skills/specialist-design/resources/examples/example-design.md +294 -0
- package/dist/content/skills/specialist-design/resources/reference/guide.md +67 -0
- package/dist/content/skills/specialist-design/resources/templates/design-doc.md +232 -0
- package/dist/content/skills/specialist-devops/SKILL.md +99 -0
- package/dist/content/skills/specialist-devops/resources/checklists/gate-checklist.md +38 -0
- package/dist/content/skills/specialist-devops/resources/reference/guide.md +116 -0
- package/dist/content/skills/specialist-discovery/SKILL.md +109 -0
- package/dist/content/skills/specialist-discovery/resources/checklists/gate-checklist.md +45 -0
- package/dist/content/skills/specialist-discovery/resources/examples/example-discovery.md +179 -0
- package/dist/content/skills/specialist-discovery/resources/reference/guide.md +48 -0
- package/dist/content/skills/specialist-discovery/resources/templates/discovery.md +187 -0
- package/dist/content/skills/specialist-domain/SKILL.md +105 -0
- package/dist/content/skills/specialist-domain/resources/checklists/gate-checklist.md +37 -0
- package/dist/content/skills/specialist-domain/resources/reference/guide.md +80 -0
- package/dist/content/skills/specialist-frontend/SKILL.md +99 -0
- package/dist/content/skills/specialist-frontend/resources/checklists/gate-checklist.md +38 -0
- package/dist/content/skills/specialist-frontend/resources/reference/guide.md +90 -0
- package/dist/content/skills/specialist-operations/SKILL.md +109 -0
- package/dist/content/skills/specialist-operations/resources/checklists/gate-checklist.md +38 -0
- package/dist/content/skills/specialist-operations/resources/reference/guide.md +129 -0
- package/dist/content/skills/specialist-planning/SKILL.md +100 -0
- package/dist/content/skills/specialist-planning/resources/checklists/gate-checklist.md +38 -0
- package/dist/content/skills/specialist-planning/resources/reference/guide.md +88 -0
- package/dist/content/skills/specialist-product/SKILL.md +113 -0
- package/dist/content/skills/specialist-product/resources/checklists/gate-checklist.md +40 -0
- package/dist/content/skills/specialist-product/resources/reference/guide.md +43 -0
- package/dist/content/skills/specialist-product/resources/templates/PRD.md +191 -0
- package/dist/content/skills/specialist-requirements/SKILL.md +107 -0
- package/dist/content/skills/specialist-requirements/resources/checklists/gate-checklist.md +36 -0
- package/dist/content/skills/specialist-requirements/resources/reference/guide.md +66 -0
- package/dist/content/skills/specialist-technical-design/SKILL.md +114 -0
- package/dist/content/skills/specialist-technical-design/resources/checklists/gate-checklist.md +38 -0
- package/dist/content/skills/specialist-technical-design/resources/reference/guide.md +86 -0
- package/dist/flows/types.d.ts +33 -3
- package/dist/flows/types.d.ts.map +1 -1
- package/dist/flows/types.js +288 -309
- package/dist/flows/types.js.map +1 -1
- package/dist/gates/code-validator.d.ts +47 -0
- package/dist/gates/code-validator.d.ts.map +1 -0
- package/dist/gates/code-validator.js +225 -0
- package/dist/gates/code-validator.js.map +1 -0
- package/dist/gates/readiness-gate.d.ts +48 -0
- package/dist/gates/readiness-gate.d.ts.map +1 -0
- package/dist/gates/readiness-gate.js +301 -0
- package/dist/gates/readiness-gate.js.map +1 -0
- package/dist/handlers/code-phase-handler.d.ts +1 -0
- package/dist/handlers/code-phase-handler.d.ts.map +1 -1
- package/dist/handlers/code-phase-handler.js +176 -27
- package/dist/handlers/code-phase-handler.js.map +1 -1
- package/dist/handlers/specialist-phase-handler.d.ts +11 -10
- package/dist/handlers/specialist-phase-handler.d.ts.map +1 -1
- package/dist/handlers/specialist-phase-handler.js +160 -64
- package/dist/handlers/specialist-phase-handler.js.map +1 -1
- package/dist/services/deliverable-gate.service.d.ts +40 -0
- package/dist/services/deliverable-gate.service.d.ts.map +1 -0
- package/dist/services/deliverable-gate.service.js +88 -0
- package/dist/services/deliverable-gate.service.js.map +1 -0
- package/dist/services/phase-config-loader.d.ts +28 -0
- package/dist/services/phase-config-loader.d.ts.map +1 -0
- package/dist/services/phase-config-loader.js +200 -0
- package/dist/services/phase-config-loader.js.map +1 -0
- package/dist/services/scoring-config.d.ts.map +1 -1
- package/dist/services/scoring-config.js +13 -10
- package/dist/services/scoring-config.js.map +1 -1
- package/dist/tools/consolidated/avancar.d.ts.map +1 -1
- package/dist/tools/consolidated/avancar.js +89 -8
- package/dist/tools/consolidated/avancar.js.map +1 -1
- package/dist/tools/iniciar-projeto.d.ts.map +1 -1
- package/dist/tools/iniciar-projeto.js +46 -0
- package/dist/tools/iniciar-projeto.js.map +1 -1
- package/dist/tools/proximo.d.ts +1 -0
- package/dist/tools/proximo.d.ts.map +1 -1
- package/dist/tools/proximo.js +41 -126
- package/dist/tools/proximo.js.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/phase-config.d.ts +65 -0
- package/dist/types/phase-config.d.ts.map +1 -0
- package/dist/types/phase-config.js +11 -0
- package/dist/types/phase-config.js.map +1 -0
- package/dist/utils/migration-v10.d.ts +31 -0
- package/dist/utils/migration-v10.d.ts.map +1 -0
- package/dist/utils/migration-v10.js +145 -0
- package/dist/utils/migration-v10.js.map +1 -0
- package/dist/utils/prompt-mapper.d.ts +6 -2
- package/dist/utils/prompt-mapper.d.ts.map +1 -1
- package/dist/utils/prompt-mapper.js +72 -91
- package/dist/utils/prompt-mapper.js.map +1 -1
- package/dist/utils/skill-deployer.d.ts +32 -0
- package/dist/utils/skill-deployer.d.ts.map +1 -0
- package/dist/utils/skill-deployer.js +150 -0
- package/dist/utils/skill-deployer.js.map +1 -0
- package/package.json +2 -2
package/dist/flows/types.js
CHANGED
|
@@ -1,419 +1,388 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Nomes canônicos das fases de desenvolvimento de código.
|
|
3
|
+
* FONTE ÚNICA DE VERDADE — todos os arquivos devem importar daqui.
|
|
4
|
+
*
|
|
5
|
+
* v10.0: Atualizado para fluxos enxutos.
|
|
6
|
+
* "Integração & Deploy" é fase de código (deploy.md + CI/CD + E2E).
|
|
7
|
+
* "Deploy & Operação" é fase de código (release.md + SLOs + runbooks).
|
|
8
|
+
*
|
|
9
|
+
* @since v10.0
|
|
10
|
+
*/
|
|
11
|
+
export const CODE_PHASE_NAMES = ['Frontend', 'Backend', 'Integração & Deploy', 'Integração', 'Deploy & Operação'];
|
|
12
|
+
/**
|
|
13
|
+
* Verifica se uma fase é de código (desenvolvimento).
|
|
14
|
+
* Usa CODE_PHASE_NAMES como fonte única.
|
|
15
|
+
*
|
|
16
|
+
* @since v9.0
|
|
17
|
+
*/
|
|
18
|
+
export function isCodePhaseName(faseNome) {
|
|
19
|
+
if (!faseNome)
|
|
20
|
+
return false;
|
|
21
|
+
return CODE_PHASE_NAMES.some(k => faseNome.includes(k));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Classificação de tipo de fase para Smart Auto-Flow.
|
|
25
|
+
* Usado por proximo.ts para decidir se a próxima fase precisa de input do usuário.
|
|
26
|
+
*
|
|
27
|
+
* v10.0: Atualizado com nomes de fases consolidadas.
|
|
28
|
+
*
|
|
29
|
+
* @since v10.0
|
|
30
|
+
*/
|
|
31
|
+
export const PHASE_TYPE_MAP = {
|
|
32
|
+
// Fases que requerem input do usuário (coleta conversacional)
|
|
33
|
+
'Discovery': 'input_required',
|
|
34
|
+
'Produto': 'input_required',
|
|
35
|
+
// Fases derivadas (IA gera a partir de docs anteriores + coleta complementar)
|
|
36
|
+
'Requisitos': 'derived',
|
|
37
|
+
'Design': 'derived',
|
|
38
|
+
'Arquitetura': 'derived',
|
|
39
|
+
'Design Técnico': 'derived',
|
|
40
|
+
'Modelo de Domínio': 'derived',
|
|
41
|
+
'Contrato API': 'derived',
|
|
42
|
+
'Planejamento': 'derived',
|
|
43
|
+
'Prototipagem': 'derived',
|
|
44
|
+
// Fases técnicas (código e infra)
|
|
45
|
+
'Frontend': 'technical',
|
|
46
|
+
'Backend': 'technical',
|
|
47
|
+
'Integração & Deploy': 'technical',
|
|
48
|
+
'Integração': 'technical',
|
|
49
|
+
'Deploy & Operação': 'technical',
|
|
50
|
+
};
|
|
51
|
+
// ============================================================
|
|
52
|
+
// GATE CHECKLISTS COMPARTILHADOS (reutilizados entre fluxos)
|
|
53
|
+
// ============================================================
|
|
54
|
+
const GATE_FRONTEND = [
|
|
55
|
+
"Componentes implementados conforme design doc e user stories",
|
|
56
|
+
"Pages com rotas configuradas para cada fluxo",
|
|
57
|
+
"State management conectado (hooks/stores)",
|
|
58
|
+
"Integração com mocks ou API real",
|
|
59
|
+
"Testes unitários para componentes críticos",
|
|
60
|
+
"Responsivo mobile-first e acessível",
|
|
61
|
+
"Loading, empty e error states em todas as telas",
|
|
62
|
+
];
|
|
63
|
+
const GATE_BACKEND = [
|
|
64
|
+
"Endpoints implementados conforme modelo de dados da arquitetura",
|
|
65
|
+
"DTOs com validação de input para cada endpoint",
|
|
66
|
+
"Services com regras de negócio do modelo de domínio",
|
|
67
|
+
"Testes unitários para services e controllers",
|
|
68
|
+
"Migrações de banco executáveis",
|
|
69
|
+
"Error handling padronizado conforme schema de erros",
|
|
70
|
+
"Autenticação implementada conforme arquitetura",
|
|
71
|
+
];
|
|
72
|
+
const GATE_INTEGRACAO_DEPLOY = [
|
|
73
|
+
"Frontend conectado ao Backend real (mocks removidos)",
|
|
74
|
+
"Todos os endpoints funcionando end-to-end",
|
|
75
|
+
"Testes E2E para fluxos críticos",
|
|
76
|
+
"CORS e variáveis de ambiente configurados",
|
|
77
|
+
"Pipeline CI/CD verde com testes automatizados",
|
|
78
|
+
"Health check respondendo corretamente",
|
|
79
|
+
"Monitoramento ativo (error tracking)",
|
|
80
|
+
];
|
|
81
|
+
// ============================================================
|
|
82
|
+
// FLUXO SIMPLES — 5 fases (v10.0, antes: 7)
|
|
83
|
+
// Discovery (PRD+Requisitos), Design, Arquitetura, Frontend, Backend
|
|
84
|
+
// ============================================================
|
|
2
85
|
export const FLUXO_SIMPLES = {
|
|
3
86
|
nivel: "simples",
|
|
4
|
-
total_fases:
|
|
87
|
+
total_fases: 5,
|
|
5
88
|
fases: [
|
|
6
89
|
{
|
|
7
90
|
numero: 1,
|
|
8
|
-
nome: "
|
|
9
|
-
especialista: "
|
|
10
|
-
template: "
|
|
11
|
-
skill: "specialist-
|
|
12
|
-
gate_checklist: [
|
|
13
|
-
"Problema claramente definido",
|
|
14
|
-
"MVP com funcionalidades listadas",
|
|
15
|
-
"Personas identificadas",
|
|
16
|
-
],
|
|
17
|
-
entregavel_esperado: "PRD.md",
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
numero: 2,
|
|
21
|
-
nome: "Requisitos",
|
|
22
|
-
especialista: "Engenharia de Requisitos",
|
|
23
|
-
template: "requisitos",
|
|
24
|
-
skill: "specialist-engenharia-requisitos-ia",
|
|
91
|
+
nome: "Discovery",
|
|
92
|
+
especialista: "Product Discovery Lead",
|
|
93
|
+
template: "discovery",
|
|
94
|
+
skill: "specialist-discovery",
|
|
25
95
|
gate_checklist: [
|
|
96
|
+
"Problema definido com impacto quantificado",
|
|
97
|
+
"Mínimo 2 personas com JTBD",
|
|
98
|
+
"MVP com 3-5 funcionalidades priorizadas",
|
|
26
99
|
"Requisitos funcionais com IDs únicos",
|
|
27
100
|
"Requisitos não-funcionais definidos",
|
|
28
|
-
"
|
|
101
|
+
"North Star Metric definida e mensurável",
|
|
102
|
+
"Riscos identificados com mitigação",
|
|
29
103
|
],
|
|
30
|
-
entregavel_esperado: "
|
|
104
|
+
entregavel_esperado: "discovery.md",
|
|
31
105
|
},
|
|
32
106
|
{
|
|
33
|
-
numero:
|
|
34
|
-
nome: "
|
|
35
|
-
especialista: "UX
|
|
107
|
+
numero: 2,
|
|
108
|
+
nome: "Design",
|
|
109
|
+
especialista: "UX Designer Lead",
|
|
36
110
|
template: "design-doc",
|
|
37
|
-
skill: "specialist-
|
|
111
|
+
skill: "specialist-design",
|
|
38
112
|
gate_checklist: [
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
113
|
+
"Jornada do usuário principal mapeada completa",
|
|
114
|
+
"Wireframes cobrem todas as telas do MVP",
|
|
115
|
+
"Design system definido (cores, tipografia, componentes)",
|
|
116
|
+
"Navegação e arquitetura de informação clara",
|
|
117
|
+
"Estados de UI (loading, empty, error) documentados",
|
|
118
|
+
"Acessibilidade WCAG 2.1 AA considerada",
|
|
119
|
+
"Responsividade mobile-first planejada",
|
|
42
120
|
],
|
|
43
121
|
entregavel_esperado: "design-doc.md",
|
|
44
122
|
},
|
|
45
123
|
{
|
|
46
|
-
numero:
|
|
124
|
+
numero: 3,
|
|
47
125
|
nome: "Arquitetura",
|
|
48
|
-
especialista: "
|
|
126
|
+
especialista: "Arquiteto de Soluções",
|
|
49
127
|
template: "arquitetura",
|
|
50
|
-
skill: "specialist-
|
|
128
|
+
skill: "specialist-architect",
|
|
51
129
|
gate_checklist: [
|
|
52
|
-
"Stack tecnológica
|
|
53
|
-
"Diagrama C4
|
|
54
|
-
"
|
|
130
|
+
"Stack tecnológica justificada com ADRs",
|
|
131
|
+
"Diagrama C4 nível 1 e 2 presentes",
|
|
132
|
+
"Modelo de dados com entidades e relacionamentos",
|
|
133
|
+
"Schema de banco com PKs, FKs e índices",
|
|
134
|
+
"Autenticação e autorização definidas",
|
|
135
|
+
"NFRs mensuráveis (tempo de resposta, disponibilidade)",
|
|
136
|
+
"Mínimo 2 ADRs documentados",
|
|
55
137
|
],
|
|
56
138
|
entregavel_esperado: "arquitetura.md",
|
|
57
139
|
},
|
|
58
140
|
{
|
|
59
|
-
numero:
|
|
60
|
-
nome: "Backlog",
|
|
61
|
-
especialista: "Plano de Execução",
|
|
62
|
-
template: "backlog",
|
|
63
|
-
skill: "specialist-plano-execucao-ia",
|
|
64
|
-
gate_checklist: [
|
|
65
|
-
"Épicos definidos",
|
|
66
|
-
"Histórias de usuário criadas",
|
|
67
|
-
"Definition of Done estabelecido",
|
|
68
|
-
],
|
|
69
|
-
entregavel_esperado: "backlog.md",
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
numero: 6,
|
|
141
|
+
numero: 4,
|
|
73
142
|
nome: "Frontend",
|
|
74
|
-
especialista: "
|
|
143
|
+
especialista: "Frontend Developer Lead",
|
|
75
144
|
template: "historia-usuario",
|
|
76
|
-
skill: "specialist-
|
|
77
|
-
gate_checklist:
|
|
78
|
-
"Componentes implementados conforme design doc e user stories do backlog",
|
|
79
|
-
"Pages com rotas configuradas para cada fluxo",
|
|
80
|
-
"State management conectado (hooks/stores)",
|
|
81
|
-
"Integração com mocks do contrato API",
|
|
82
|
-
"Testes unitários para componentes críticos",
|
|
83
|
-
"Responsivo mobile-first e acessível",
|
|
84
|
-
"Loading, empty e error states em todas as telas",
|
|
85
|
-
],
|
|
145
|
+
skill: "specialist-frontend",
|
|
146
|
+
gate_checklist: GATE_FRONTEND,
|
|
86
147
|
entregavel_esperado: "frontend-code",
|
|
87
148
|
},
|
|
88
149
|
{
|
|
89
|
-
numero:
|
|
150
|
+
numero: 5,
|
|
90
151
|
nome: "Backend",
|
|
91
|
-
especialista: "
|
|
152
|
+
especialista: "Backend Developer Lead",
|
|
92
153
|
template: "historia-usuario",
|
|
93
|
-
skill: "specialist-
|
|
94
|
-
gate_checklist:
|
|
95
|
-
"Endpoints implementados conforme contrato OpenAPI",
|
|
96
|
-
"DTOs com validação de input para cada endpoint",
|
|
97
|
-
"Services com regras de negócio do modelo de domínio",
|
|
98
|
-
"Testes unitários para services e controllers",
|
|
99
|
-
"Migrações de banco executáveis",
|
|
100
|
-
"Error handling padronizado conforme schema de erros",
|
|
101
|
-
"Autenticação implementada conforme arquitetura",
|
|
102
|
-
],
|
|
154
|
+
skill: "specialist-backend",
|
|
155
|
+
gate_checklist: GATE_BACKEND,
|
|
103
156
|
entregavel_esperado: "backend-code",
|
|
104
157
|
},
|
|
105
158
|
],
|
|
106
159
|
};
|
|
107
|
-
//
|
|
160
|
+
// ============================================================
|
|
161
|
+
// FLUXO MÉDIO — 8 fases (v10.0, antes: 13)
|
|
162
|
+
// Produto, Requisitos, Design, Design Técnico, Planejamento,
|
|
163
|
+
// Frontend, Backend, Integração & Deploy
|
|
164
|
+
// ============================================================
|
|
108
165
|
export const FLUXO_MEDIO = {
|
|
109
166
|
nivel: "medio",
|
|
110
|
-
total_fases:
|
|
167
|
+
total_fases: 8,
|
|
111
168
|
fases: [
|
|
112
169
|
{
|
|
113
170
|
numero: 1,
|
|
114
171
|
nome: "Produto",
|
|
115
|
-
especialista: "
|
|
172
|
+
especialista: "Product Manager",
|
|
116
173
|
template: "PRD",
|
|
174
|
+
skill: "specialist-product",
|
|
117
175
|
gate_checklist: [
|
|
118
|
-
"Problema
|
|
119
|
-
"
|
|
120
|
-
"MVP com funcionalidades
|
|
121
|
-
"
|
|
122
|
-
"
|
|
176
|
+
"Problema definido com impacto quantificado",
|
|
177
|
+
"Mínimo 2 personas detalhadas com JTBD",
|
|
178
|
+
"MVP com 3-7 funcionalidades priorizadas (RICE ou MoSCoW)",
|
|
179
|
+
"Escopo negativo definido (o que NÃO está no MVP)",
|
|
180
|
+
"North Star Metric com metas de 3 e 6 meses",
|
|
181
|
+
"Top 5 riscos com mitigação",
|
|
182
|
+
"Modelo de negócio claro",
|
|
123
183
|
],
|
|
124
184
|
entregavel_esperado: "PRD.md",
|
|
125
185
|
},
|
|
126
186
|
{
|
|
127
187
|
numero: 2,
|
|
128
188
|
nome: "Requisitos",
|
|
129
|
-
especialista: "
|
|
189
|
+
especialista: "Engenheiro de Requisitos",
|
|
130
190
|
template: "requisitos",
|
|
191
|
+
skill: "specialist-requirements",
|
|
131
192
|
gate_checklist: [
|
|
132
|
-
"Requisitos funcionais com IDs únicos",
|
|
133
|
-
"
|
|
134
|
-
"
|
|
135
|
-
"
|
|
193
|
+
"Requisitos funcionais com IDs únicos e descrição clara",
|
|
194
|
+
"Critérios de aceite em Gherkin para RFs de prioridade Alta",
|
|
195
|
+
"Requisitos não-funcionais mensuráveis",
|
|
196
|
+
"Regras de negócio documentadas",
|
|
197
|
+
"Matriz de rastreabilidade RF ↔ PRD",
|
|
136
198
|
],
|
|
137
199
|
entregavel_esperado: "requisitos.md",
|
|
138
200
|
},
|
|
139
201
|
{
|
|
140
202
|
numero: 3,
|
|
141
|
-
nome: "
|
|
142
|
-
especialista: "UX
|
|
203
|
+
nome: "Design",
|
|
204
|
+
especialista: "UX Designer Lead",
|
|
143
205
|
template: "design-doc",
|
|
206
|
+
skill: "specialist-design",
|
|
144
207
|
gate_checklist: [
|
|
145
|
-
"
|
|
146
|
-
"Wireframes
|
|
147
|
-
"
|
|
148
|
-
"
|
|
208
|
+
"Jornada do usuário principal mapeada completa",
|
|
209
|
+
"Wireframes cobrem todas as telas do MVP",
|
|
210
|
+
"Design system definido (cores, tipografia, componentes)",
|
|
211
|
+
"Navegação e arquitetura de informação clara",
|
|
212
|
+
"Estados de UI (loading, empty, error) documentados",
|
|
213
|
+
"Acessibilidade WCAG 2.1 AA considerada",
|
|
214
|
+
"Responsividade mobile-first planejada",
|
|
149
215
|
],
|
|
150
216
|
entregavel_esperado: "design-doc.md",
|
|
151
217
|
},
|
|
152
218
|
{
|
|
153
219
|
numero: 4,
|
|
154
|
-
nome: "
|
|
155
|
-
especialista: "
|
|
156
|
-
template: "
|
|
220
|
+
nome: "Design Técnico",
|
|
221
|
+
especialista: "Arquiteto de Soluções",
|
|
222
|
+
template: "technical-design",
|
|
223
|
+
skill: "specialist-technical-design",
|
|
157
224
|
gate_checklist: [
|
|
158
|
-
"Entidades
|
|
159
|
-
"
|
|
160
|
-
"
|
|
225
|
+
"Entidades do domínio com atributos e relacionamentos completos",
|
|
226
|
+
"Schema de banco com tipos reais, PKs/FKs e índices planejados",
|
|
227
|
+
"Stack tecnológica justificada com mínimo 3 ADRs",
|
|
228
|
+
"Diagrama C4 nível 1 e 2",
|
|
229
|
+
"Autenticação e autorização definidas",
|
|
230
|
+
"OWASP Top 5 mitigado",
|
|
231
|
+
"NFRs mensuráveis (tempo resposta, disponibilidade, escala)",
|
|
232
|
+
"Estratégia de deploy com ambientes",
|
|
161
233
|
],
|
|
162
|
-
entregavel_esperado: "
|
|
234
|
+
entregavel_esperado: "technical-design.md",
|
|
163
235
|
},
|
|
164
236
|
{
|
|
165
237
|
numero: 5,
|
|
166
|
-
nome: "
|
|
167
|
-
especialista: "
|
|
168
|
-
template: "design-banco",
|
|
169
|
-
gate_checklist: [
|
|
170
|
-
"Modelo relacional definido",
|
|
171
|
-
"Índices planejados",
|
|
172
|
-
"Scripts de migração criados",
|
|
173
|
-
],
|
|
174
|
-
entregavel_esperado: "design-banco.md",
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
numero: 6,
|
|
178
|
-
nome: "Arquitetura",
|
|
179
|
-
especialista: "Arquitetura de Software",
|
|
180
|
-
template: "arquitetura",
|
|
181
|
-
gate_checklist: [
|
|
182
|
-
"Diagrama C4 completo",
|
|
183
|
-
"Stack justificada",
|
|
184
|
-
"ADRs documentados",
|
|
185
|
-
"Pontos de integração definidos",
|
|
186
|
-
],
|
|
187
|
-
entregavel_esperado: "arquitetura.md",
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
numero: 7,
|
|
191
|
-
nome: "Segurança",
|
|
192
|
-
especialista: "Segurança da Informação",
|
|
193
|
-
template: "checklist-seguranca",
|
|
194
|
-
gate_checklist: [
|
|
195
|
-
"OWASP Top 10 avaliado",
|
|
196
|
-
"Autenticação definida",
|
|
197
|
-
"Dados sensíveis mapeados",
|
|
198
|
-
],
|
|
199
|
-
entregavel_esperado: "checklist-seguranca.md",
|
|
200
|
-
},
|
|
201
|
-
{
|
|
202
|
-
numero: 8,
|
|
203
|
-
nome: "Testes",
|
|
204
|
-
especialista: "Análise de Testes",
|
|
205
|
-
template: "plano-testes",
|
|
206
|
-
gate_checklist: [
|
|
207
|
-
"Estratégia definida",
|
|
208
|
-
"Casos de teste mapeados",
|
|
209
|
-
"Ferramentas selecionadas",
|
|
210
|
-
],
|
|
211
|
-
entregavel_esperado: "plano-testes.md",
|
|
212
|
-
},
|
|
213
|
-
{
|
|
214
|
-
numero: 9,
|
|
215
|
-
nome: "Backlog",
|
|
216
|
-
especialista: "Plano de Execução com IA",
|
|
238
|
+
nome: "Planejamento",
|
|
239
|
+
especialista: "Tech Lead",
|
|
217
240
|
template: "backlog",
|
|
241
|
+
skill: "specialist-planning",
|
|
218
242
|
gate_checklist: [
|
|
219
|
-
"Épicos
|
|
220
|
-
"
|
|
221
|
-
"
|
|
222
|
-
"
|
|
243
|
+
"Épicos mapeiam funcionalidades do MVP",
|
|
244
|
+
"User Stories com IDs, tipo FE/BE e story points",
|
|
245
|
+
"Top 10 US com critérios de aceite detalhados",
|
|
246
|
+
"Endpoints de API derivados do modelo de dados",
|
|
247
|
+
"Sprints planejados com objetivo e US incluídas",
|
|
248
|
+
"Estratégia de testes com ferramentas e cobertura",
|
|
249
|
+
"Definition of Done definido",
|
|
223
250
|
],
|
|
224
251
|
entregavel_esperado: "backlog.md",
|
|
225
252
|
},
|
|
226
253
|
{
|
|
227
|
-
numero:
|
|
228
|
-
nome: "Contrato API",
|
|
229
|
-
especialista: "Contrato de API",
|
|
230
|
-
template: "contrato-api",
|
|
231
|
-
gate_checklist: [
|
|
232
|
-
"Esquema OpenAPI definido",
|
|
233
|
-
"Tipos gerados para FE e BE",
|
|
234
|
-
"Mocks disponíveis",
|
|
235
|
-
],
|
|
236
|
-
entregavel_esperado: "openapi.yaml",
|
|
237
|
-
},
|
|
238
|
-
{
|
|
239
|
-
numero: 11,
|
|
254
|
+
numero: 6,
|
|
240
255
|
nome: "Frontend",
|
|
241
|
-
especialista: "
|
|
256
|
+
especialista: "Frontend Developer Lead",
|
|
242
257
|
template: "historia-usuario",
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
"Pages com rotas configuradas para cada fluxo",
|
|
246
|
-
"State management conectado (hooks/stores)",
|
|
247
|
-
"Integração com mocks do contrato API",
|
|
248
|
-
"Testes unitários para componentes críticos",
|
|
249
|
-
"Responsivo mobile-first e acessível",
|
|
250
|
-
"Loading, empty e error states em todas as telas",
|
|
251
|
-
],
|
|
258
|
+
skill: "specialist-frontend",
|
|
259
|
+
gate_checklist: GATE_FRONTEND,
|
|
252
260
|
entregavel_esperado: "frontend-code",
|
|
253
261
|
},
|
|
254
262
|
{
|
|
255
|
-
numero:
|
|
263
|
+
numero: 7,
|
|
256
264
|
nome: "Backend",
|
|
257
|
-
especialista: "
|
|
265
|
+
especialista: "Backend Developer Lead",
|
|
258
266
|
template: "historia-usuario",
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
"DTOs com validação de input para cada endpoint",
|
|
262
|
-
"Services com regras de negócio do modelo de domínio",
|
|
263
|
-
"Testes unitários para services e controllers",
|
|
264
|
-
"Migrações de banco executáveis",
|
|
265
|
-
"Error handling padronizado conforme schema de erros",
|
|
266
|
-
"Autenticação implementada conforme arquitetura",
|
|
267
|
-
],
|
|
267
|
+
skill: "specialist-backend",
|
|
268
|
+
gate_checklist: GATE_BACKEND,
|
|
268
269
|
entregavel_esperado: "backend-code",
|
|
269
270
|
},
|
|
270
271
|
{
|
|
271
|
-
numero:
|
|
272
|
-
nome: "Integração",
|
|
273
|
-
especialista: "DevOps
|
|
274
|
-
template: "
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
"Todos os endpoints do OpenAPI funcionando end-to-end",
|
|
278
|
-
"Testes E2E para fluxos críticos",
|
|
279
|
-
"CORS e variáveis de ambiente configurados",
|
|
280
|
-
"Pipeline CI/CD verde com testes automatizados",
|
|
281
|
-
],
|
|
272
|
+
numero: 8,
|
|
273
|
+
nome: "Integração & Deploy",
|
|
274
|
+
especialista: "DevOps / SRE Engineer",
|
|
275
|
+
template: "deploy",
|
|
276
|
+
skill: "specialist-devops",
|
|
277
|
+
gate_checklist: GATE_INTEGRACAO_DEPLOY,
|
|
282
278
|
entregavel_esperado: "deploy.md",
|
|
283
279
|
},
|
|
284
280
|
],
|
|
285
281
|
};
|
|
286
|
-
//
|
|
282
|
+
// ============================================================
|
|
283
|
+
// FLUXO COMPLEXO — 11 fases (v10.0, antes: 17)
|
|
284
|
+
// Produto, Requisitos, Design, Modelo de Domínio, Design Técnico,
|
|
285
|
+
// Contrato API, Planejamento, Frontend, Backend, Integração, Deploy & Operação
|
|
286
|
+
// ============================================================
|
|
287
287
|
export const FLUXO_COMPLEXO = {
|
|
288
288
|
nivel: "complexo",
|
|
289
|
-
total_fases:
|
|
289
|
+
total_fases: 11,
|
|
290
290
|
fases: [
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
numero: 7,
|
|
294
|
-
nome: "Arquitetura Avançada",
|
|
295
|
-
especialista: "Arquitetura Avançada",
|
|
296
|
-
template: "arquitetura",
|
|
297
|
-
gate_checklist: [
|
|
298
|
-
"Bounded Contexts definidos",
|
|
299
|
-
"CQRS avaliado",
|
|
300
|
-
"Event Sourcing planejado",
|
|
301
|
-
"Microserviços mapeados",
|
|
302
|
-
],
|
|
303
|
-
entregavel_esperado: "arquitetura-avancada.md",
|
|
304
|
-
},
|
|
305
|
-
{
|
|
306
|
-
numero: 8,
|
|
307
|
-
nome: "Segurança",
|
|
308
|
-
especialista: "Segurança da Informação",
|
|
309
|
-
template: "checklist-seguranca",
|
|
310
|
-
gate_checklist: [
|
|
311
|
-
"OWASP Top 10 avaliado",
|
|
312
|
-
"Threat modeling realizado",
|
|
313
|
-
"Pentest planejado",
|
|
314
|
-
"Compliance verificado",
|
|
315
|
-
],
|
|
316
|
-
entregavel_esperado: "checklist-seguranca.md",
|
|
317
|
-
},
|
|
291
|
+
// Fases 1-3: iguais ao médio (Produto, Requisitos, Design)
|
|
292
|
+
...FLUXO_MEDIO.fases.slice(0, 3),
|
|
318
293
|
{
|
|
319
|
-
numero:
|
|
320
|
-
nome: "
|
|
321
|
-
especialista: "
|
|
322
|
-
template: "
|
|
294
|
+
numero: 4,
|
|
295
|
+
nome: "Modelo de Domínio",
|
|
296
|
+
especialista: "Domain Expert / DDD Strategist",
|
|
297
|
+
template: "modelo-dominio",
|
|
298
|
+
skill: "specialist-domain",
|
|
323
299
|
gate_checklist: [
|
|
324
|
-
"
|
|
325
|
-
"
|
|
326
|
-
"
|
|
300
|
+
"Bounded contexts identificados com responsabilidades claras",
|
|
301
|
+
"Linguagem ubíqua documentada (glossário com 10+ termos)",
|
|
302
|
+
"Aggregates com aggregate roots identificados",
|
|
303
|
+
"Entidades com atributos e identidade definida",
|
|
304
|
+
"Value Objects identificados (imutáveis, sem identidade)",
|
|
305
|
+
"Invariantes/regras de negócio por aggregate",
|
|
306
|
+
"Domain events mapeados (mínimo 5)",
|
|
307
|
+
"Context map com relações entre bounded contexts",
|
|
327
308
|
],
|
|
328
|
-
entregavel_esperado: "
|
|
309
|
+
entregavel_esperado: "modelo-dominio.md",
|
|
329
310
|
},
|
|
330
311
|
{
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
312
|
+
// Design Técnico no complexo: sem seção de domínio (já coberta na fase 4)
|
|
313
|
+
numero: 5,
|
|
314
|
+
nome: "Design Técnico",
|
|
315
|
+
especialista: "Arquiteto de Soluções",
|
|
316
|
+
template: "technical-design",
|
|
317
|
+
skill: "specialist-technical-design",
|
|
335
318
|
gate_checklist: [
|
|
336
|
-
"
|
|
337
|
-
"
|
|
338
|
-
"
|
|
339
|
-
"
|
|
319
|
+
"Schema de banco com tipos reais, PKs/FKs e índices planejados",
|
|
320
|
+
"Stack tecnológica justificada com mínimo 3 ADRs",
|
|
321
|
+
"Diagrama C4 nível 1 e 2",
|
|
322
|
+
"Autenticação e autorização definidas",
|
|
323
|
+
"OWASP Top 5 mitigado",
|
|
324
|
+
"NFRs mensuráveis (tempo resposta, disponibilidade, escala)",
|
|
325
|
+
"Estratégia de deploy com ambientes",
|
|
340
326
|
],
|
|
341
|
-
entregavel_esperado: "
|
|
327
|
+
entregavel_esperado: "technical-design.md",
|
|
342
328
|
},
|
|
343
329
|
{
|
|
344
|
-
numero:
|
|
345
|
-
nome: "
|
|
346
|
-
especialista: "
|
|
347
|
-
template: "
|
|
330
|
+
numero: 6,
|
|
331
|
+
nome: "Contrato API",
|
|
332
|
+
especialista: "API Designer",
|
|
333
|
+
template: "contrato-api",
|
|
334
|
+
skill: "specialist-api-contract",
|
|
348
335
|
gate_checklist: [
|
|
349
|
-
"
|
|
350
|
-
"
|
|
351
|
-
"
|
|
336
|
+
"OpenAPI 3.0+ válido (parseable por ferramentas)",
|
|
337
|
+
"CRUD completo para cada entidade principal",
|
|
338
|
+
"Schemas de request e response com tipos reais",
|
|
339
|
+
"Autenticação definida (security schemes)",
|
|
340
|
+
"Paginação em endpoints que retornam listas",
|
|
341
|
+
"Error responses padronizadas",
|
|
342
|
+
"Pelo menos 1 exemplo por endpoint",
|
|
352
343
|
],
|
|
353
|
-
entregavel_esperado: "
|
|
344
|
+
entregavel_esperado: "openapi.yaml",
|
|
354
345
|
},
|
|
355
346
|
{
|
|
356
|
-
numero:
|
|
357
|
-
nome: "
|
|
358
|
-
especialista: "
|
|
347
|
+
numero: 7,
|
|
348
|
+
nome: "Planejamento",
|
|
349
|
+
especialista: "Tech Lead",
|
|
359
350
|
template: "backlog",
|
|
351
|
+
skill: "specialist-planning",
|
|
360
352
|
gate_checklist: [
|
|
361
|
-
"Épicos
|
|
362
|
-
"
|
|
363
|
-
"
|
|
364
|
-
"Sprints
|
|
353
|
+
"Épicos mapeiam funcionalidades do MVP",
|
|
354
|
+
"User Stories com IDs, tipo FE/BE e story points",
|
|
355
|
+
"Top 10 US com critérios de aceite detalhados",
|
|
356
|
+
"Sprints planejados com objetivo e US incluídas",
|
|
357
|
+
"Estratégia de testes com ferramentas e cobertura",
|
|
358
|
+
"Definition of Done definido",
|
|
365
359
|
],
|
|
366
360
|
entregavel_esperado: "backlog.md",
|
|
367
361
|
},
|
|
368
362
|
{
|
|
369
|
-
numero:
|
|
370
|
-
nome: "Contrato API",
|
|
371
|
-
especialista: "Contrato de API",
|
|
372
|
-
template: "contrato-api",
|
|
373
|
-
gate_checklist: [
|
|
374
|
-
"OpenAPI completo",
|
|
375
|
-
"Versionamento definido",
|
|
376
|
-
"Breaking changes documentados",
|
|
377
|
-
],
|
|
378
|
-
entregavel_esperado: "openapi.yaml",
|
|
379
|
-
},
|
|
380
|
-
{
|
|
381
|
-
numero: 14,
|
|
363
|
+
numero: 8,
|
|
382
364
|
nome: "Frontend",
|
|
383
|
-
especialista: "
|
|
365
|
+
especialista: "Frontend Developer Lead",
|
|
384
366
|
template: "historia-usuario",
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
"Pages com rotas configuradas para cada fluxo",
|
|
388
|
-
"State management conectado (hooks/stores)",
|
|
389
|
-
"Integração com mocks do contrato API",
|
|
390
|
-
"Testes unitários para componentes críticos",
|
|
391
|
-
"Responsivo mobile-first e acessível",
|
|
392
|
-
"Loading, empty e error states em todas as telas",
|
|
393
|
-
],
|
|
367
|
+
skill: "specialist-frontend",
|
|
368
|
+
gate_checklist: GATE_FRONTEND,
|
|
394
369
|
entregavel_esperado: "frontend-code",
|
|
395
370
|
},
|
|
396
371
|
{
|
|
397
|
-
numero:
|
|
372
|
+
numero: 9,
|
|
398
373
|
nome: "Backend",
|
|
399
|
-
especialista: "
|
|
374
|
+
especialista: "Backend Developer Lead",
|
|
400
375
|
template: "historia-usuario",
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
"DTOs com validação de input para cada endpoint",
|
|
404
|
-
"Services com regras de negócio do modelo de domínio",
|
|
405
|
-
"Testes unitários para services e controllers",
|
|
406
|
-
"Migrações de banco executáveis",
|
|
407
|
-
"Error handling padronizado conforme schema de erros",
|
|
408
|
-
"Autenticação implementada conforme arquitetura",
|
|
409
|
-
],
|
|
376
|
+
skill: "specialist-backend",
|
|
377
|
+
gate_checklist: GATE_BACKEND,
|
|
410
378
|
entregavel_esperado: "backend-code",
|
|
411
379
|
},
|
|
412
380
|
{
|
|
413
|
-
numero:
|
|
381
|
+
numero: 10,
|
|
414
382
|
nome: "Integração",
|
|
415
|
-
especialista: "DevOps
|
|
416
|
-
template: "
|
|
383
|
+
especialista: "DevOps / SRE Engineer",
|
|
384
|
+
template: "deploy",
|
|
385
|
+
skill: "specialist-devops",
|
|
417
386
|
gate_checklist: [
|
|
418
387
|
"Frontend conectado ao Backend real (mocks removidos)",
|
|
419
388
|
"Todos os endpoints do OpenAPI funcionando end-to-end",
|
|
@@ -424,15 +393,17 @@ export const FLUXO_COMPLEXO = {
|
|
|
424
393
|
entregavel_esperado: "deploy.md",
|
|
425
394
|
},
|
|
426
395
|
{
|
|
427
|
-
numero:
|
|
428
|
-
nome: "Deploy
|
|
429
|
-
especialista: "
|
|
430
|
-
template: "
|
|
396
|
+
numero: 11,
|
|
397
|
+
nome: "Deploy & Operação",
|
|
398
|
+
especialista: "SRE Senior / Platform Engineer",
|
|
399
|
+
template: "release",
|
|
400
|
+
skill: "specialist-operations",
|
|
431
401
|
gate_checklist: [
|
|
432
402
|
"Deploy em produção realizado com sucesso",
|
|
433
403
|
"Monitoramento ativo com métricas e alertas",
|
|
434
|
-
"Health checks respondendo corretamente",
|
|
435
|
-
"
|
|
404
|
+
"Health checks respondendo corretamente (liveness + readiness)",
|
|
405
|
+
"SLOs definidos com SLIs mensuráveis",
|
|
406
|
+
"Runbook de operações documentado (mínimo 3 cenários)",
|
|
436
407
|
"Rollback testado e funcional",
|
|
437
408
|
],
|
|
438
409
|
entregavel_esperado: "release.md",
|
|
@@ -476,21 +447,29 @@ const FASE_STITCH = {
|
|
|
476
447
|
entregavel_esperado: "prototipos.md",
|
|
477
448
|
};
|
|
478
449
|
/**
|
|
479
|
-
* Obtém fluxo com fase de Stitch opcional
|
|
480
|
-
* Se usarStitch=true, insere fase de prototipagem
|
|
481
|
-
*
|
|
450
|
+
* Obtém fluxo com fase de Stitch opcional.
|
|
451
|
+
* Se usarStitch=true, insere fase de prototipagem APÓS a fase "Design".
|
|
452
|
+
*
|
|
453
|
+
* v10.0: Busca dinamicamente a fase "Design" em vez de hardcoded na posição 3,
|
|
454
|
+
* porque no fluxo simples Design é fase 2, e no médio/complexo é fase 3.
|
|
482
455
|
*/
|
|
483
456
|
export function getFluxoComStitch(nivel, usarStitch) {
|
|
484
457
|
const base = getFluxo(nivel);
|
|
485
458
|
if (!usarStitch) {
|
|
486
459
|
return base;
|
|
487
460
|
}
|
|
488
|
-
//
|
|
489
|
-
|
|
461
|
+
// Encontrar a fase "Design" dinamicamente
|
|
462
|
+
const designIndex = base.fases.findIndex(f => f.nome === 'Design');
|
|
463
|
+
if (designIndex === -1) {
|
|
464
|
+
// Sem fase de Design, retorna fluxo base sem Stitch
|
|
465
|
+
return base;
|
|
466
|
+
}
|
|
467
|
+
const insertAfter = designIndex + 1; // Inserir APÓS Design
|
|
468
|
+
const stitchNumero = base.fases[designIndex].numero + 1;
|
|
490
469
|
const fasesComStitch = [
|
|
491
|
-
...base.fases.slice(0,
|
|
492
|
-
{ ...FASE_STITCH, numero:
|
|
493
|
-
...base.fases.slice(
|
|
470
|
+
...base.fases.slice(0, insertAfter),
|
|
471
|
+
{ ...FASE_STITCH, numero: stitchNumero },
|
|
472
|
+
...base.fases.slice(insertAfter).map(f => ({ ...f, numero: f.numero + 1 }))
|
|
494
473
|
];
|
|
495
474
|
return {
|
|
496
475
|
nivel: base.nivel,
|