adi_dev_workflow 1.1.1 → 1.3.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.
Files changed (98) hide show
  1. package/bin/index.js +8 -8
  2. package/frameworks/agents/qa-staff-engineer.md +311 -311
  3. package/frameworks/agents/qa-validation-expert.md +458 -458
  4. package/frameworks/agents/tech-review-conformance.md +200 -200
  5. package/frameworks/commands/ministack/README.md +2 -0
  6. package/frameworks/commands/ministack/code-review.md +2 -0
  7. package/frameworks/commands/ministack/generate-intent.md +2 -0
  8. package/frameworks/commands/ministack/generate-scope.md +2 -0
  9. package/frameworks/commands/ministack/generate-tasks.md +2 -0
  10. package/frameworks/commands/ministack/generate-tech-direction.md +2 -0
  11. package/frameworks/commands/ministack/run-ministack-tasks.md +3 -0
  12. package/frameworks/commands/ministack/run-ministack-withlinear.md +2 -0
  13. package/frameworks/commands/ministack/status.md +2 -0
  14. package/frameworks/commands/sdd/code-review.md +2 -0
  15. package/frameworks/commands/sdd/generate-prd.md +2 -0
  16. package/frameworks/commands/sdd/generate-task-plan.md +2 -0
  17. package/frameworks/commands/sdd/generate-tech-direction.md +2 -0
  18. package/frameworks/commands/sdd/generate-tech-spec.md +2 -0
  19. package/frameworks/commands/sdd/generate-tests.md +2 -0
  20. package/frameworks/commands/sdd/run_tasks.md +3 -0
  21. package/frameworks/commands/sdd/run_tasks_withlinear.md +2 -0
  22. package/frameworks/commands/sdd/status.md +2 -0
  23. package/frameworks/commands/sdd/validate-sdd.md +2 -0
  24. package/frameworks/commands/sync-tasks-to-linear.md +2 -0
  25. package/frameworks/commands/taskcard/generate-taskcard.md +2 -0
  26. package/frameworks/commands/taskcard/run-taskcard.md +2 -0
  27. package/frameworks/config/ai-framework-config.yaml +112 -0
  28. package/frameworks/skills/ministack-tasks-expert/SKILL.md +204 -204
  29. package/frameworks/skills/ministack-tasks-expert/templates/task_plan_template.md +78 -78
  30. package/frameworks/skills/ministack-tasks-expert/templates/task_template.md +103 -103
  31. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/benchmark.json +99 -99
  32. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/benchmark.md +64 -64
  33. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/eval_metadata.json +12 -12
  34. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/grading.json +32 -32
  35. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/response.md +134 -134
  36. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/transcript.md +68 -68
  37. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/timing.json +5 -5
  38. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/grading.json +32 -32
  39. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/outputs/response.md +525 -525
  40. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/outputs/transcript.md +30 -30
  41. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/timing.json +5 -5
  42. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/eval_metadata.json +12 -12
  43. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/grading.json +32 -32
  44. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/outputs/response.md +1126 -1126
  45. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/outputs/transcript.md +131 -131
  46. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/timing.json +5 -5
  47. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/grading.json +32 -32
  48. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/outputs/response.md +452 -452
  49. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/outputs/transcript.md +78 -78
  50. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/timing.json +5 -5
  51. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/eval_metadata.json +12 -12
  52. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/grading.json +32 -32
  53. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/outputs/response.md +101 -101
  54. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/outputs/transcript.md +133 -133
  55. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/timing.json +5 -5
  56. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/grading.json +32 -32
  57. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/outputs/response.md +248 -248
  58. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/outputs/transcript.md +49 -49
  59. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/timing.json +5 -5
  60. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/review.html +1325 -1325
  61. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/benchmark.json +94 -94
  62. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/benchmark.md +67 -67
  63. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/eval_metadata.json +12 -12
  64. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/grading.json +32 -32
  65. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/outputs/response.md +117 -117
  66. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/outputs/transcript.md +91 -91
  67. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/timing.json +1 -1
  68. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/grading.json +32 -32
  69. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/outputs/response.md +694 -694
  70. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/outputs/transcript.md +45 -45
  71. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/timing.json +1 -1
  72. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/eval_metadata.json +12 -12
  73. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/grading.json +32 -32
  74. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/outputs/response.md +1087 -1087
  75. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/outputs/transcript.md +124 -124
  76. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/timing.json +1 -1
  77. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/grading.json +32 -32
  78. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/outputs/response.md +458 -458
  79. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/outputs/transcript.md +84 -84
  80. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/timing.json +1 -1
  81. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/eval_metadata.json +12 -12
  82. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/grading.json +32 -32
  83. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/outputs/response.md +70 -70
  84. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/outputs/transcript.md +148 -148
  85. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/timing.json +1 -1
  86. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/grading.json +32 -32
  87. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/outputs/response.md +249 -249
  88. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/outputs/transcript.md +80 -80
  89. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/timing.json +1 -1
  90. package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/review.html +1325 -1325
  91. package/frameworks/skills/sdd-tech-spec-expert/SKILL.md +317 -317
  92. package/frameworks/skills/sdd-tech-spec-expert/evals/evals.json +199 -199
  93. package/frameworks/skills/sdd-tech-spec-expert/templates/spec_tech_template.md +290 -290
  94. package/frameworks/skills/sdd-tech-spec-expert/templates/tech_direction-template.md +23 -23
  95. package/package.json +28 -28
  96. package/src/cli.js +121 -121
  97. package/src/installer.js +155 -136
  98. package/src/transformer.js +86 -86
@@ -1,290 +1,290 @@
1
- # SPEC_TECH -- Especificação Técnica
2
-
3
- ## 1. Identificação
4
- - **Feature/Projeto**:
5
- - **Autor**:
6
- - **Data**:
7
- - **Versão**:
8
- - **Status**: Draft | Refinando | Aprovado
9
- - **PRD Relacionado**:
10
-
11
- ---
12
-
13
- ## 2. Resumo Técnico da Solução
14
-
15
- (Visão geral do COMO será implementado. Descreva em 3-5 linhas a abordagem técnica escolhida, as principais decisões arquiteturais e o resultado técnico esperado.)
16
-
17
- ---
18
-
19
- ## 3. Arquitetura da Solução
20
-
21
- ### 3.1 Visão Geral
22
- (Diagrama ou descrição da arquitetura geral da solução. Como os componentes se conectam.)
23
-
24
- ### 3.2 Componentes/Módulos
25
- (Lista de componentes envolvidos com descrição da responsabilidade de cada um.)
26
-
27
- | Componente | Responsabilidade | Camada |
28
- |------------|-----------------|--------|
29
- | | | |
30
-
31
- ### 3.3 Interações entre componentes
32
- (Descreva como os componentes se comunicam. Fluxo de dados entre camadas.)
33
-
34
- ---
35
-
36
- ## 4. Estruturas de Dados
37
-
38
- ### 4.1 Models / DTOs
39
- (Structs, tipos e modelos de domínio que serão criados ou modificados.)
40
-
41
- ### 4.2 Entidades de Banco de Dados
42
- (Tabelas, colunas, índices, constraints. Inclua SQL de migrações quando aplicável.)
43
-
44
- ### 4.3 Schemas adicionais
45
- (Protocol Buffers, mensagens gRPC, schemas de validação ou outros formatos de dados.)
46
-
47
- ---
48
-
49
- ## 5. Regras Técnicas de Negócio
50
-
51
- (Implementação técnica das regras definidas no PRD. Cada regra do PRD deve ter uma definição técnica correspondente.)
52
-
53
- ### 5.1 Mapeamento de User Stories para Definições Técnicas
54
-
55
- | User Story (PRD) | Definição Técnica | Componentes Envolvidos |
56
- |------------------|-------------------|----------------------|
57
- | US-01 | | |
58
- | US-02 | | |
59
-
60
- <!-- LLM-ONLY: Cada user story do PRD deve ter pelo menos uma definicao tecnica correspondente. Isso garante rastreabilidade completa entre o PRD e a especificacao tecnica. -->
61
-
62
- ---
63
-
64
- ## 6. Fluxos Técnicos
65
-
66
- ### 6.1 Fluxo Principal (técnico)
67
- (Sequência de chamadas, processamento e respostas do fluxo principal. Descreva camada por camada.)
68
-
69
- ### 6.2 Fluxos Alternativos
70
- (Variações do fluxo principal: dados opcionais, caminhos condicionais, etc.)
71
-
72
- ### 6.3 Tratamento de Erros
73
- (Como erros serão tratados em cada camada. Mapeamento de erros de negócio para códigos de status.)
74
-
75
- | Erro de Negócio | Código de Status | Mensagem | Camada de Origem |
76
- |----------------|-----------------|----------|-----------------|
77
- | | | | |
78
-
79
- ---
80
-
81
- ## 7. APIs / Endpoints
82
-
83
- ### 7.1 Endpoints Backend
84
-
85
- | Ação | Método | Rota | Payload | Resposta Esperada |
86
- |------|--------|------|---------|-------------------|
87
- | | | | | |
88
-
89
- ### 7.2 Erros e Códigos de Status
90
-
91
- | Código | Situação | Mensagem |
92
- |--------|----------|----------|
93
- | | | |
94
-
95
- ---
96
-
97
- ## 8. Frontend / Mobile
98
-
99
- ### 8.1 Telas
100
- (Telas envolvidas, layouts e componentes visuais.)
101
-
102
- ### 8.2 Estados e Gerência de Estado
103
- (Gerenciamento de estado: loading, success, error, empty. Solução de state management.)
104
-
105
- ### 8.3 Navegação
106
- (Fluxo de navegação entre telas. Rotas e parâmetros.)
107
-
108
- ### 8.4 Validações
109
- (Validações de formulário, campos obrigatórios, máscaras, limites.)
110
-
111
- ### 8.5 Comportamentos específicos
112
- (Animações, transições, comportamentos offline, responsividade.)
113
-
114
- ---
115
-
116
- ## 9. Banco Local / Cache
117
-
118
- ### 9.1 Estrutura de Tabelas
119
- (Tabelas locais, colunas, tipos. Diferentes do banco remoto se aplicável.)
120
-
121
- ### 9.2 Estratégia de Sincronização
122
- (Como dados locais sincronizam com o backend. Conflitos, prioridade, frequência.)
123
-
124
- ### 9.3 Estratégia de Versionamento
125
- (Como lidar com mudanças de schema local. Migrações locais, rollback.)
126
-
127
- ---
128
-
129
- ## 10. Dependências Técnicas
130
-
131
- | Tipo | Nome | Versão | Motivo |
132
- |------|------|--------|--------|
133
- | Pacote | | | |
134
- | Biblioteca | | | |
135
- | Ferramenta | | | |
136
- | SDK | | | |
137
-
138
- ---
139
-
140
- ## 11. Requisitos Não Funcionais (COMO serão atendidos)
141
-
142
- ### Segurança
143
- (Autenticação, autorização, criptografia, validação de input, sanitização.)
144
-
145
- ### Performance
146
- (Metas de tempo de resposta, paginação, índices, cache, otimizações.)
147
-
148
- ### Escalabilidade
149
- (Limites conhecidos, estratégia de crescimento, gargalos potenciais.)
150
-
151
- ### Observabilidade
152
- (Logs estruturados, métricas, alertas, tracing distribuído.)
153
-
154
- ### Resiliência
155
- (Tratamento de falhas, retry, circuit breaker, graceful degradation.)
156
-
157
- ---
158
-
159
- ## 12. Critérios Técnicos de Aceite
160
-
161
- - [ ] Implementação cobre todas as regras do PRD
162
- - [ ] Estruturas de dados criadas e funcionais
163
- - [ ] Fluxos técnicos implementados e testados
164
- - [ ] API funcionando conforme especificado
165
- - [ ] Erros tratados em todas as camadas
166
- - [ ] Logs/monitoramento implementados
167
- - [ ] Validações aplicadas (input, negócio, dados)
168
- - [ ] Código segue padrões e convenções do projeto
169
-
170
- ---
171
-
172
- ## 13. Riscos Técnicos
173
-
174
- | Risco | Probabilidade | Impacto | Mitigação |
175
- |-------|--------------|---------|-----------|
176
- | | | | |
177
-
178
- ---
179
-
180
- ## 14. Estratégia de Testes
181
-
182
- > **Resumo**: X casos de teste | Unitários: Y | Integração: Z | E2E: W
183
- > **Padrão**: [framework de teste, padrão de mock, convenção de nomes]
184
-
185
- ### Rastreabilidade: Critérios de Aceite → Testes
186
-
187
- | CA (PRD) | Descrição Resumida | Testes |
188
- |----------|-------------------|--------|
189
- | CA-01 | (descrição curta do CA no PRD) | CT-01, CT-10, CT-20, CT-30 |
190
- | CA-02 | (descrição curta do CA no PRD) | CT-02, CT-22 |
191
-
192
- <!-- LLM-ONLY: Cada CA-XX do PRD deve ter pelo menos um teste correspondente. Esta tabela deve ser preenchida PRIMEIRO — guia toda a estrategia. -->
193
-
194
- ---
195
-
196
- ### 14.1 Testes Unitários
197
-
198
- <!-- LLM-ONLY: Coluna "Objetivo": Descreva em 1 frase O QUE o teste valida e POR QUE importa. Use o padrao: Verbo + comportamento especifico + condicao. Exemplo: "Verificar que apenas categorias com ativo=1 sao retornadas, ordenadas pelo campo 'ordem'". NAO repita o nome do teste — o objetivo deve dar contexto que o nome sozinho nao da. -->
199
-
200
- #### Service: [NomeService] (`arquivo_test.go`)
201
-
202
- Mock: [interfaces mockadas]
203
-
204
- | CT | Teste | CA | Objetivo | Input | Expected | Mock |
205
- |----|-------|----|----------|-------|----------|------|
206
- | CT-01 | TestMetodo_Sucesso | CA-01 | Verificar que [comportamento esperado] quando [condição do cenário] | dados válidos | resultado esperado | repo retorna dados |
207
- | CT-02 | TestMetodo_ErroValidacao | CA-03 | Verificar que [erro específico] é retornado quando [condição inválida] | dados inválidos | ErrEspecifico | — |
208
-
209
- #### Apresentação: [NomeHandler] (`arquivo_test.go`)
210
-
211
- Mock: [interfaces mockadas]
212
-
213
- | CT | Teste | CA | Objetivo | Input | Expected | Mock |
214
- |----|-------|----|----------|-------|----------|------|
215
- | CT-10 | TestHandler_Sucesso | CA-01 | Verificar que handler converte [modelo domínio] para [formato response] corretamente | request válido | response proto | service retorna sucesso |
216
-
217
- ### 14.2 Testes de Integração
218
-
219
- #### [CamadaA + CamadaB] (`arquivo_test.go`)
220
-
221
- Setup: [banco in-memory, migrações, fixtures]
222
-
223
- | CT | Teste | CA | Objetivo | Fluxo | Validação |
224
- |----|-------|----|----------|-------|-----------|
225
- | CT-20 | TestIntegracao_CRUD | CA-01 | Verificar que dados persistidos são recuperados integralmente via [camada] | Create → Get | dados consistentes |
226
- | CT-22 | TestIntegracao_Unique | CA-02 | Verificar que constraint unique impede duplicação de [campo] | Insert duplicado | erro constraint |
227
-
228
- ### 14.3 Testes End-to-End (E2E)
229
-
230
- #### Fluxo: [Nome do Fluxo Crítico] (CT-30)
231
- - **CA**: CA-01, CA-03, CA-06
232
- - **Objetivo**: (1 frase descrevendo o que este fluxo E2E valida de ponta a ponta)
233
- - **Pré-condições**: (estado inicial do sistema)
234
- - **Passos**:
235
- 1. Cliente envia request X
236
- 2. Sistema processa e retorna Y
237
- 3. Verificar estado do banco
238
- - **Validações**: (assertions sobre dados e estado final)
239
-
240
- ### 14.4 Cenários de Erro
241
-
242
- | Cenário | CA | Objetivo | Trigger | Código/Status | Log Esperado |
243
- |---------|----|----------|---------|---------------|-------------|
244
- | Dados duplicados | CA-02 | Verificar que [constraint] impede [operação] e retorna erro adequado | Insert duplicado | [erro conflito] | "registro já existe..." |
245
- | Recurso inexistente | CA-05 | Verificar que acesso a [recurso] inexistente retorna [código] sem expor dados internos | ID não encontrado | [erro not found] | "não encontrado..." |
246
-
247
- ---
248
-
249
- ## 15. Arquivos Envolvidos e Ações
250
-
251
- ### 15.1 Arquivos a Criar
252
-
253
- | Arquivo | Descrição | Camada |
254
- |---------|-----------|--------|
255
- | | | |
256
-
257
- ### 15.2 Arquivos a Modificar
258
-
259
- | Arquivo | Modificação | Motivo |
260
- |---------|------------|--------|
261
- | | | |
262
-
263
- ### 15.3 Arquivos de Referência (somente leitura)
264
-
265
- | Arquivo | Motivo da Consulta |
266
- |---------|-------------------|
267
- | | |
268
-
269
- <!-- LLM-ONLY: Esta secao economiza tokens e scans durante a implementacao, pois lista exatamente quais arquivos serao impactados. -->
270
-
271
- ---
272
-
273
- ## 16. Checklist Final
274
-
275
- - [ ] SPEC_TECH cobre todo o PRD
276
- - [ ] Resumo técnico claro e objetivo (seção 2)
277
- - [ ] Arquitetura definida com componentes e interações (seção 3)
278
- - [ ] Estruturas de dados definidas (seção 4)
279
- - [ ] User Stories mapeadas para definições técnicas (seção 5.1)
280
- - [ ] Fluxos técnicos descritos com tratamento de erros (seção 6)
281
- - [ ] Endpoints mapeados com payloads e respostas (seção 7)
282
- - [ ] Telas e fluxos de frontend/mobile definidos (seção 8)
283
- - [ ] Banco local/cache especificado se aplicável (seção 9)
284
- - [ ] Dependências técnicas listadas (seção 10)
285
- - [ ] Requisitos não funcionais endereçados (seção 11)
286
- - [ ] Critérios técnicos de aceite definidos (seção 12)
287
- - [ ] Riscos técnicos identificados com mitigações (seção 13)
288
- - [ ] Estratégia de testes definida com rastreabilidade CA→testes no topo (seção 14)
289
- - [ ] Arquivos envolvidos listados — criar, modificar, referência (seção 15)
290
- - [ ] Pronto para geração das TASKS
1
+ # SPEC_TECH -- Especificação Técnica
2
+
3
+ ## 1. Identificação
4
+ - **Feature/Projeto**:
5
+ - **Autor**:
6
+ - **Data**:
7
+ - **Versão**:
8
+ - **Status**: Draft | Refinando | Aprovado
9
+ - **PRD Relacionado**:
10
+
11
+ ---
12
+
13
+ ## 2. Resumo Técnico da Solução
14
+
15
+ (Visão geral do COMO será implementado. Descreva em 3-5 linhas a abordagem técnica escolhida, as principais decisões arquiteturais e o resultado técnico esperado.)
16
+
17
+ ---
18
+
19
+ ## 3. Arquitetura da Solução
20
+
21
+ ### 3.1 Visão Geral
22
+ (Diagrama ou descrição da arquitetura geral da solução. Como os componentes se conectam.)
23
+
24
+ ### 3.2 Componentes/Módulos
25
+ (Lista de componentes envolvidos com descrição da responsabilidade de cada um.)
26
+
27
+ | Componente | Responsabilidade | Camada |
28
+ |------------|-----------------|--------|
29
+ | | | |
30
+
31
+ ### 3.3 Interações entre componentes
32
+ (Descreva como os componentes se comunicam. Fluxo de dados entre camadas.)
33
+
34
+ ---
35
+
36
+ ## 4. Estruturas de Dados
37
+
38
+ ### 4.1 Models / DTOs
39
+ (Structs, tipos e modelos de domínio que serão criados ou modificados.)
40
+
41
+ ### 4.2 Entidades de Banco de Dados
42
+ (Tabelas, colunas, índices, constraints. Inclua SQL de migrações quando aplicável.)
43
+
44
+ ### 4.3 Schemas adicionais
45
+ (Protocol Buffers, mensagens gRPC, schemas de validação ou outros formatos de dados.)
46
+
47
+ ---
48
+
49
+ ## 5. Regras Técnicas de Negócio
50
+
51
+ (Implementação técnica das regras definidas no PRD. Cada regra do PRD deve ter uma definição técnica correspondente.)
52
+
53
+ ### 5.1 Mapeamento de User Stories para Definições Técnicas
54
+
55
+ | User Story (PRD) | Definição Técnica | Componentes Envolvidos |
56
+ |------------------|-------------------|----------------------|
57
+ | US-01 | | |
58
+ | US-02 | | |
59
+
60
+ <!-- LLM-ONLY: Cada user story do PRD deve ter pelo menos uma definicao tecnica correspondente. Isso garante rastreabilidade completa entre o PRD e a especificacao tecnica. -->
61
+
62
+ ---
63
+
64
+ ## 6. Fluxos Técnicos
65
+
66
+ ### 6.1 Fluxo Principal (técnico)
67
+ (Sequência de chamadas, processamento e respostas do fluxo principal. Descreva camada por camada.)
68
+
69
+ ### 6.2 Fluxos Alternativos
70
+ (Variações do fluxo principal: dados opcionais, caminhos condicionais, etc.)
71
+
72
+ ### 6.3 Tratamento de Erros
73
+ (Como erros serão tratados em cada camada. Mapeamento de erros de negócio para códigos de status.)
74
+
75
+ | Erro de Negócio | Código de Status | Mensagem | Camada de Origem |
76
+ |----------------|-----------------|----------|-----------------|
77
+ | | | | |
78
+
79
+ ---
80
+
81
+ ## 7. APIs / Endpoints
82
+
83
+ ### 7.1 Endpoints Backend
84
+
85
+ | Ação | Método | Rota | Payload | Resposta Esperada |
86
+ |------|--------|------|---------|-------------------|
87
+ | | | | | |
88
+
89
+ ### 7.2 Erros e Códigos de Status
90
+
91
+ | Código | Situação | Mensagem |
92
+ |--------|----------|----------|
93
+ | | | |
94
+
95
+ ---
96
+
97
+ ## 8. Frontend / Mobile
98
+
99
+ ### 8.1 Telas
100
+ (Telas envolvidas, layouts e componentes visuais.)
101
+
102
+ ### 8.2 Estados e Gerência de Estado
103
+ (Gerenciamento de estado: loading, success, error, empty. Solução de state management.)
104
+
105
+ ### 8.3 Navegação
106
+ (Fluxo de navegação entre telas. Rotas e parâmetros.)
107
+
108
+ ### 8.4 Validações
109
+ (Validações de formulário, campos obrigatórios, máscaras, limites.)
110
+
111
+ ### 8.5 Comportamentos específicos
112
+ (Animações, transições, comportamentos offline, responsividade.)
113
+
114
+ ---
115
+
116
+ ## 9. Banco Local / Cache
117
+
118
+ ### 9.1 Estrutura de Tabelas
119
+ (Tabelas locais, colunas, tipos. Diferentes do banco remoto se aplicável.)
120
+
121
+ ### 9.2 Estratégia de Sincronização
122
+ (Como dados locais sincronizam com o backend. Conflitos, prioridade, frequência.)
123
+
124
+ ### 9.3 Estratégia de Versionamento
125
+ (Como lidar com mudanças de schema local. Migrações locais, rollback.)
126
+
127
+ ---
128
+
129
+ ## 10. Dependências Técnicas
130
+
131
+ | Tipo | Nome | Versão | Motivo |
132
+ |------|------|--------|--------|
133
+ | Pacote | | | |
134
+ | Biblioteca | | | |
135
+ | Ferramenta | | | |
136
+ | SDK | | | |
137
+
138
+ ---
139
+
140
+ ## 11. Requisitos Não Funcionais (COMO serão atendidos)
141
+
142
+ ### Segurança
143
+ (Autenticação, autorização, criptografia, validação de input, sanitização.)
144
+
145
+ ### Performance
146
+ (Metas de tempo de resposta, paginação, índices, cache, otimizações.)
147
+
148
+ ### Escalabilidade
149
+ (Limites conhecidos, estratégia de crescimento, gargalos potenciais.)
150
+
151
+ ### Observabilidade
152
+ (Logs estruturados, métricas, alertas, tracing distribuído.)
153
+
154
+ ### Resiliência
155
+ (Tratamento de falhas, retry, circuit breaker, graceful degradation.)
156
+
157
+ ---
158
+
159
+ ## 12. Critérios Técnicos de Aceite
160
+
161
+ - [ ] Implementação cobre todas as regras do PRD
162
+ - [ ] Estruturas de dados criadas e funcionais
163
+ - [ ] Fluxos técnicos implementados e testados
164
+ - [ ] API funcionando conforme especificado
165
+ - [ ] Erros tratados em todas as camadas
166
+ - [ ] Logs/monitoramento implementados
167
+ - [ ] Validações aplicadas (input, negócio, dados)
168
+ - [ ] Código segue padrões e convenções do projeto
169
+
170
+ ---
171
+
172
+ ## 13. Riscos Técnicos
173
+
174
+ | Risco | Probabilidade | Impacto | Mitigação |
175
+ |-------|--------------|---------|-----------|
176
+ | | | | |
177
+
178
+ ---
179
+
180
+ ## 14. Estratégia de Testes
181
+
182
+ > **Resumo**: X casos de teste | Unitários: Y | Integração: Z | E2E: W
183
+ > **Padrão**: [framework de teste, padrão de mock, convenção de nomes]
184
+
185
+ ### Rastreabilidade: Critérios de Aceite → Testes
186
+
187
+ | CA (PRD) | Descrição Resumida | Testes |
188
+ |----------|-------------------|--------|
189
+ | CA-01 | (descrição curta do CA no PRD) | CT-01, CT-10, CT-20, CT-30 |
190
+ | CA-02 | (descrição curta do CA no PRD) | CT-02, CT-22 |
191
+
192
+ <!-- LLM-ONLY: Cada CA-XX do PRD deve ter pelo menos um teste correspondente. Esta tabela deve ser preenchida PRIMEIRO — guia toda a estrategia. -->
193
+
194
+ ---
195
+
196
+ ### 14.1 Testes Unitários
197
+
198
+ <!-- LLM-ONLY: Coluna "Objetivo": Descreva em 1 frase O QUE o teste valida e POR QUE importa. Use o padrao: Verbo + comportamento especifico + condicao. Exemplo: "Verificar que apenas categorias com ativo=1 sao retornadas, ordenadas pelo campo 'ordem'". NAO repita o nome do teste — o objetivo deve dar contexto que o nome sozinho nao da. -->
199
+
200
+ #### Service: [NomeService] (`arquivo_test.go`)
201
+
202
+ Mock: [interfaces mockadas]
203
+
204
+ | CT | Teste | CA | Objetivo | Input | Expected | Mock |
205
+ |----|-------|----|----------|-------|----------|------|
206
+ | CT-01 | TestMetodo_Sucesso | CA-01 | Verificar que [comportamento esperado] quando [condição do cenário] | dados válidos | resultado esperado | repo retorna dados |
207
+ | CT-02 | TestMetodo_ErroValidacao | CA-03 | Verificar que [erro específico] é retornado quando [condição inválida] | dados inválidos | ErrEspecifico | — |
208
+
209
+ #### Apresentação: [NomeHandler] (`arquivo_test.go`)
210
+
211
+ Mock: [interfaces mockadas]
212
+
213
+ | CT | Teste | CA | Objetivo | Input | Expected | Mock |
214
+ |----|-------|----|----------|-------|----------|------|
215
+ | CT-10 | TestHandler_Sucesso | CA-01 | Verificar que handler converte [modelo domínio] para [formato response] corretamente | request válido | response proto | service retorna sucesso |
216
+
217
+ ### 14.2 Testes de Integração
218
+
219
+ #### [CamadaA + CamadaB] (`arquivo_test.go`)
220
+
221
+ Setup: [banco in-memory, migrações, fixtures]
222
+
223
+ | CT | Teste | CA | Objetivo | Fluxo | Validação |
224
+ |----|-------|----|----------|-------|-----------|
225
+ | CT-20 | TestIntegracao_CRUD | CA-01 | Verificar que dados persistidos são recuperados integralmente via [camada] | Create → Get | dados consistentes |
226
+ | CT-22 | TestIntegracao_Unique | CA-02 | Verificar que constraint unique impede duplicação de [campo] | Insert duplicado | erro constraint |
227
+
228
+ ### 14.3 Testes End-to-End (E2E)
229
+
230
+ #### Fluxo: [Nome do Fluxo Crítico] (CT-30)
231
+ - **CA**: CA-01, CA-03, CA-06
232
+ - **Objetivo**: (1 frase descrevendo o que este fluxo E2E valida de ponta a ponta)
233
+ - **Pré-condições**: (estado inicial do sistema)
234
+ - **Passos**:
235
+ 1. Cliente envia request X
236
+ 2. Sistema processa e retorna Y
237
+ 3. Verificar estado do banco
238
+ - **Validações**: (assertions sobre dados e estado final)
239
+
240
+ ### 14.4 Cenários de Erro
241
+
242
+ | Cenário | CA | Objetivo | Trigger | Código/Status | Log Esperado |
243
+ |---------|----|----------|---------|---------------|-------------|
244
+ | Dados duplicados | CA-02 | Verificar que [constraint] impede [operação] e retorna erro adequado | Insert duplicado | [erro conflito] | "registro já existe..." |
245
+ | Recurso inexistente | CA-05 | Verificar que acesso a [recurso] inexistente retorna [código] sem expor dados internos | ID não encontrado | [erro not found] | "não encontrado..." |
246
+
247
+ ---
248
+
249
+ ## 15. Arquivos Envolvidos e Ações
250
+
251
+ ### 15.1 Arquivos a Criar
252
+
253
+ | Arquivo | Descrição | Camada |
254
+ |---------|-----------|--------|
255
+ | | | |
256
+
257
+ ### 15.2 Arquivos a Modificar
258
+
259
+ | Arquivo | Modificação | Motivo |
260
+ |---------|------------|--------|
261
+ | | | |
262
+
263
+ ### 15.3 Arquivos de Referência (somente leitura)
264
+
265
+ | Arquivo | Motivo da Consulta |
266
+ |---------|-------------------|
267
+ | | |
268
+
269
+ <!-- LLM-ONLY: Esta secao economiza tokens e scans durante a implementacao, pois lista exatamente quais arquivos serao impactados. -->
270
+
271
+ ---
272
+
273
+ ## 16. Checklist Final
274
+
275
+ - [ ] SPEC_TECH cobre todo o PRD
276
+ - [ ] Resumo técnico claro e objetivo (seção 2)
277
+ - [ ] Arquitetura definida com componentes e interações (seção 3)
278
+ - [ ] Estruturas de dados definidas (seção 4)
279
+ - [ ] User Stories mapeadas para definições técnicas (seção 5.1)
280
+ - [ ] Fluxos técnicos descritos com tratamento de erros (seção 6)
281
+ - [ ] Endpoints mapeados com payloads e respostas (seção 7)
282
+ - [ ] Telas e fluxos de frontend/mobile definidos (seção 8)
283
+ - [ ] Banco local/cache especificado se aplicável (seção 9)
284
+ - [ ] Dependências técnicas listadas (seção 10)
285
+ - [ ] Requisitos não funcionais endereçados (seção 11)
286
+ - [ ] Critérios técnicos de aceite definidos (seção 12)
287
+ - [ ] Riscos técnicos identificados com mitigações (seção 13)
288
+ - [ ] Estratégia de testes definida com rastreabilidade CA→testes no topo (seção 14)
289
+ - [ ] Arquivos envolvidos listados — criar, modificar, referência (seção 15)
290
+ - [ ] Pronto para geração das TASKS
@@ -1,23 +1,23 @@
1
- # TECH DIRECTION (Opcional)
2
-
3
- > Direcionamento técnico inicial para a feature. Serve como ponto de partida para o SPEC_TECH, não como decisão final.
4
- > O Arquiteto (tech-spec-expert) pode complementar, ajustar ou questionar qualquer item aqui.
5
-
6
- ## Decisões técnicas já tomadas
7
- - (ex: Usar JWT com refresh token para autenticação)
8
- - (ex: Criar gateway separado para integração externa)
9
-
10
- ## Tecnologias/Libs sugeridas
11
- - (ex: biblioteca X para integração com serviço Y)
12
- - (ex: framework Z para testes)
13
-
14
- ## Padrões ou abordagens preferidas
15
- - (ex: Seguir o pattern Gateway já usado no projeto)
16
- - (ex: Implementar como CQRS)
17
-
18
- ## Restrições técnicas
19
- - (ex: Precisa ser stateless para rodar em k8s)
20
- - (ex: Não temos message broker disponível)
21
-
22
- ## Observações
23
- - (qualquer contexto técnico relevante que o arquiteto deve considerar)
1
+ # TECH DIRECTION (Opcional)
2
+
3
+ > Direcionamento técnico inicial para a feature. Serve como ponto de partida para o SPEC_TECH, não como decisão final.
4
+ > O Arquiteto (tech-spec-expert) pode complementar, ajustar ou questionar qualquer item aqui.
5
+
6
+ ## Decisões técnicas já tomadas
7
+ - (ex: Usar JWT com refresh token para autenticação)
8
+ - (ex: Criar gateway separado para integração externa)
9
+
10
+ ## Tecnologias/Libs sugeridas
11
+ - (ex: biblioteca X para integração com serviço Y)
12
+ - (ex: framework Z para testes)
13
+
14
+ ## Padrões ou abordagens preferidas
15
+ - (ex: Seguir o pattern Gateway já usado no projeto)
16
+ - (ex: Implementar como CQRS)
17
+
18
+ ## Restrições técnicas
19
+ - (ex: Precisa ser stateless para rodar em k8s)
20
+ - (ex: Não temos message broker disponível)
21
+
22
+ ## Observações
23
+ - (qualquer contexto técnico relevante que o arquiteto deve considerar)