@maestro-ai/cli 1.1.0 → 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.
- package/README.md +84 -54
- package/content/guides/fases-mapeamento.md +34 -0
- package/content/guides/guide-brainstorm.md +38 -0
- package/content/guides/guide-orquestracao.md +45 -0
- package/content/guides/guide-testes.md +51 -0
- package/content/guides/guide-troubleshooting.md +43 -0
- package/content/guides/guide-validacao.md +50 -0
- package/content/guides/internal/automated-events.md +27 -0
- package/content/guides/internal/automated-map.md +56 -0
- package/content/guides/internal/automated-stitch.md +51 -0
- package/content/guides/internal/automated-system.md +46 -0
- package/content/guides/mapa-sistema.md +86 -0
- package/content/guides/multi-ide.md +32 -0
- package/content/guides/playbook-orquestrador.md +45 -0
- package/content/guides/workflows-avancados.md +62 -0
- package/content/rules/GEMINI.md +70 -762
- package/content/rules/RULES.md +71 -761
- package/content/rules/complexity-rules.md +43 -0
- package/content/rules/quality-gates.md +55 -0
- package/content/rules/security-rules.md +40 -0
- package/content/rules/structure-rules.md +63 -0
- package/content/rules/validation-rules.md +56 -0
- package/content/templates/estado-template.json +73 -0
- package/content/workflows/00-maestro.md +78 -0
- package/content/workflows/01-iniciar-projeto.md +59 -0
- package/content/workflows/02-avancar-fase.md +72 -0
- package/content/workflows/03-continuar-fase.md +64 -0
- package/content/workflows/04-implementar-historia.md +64 -0
- package/content/workflows/05-nova-feature.md +39 -0
- package/content/workflows/06-corrigir-bug.md +34 -0
- package/content/workflows/07-refatorar-codigo.md +34 -0
- package/dist/commands/init.d.ts +2 -2
- package/dist/commands/init.js +89 -76
- package/dist/index.js +94 -5
- package/package.json +10 -4
- package/content/workflows/README-MCP.md +0 -363
- package/content/workflows/brainstorm.md +0 -113
- package/content/workflows/create.md +0 -59
- package/content/workflows/debug.md +0 -103
- package/content/workflows/enhance.md +0 -63
- package/content/workflows/mcp-debug.md +0 -506
- package/content/workflows/mcp-feature.md +0 -385
- package/content/workflows/mcp-gate.md +0 -413
- package/content/workflows/mcp-next.md +0 -388
- package/content/workflows/mcp-refactor.md +0 -600
- package/content/workflows/mcp-start.md +0 -304
- package/content/workflows/mcp-status.md +0 -400
- package/content/workflows/orchestrate.md +0 -237
- package/content/workflows/plan.md +0 -89
- package/content/workflows/preview.md +0 -81
- package/content/workflows/status.md +0 -86
- package/content/workflows/test.md +0 -144
- package/content/workflows/ui-ux-pro-max.md +0 -296
- /package/content/workflows/{deploy.md → 08-deploy-projeto.md} +0 -0
|
@@ -1,506 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Correção de bugs com fluxo estruturado (Reprodução → Análise → Fix → Regressão)
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# /mcp-debug - Correção de Bug MCP
|
|
6
|
-
|
|
7
|
-
$ARGUMENTS
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Objetivo
|
|
12
|
-
|
|
13
|
-
Corrigir bugs de forma estruturada usando fluxo de 4 fases do MCP Maestro, com análise de causa raiz e testes de regressão.
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Quando Usar
|
|
18
|
-
|
|
19
|
-
- Bug reportado em produção ou desenvolvimento
|
|
20
|
-
- Comportamento inesperado que precisa investigação
|
|
21
|
-
- Erro que requer análise sistemática
|
|
22
|
-
|
|
23
|
-
**NÃO usar para:**
|
|
24
|
-
- Nova funcionalidade → Use `/mcp-feature`
|
|
25
|
-
- Refatoração de código → Use `/mcp-refactor`
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Fluxo de 4 Fases
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
1. Reprodução do Bug
|
|
33
|
-
↓
|
|
34
|
-
2. Análise de Causa Raiz
|
|
35
|
-
↓
|
|
36
|
-
3. Fix + Testes de Regressão
|
|
37
|
-
↓
|
|
38
|
-
4. Deploy
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
## Execução
|
|
44
|
-
|
|
45
|
-
### Passo 1: Coleta de Informações
|
|
46
|
-
|
|
47
|
-
**Perguntar ao usuário:**
|
|
48
|
-
|
|
49
|
-
```markdown
|
|
50
|
-
🐛 **Correção de Bug**
|
|
51
|
-
|
|
52
|
-
1. Descreva o bug:
|
|
53
|
-
[Exemplo: Pedido duplicado ao clicar rapidamente no botão "Finalizar"]
|
|
54
|
-
|
|
55
|
-
2. Severidade do bug:
|
|
56
|
-
- **critica**: Sistema inoperante, perda de dados
|
|
57
|
-
- **alta**: Feature principal não funciona
|
|
58
|
-
- **media**: Feature secundária afetada
|
|
59
|
-
- **baixa**: Cosmético, sem impacto funcional
|
|
60
|
-
|
|
61
|
-
Escolha: [critica/alta/media/baixa]
|
|
62
|
-
|
|
63
|
-
3. (Opcional) Como reproduzir:
|
|
64
|
-
[Passos para reproduzir o bug]
|
|
65
|
-
|
|
66
|
-
4. (Opcional) Stack trace ou logs:
|
|
67
|
-
[Cole aqui se disponível]
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
### Passo 2: Iniciar Fluxo de Debugging
|
|
73
|
-
|
|
74
|
-
```typescript
|
|
75
|
-
await mcp_maestro_corrigir_bug({
|
|
76
|
-
descricao: "[descrição fornecida]",
|
|
77
|
-
severidade: "[critica/alta/media/baixa]",
|
|
78
|
-
ticket_id: "[opcional: JIRA-123]"
|
|
79
|
-
});
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
**MCP cria contexto de bug e retorna:**
|
|
83
|
-
|
|
84
|
-
```json
|
|
85
|
-
{
|
|
86
|
-
"bug_id": "BUG-001",
|
|
87
|
-
"fases": [
|
|
88
|
-
"Reprodução",
|
|
89
|
-
"Análise de Causa Raiz",
|
|
90
|
-
"Fix + Regressão",
|
|
91
|
-
"Deploy"
|
|
92
|
-
],
|
|
93
|
-
"fase_atual": 1,
|
|
94
|
-
"prioridade": "[baseada na severidade]"
|
|
95
|
-
}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
---
|
|
99
|
-
|
|
100
|
-
### Passo 3: Fase 1 - Reprodução do Bug
|
|
101
|
-
|
|
102
|
-
**Apresentar:**
|
|
103
|
-
|
|
104
|
-
```markdown
|
|
105
|
-
✅ **Fluxo de Debugging Iniciado** (BUG-001)
|
|
106
|
-
🚨 **Severidade:** [critica/alta/media/baixa]
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
🎯 **Fase 1/4: Reprodução do Bug**
|
|
111
|
-
🤖 **Especialista:** Debugging e Troubleshooting
|
|
112
|
-
|
|
113
|
-
## Reprodução Sistemática
|
|
114
|
-
|
|
115
|
-
Vamos reproduzir o bug de forma controlada:
|
|
116
|
-
|
|
117
|
-
1. **Ambiente**
|
|
118
|
-
- Onde ocorre: [dev/staging/prod]
|
|
119
|
-
- Versão: [commit/tag]
|
|
120
|
-
- Browser/Device: [se aplicável]
|
|
121
|
-
|
|
122
|
-
2. **Passos para Reproduzir**
|
|
123
|
-
1. [Passo 1]
|
|
124
|
-
2. [Passo 2]
|
|
125
|
-
3. [Passo 3]
|
|
126
|
-
|
|
127
|
-
3. **Comportamento Esperado**
|
|
128
|
-
- [O que deveria acontecer]
|
|
129
|
-
|
|
130
|
-
4. **Comportamento Atual**
|
|
131
|
-
- [O que está acontecendo]
|
|
132
|
-
|
|
133
|
-
5. **Evidências**
|
|
134
|
-
- Screenshots: [urls se disponível]
|
|
135
|
-
- Logs: [trechos relevantes]
|
|
136
|
-
- Network: [requests falhando]
|
|
137
|
-
|
|
138
|
-
Conseguiu reproduzir o bug? (S/N)
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
### Passo 4: Fase 2 - Análise de Causa Raiz
|
|
144
|
-
|
|
145
|
-
**Carregar especialista de Debugging:**
|
|
146
|
-
|
|
147
|
-
```typescript
|
|
148
|
-
const especialista = await fetch('maestro://especialista/debugging-troubleshooting');
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
**Apresentar:**
|
|
152
|
-
|
|
153
|
-
```markdown
|
|
154
|
-
🎯 **Fase 2/4: Análise de Causa Raiz**
|
|
155
|
-
|
|
156
|
-
## Investigação Sistemática
|
|
157
|
-
|
|
158
|
-
### Hipóteses Possíveis
|
|
159
|
-
|
|
160
|
-
Baseado nos sintomas, lista de causas prováveis:
|
|
161
|
-
|
|
162
|
-
1. ❓ **[Hipótese 1 - Mais provável]**
|
|
163
|
-
- Evidência: [log/código que apoia]
|
|
164
|
-
- Como testar: [validação]
|
|
165
|
-
|
|
166
|
-
2. ❓ **[Hipótese 2]**
|
|
167
|
-
- Evidência: [...]
|
|
168
|
-
- Como testar: [...]
|
|
169
|
-
|
|
170
|
-
3. ❓ **[Hipótese 3 - Menos provável]**
|
|
171
|
-
- Evidência: [...]
|
|
172
|
-
- Como testar: [...]
|
|
173
|
-
|
|
174
|
-
### Análise de Código
|
|
175
|
-
|
|
176
|
-
Arquivos suspeitos:
|
|
177
|
-
- `[arquivo1.ts]` - [motivo]
|
|
178
|
-
- `[arquivo2.ts]` - [motivo]
|
|
179
|
-
|
|
180
|
-
Vamos investigar a hipótese 1. [Análise detalhada do código]
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
**Processo de eliminação:**
|
|
184
|
-
|
|
185
|
-
```markdown
|
|
186
|
-
**Testando Hipótese 1:** [descrição]
|
|
187
|
-
|
|
188
|
-
[Análise do código/logs]
|
|
189
|
-
|
|
190
|
-
**Resultado:** ✅ Confirmada / ❌ Descartada
|
|
191
|
-
|
|
192
|
-
---
|
|
193
|
-
|
|
194
|
-
🎯 **Causa Raiz Identificada:**
|
|
195
|
-
|
|
196
|
-
[Explicação detalhada do problema]
|
|
197
|
-
|
|
198
|
-
**Por que aconteceu:**
|
|
199
|
-
- [Motivo 1]
|
|
200
|
-
- [Motivo 2]
|
|
201
|
-
|
|
202
|
-
**Onde está o bug:**
|
|
203
|
-
- Arquivo: `[caminho/arquivo.ts]`
|
|
204
|
-
- Linha: [numero]
|
|
205
|
-
- Função: `[nomeFuncao]`
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
---
|
|
209
|
-
|
|
210
|
-
### Passo 5: Fase 3 - Fix + Testes de Regressão
|
|
211
|
-
|
|
212
|
-
**Apresentar:**
|
|
213
|
-
|
|
214
|
-
```markdown
|
|
215
|
-
🎯 **Fase 3/4: Fix + Testes de Regressão**
|
|
216
|
-
|
|
217
|
-
## Correção Proposta
|
|
218
|
-
|
|
219
|
-
```[linguagem]
|
|
220
|
-
// ❌ ANTES (com bug)
|
|
221
|
-
[código com problema]
|
|
222
|
-
|
|
223
|
-
// ✅ DEPOIS (corrigido)
|
|
224
|
-
[código corrigido]
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
**Explicação da correção:**
|
|
228
|
-
[Por que isso resolve o problema]
|
|
229
|
-
|
|
230
|
-
---
|
|
231
|
-
|
|
232
|
-
## Testes de Regressão
|
|
233
|
-
|
|
234
|
-
Para garantir que o fix funciona E não quebra nada:
|
|
235
|
-
|
|
236
|
-
### 1. Teste Unitário (Novo)
|
|
237
|
-
|
|
238
|
-
```[linguagem]
|
|
239
|
-
describe('[NomeDaFuncao]', () => {
|
|
240
|
-
it('should [comportamento esperado]', () => {
|
|
241
|
-
// Arrange
|
|
242
|
-
[setup]
|
|
243
|
-
|
|
244
|
-
// Act
|
|
245
|
-
[execução]
|
|
246
|
-
|
|
247
|
-
// Assert
|
|
248
|
-
[validação]
|
|
249
|
-
});
|
|
250
|
-
|
|
251
|
-
it('should not [regressão possível]', () => {
|
|
252
|
-
// Testa efeito colateral
|
|
253
|
-
});
|
|
254
|
-
});
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
### 2. Teste de Integração
|
|
258
|
-
|
|
259
|
-
[Cenário E2E que valida o fix]
|
|
260
|
-
|
|
261
|
-
### 3. Validação Manual
|
|
262
|
-
|
|
263
|
-
Passos para testar manualmente:
|
|
264
|
-
1. [Passo 1]
|
|
265
|
-
2. [Passo 2]
|
|
266
|
-
3. ✅ [Resultado esperado]
|
|
267
|
-
|
|
268
|
-
---
|
|
269
|
-
|
|
270
|
-
Implementar correção e rodar testes? (S/N)
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
|
|
275
|
-
### Passo 6: Fase 4 - Deploy
|
|
276
|
-
|
|
277
|
-
**Coordenar com `/deploy`:**
|
|
278
|
-
|
|
279
|
-
```markdown
|
|
280
|
-
🎯 **Fase 4/4: Deploy**
|
|
281
|
-
|
|
282
|
-
## Estratégia de Deploy
|
|
283
|
-
|
|
284
|
-
**Severidade: [critica/alta/media/baixa]**
|
|
285
|
-
|
|
286
|
-
### Se Crítica:
|
|
287
|
-
- 🚨 Hotfix imediato
|
|
288
|
-
- Deploy direto em prod após validação em staging
|
|
289
|
-
- Rollback plan pronto
|
|
290
|
-
|
|
291
|
-
### Se Alta:
|
|
292
|
-
- Deploy em staging → validação → prod
|
|
293
|
-
- Comunicar stakeholders
|
|
294
|
-
|
|
295
|
-
### Se Média/Baixa:
|
|
296
|
-
- Incluir no próximo release
|
|
297
|
-
- Documentar no CHANGELOG
|
|
298
|
-
|
|
299
|
-
---
|
|
300
|
-
|
|
301
|
-
**Checklist Pré-Deploy:**
|
|
302
|
-
- [ ] Fix implementado
|
|
303
|
-
- [ ] Testes unitários passando
|
|
304
|
-
- [ ] Testes de regressão passando
|
|
305
|
-
- [ ] Code review aprovado
|
|
306
|
-
- [ ] Validado em staging
|
|
307
|
-
|
|
308
|
-
Executar deploy? Use `/deploy [ambiente]`
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
---
|
|
312
|
-
|
|
313
|
-
## Exemplos de Uso
|
|
314
|
-
|
|
315
|
-
### Exemplo 1: Bug Crítico (Duplicação de Pedido)
|
|
316
|
-
|
|
317
|
-
```
|
|
318
|
-
User: /mcp-debug
|
|
319
|
-
|
|
320
|
-
AI: Descreva o bug:
|
|
321
|
-
|
|
322
|
-
User: Pedido duplicado ao clicar rapidamente no botão Finalizar
|
|
323
|
-
|
|
324
|
-
AI: Severidade?
|
|
325
|
-
|
|
326
|
-
User: critica
|
|
327
|
-
|
|
328
|
-
AI: ✅ Fluxo iniciado (BUG-001) - Severidade CRÍTICA
|
|
329
|
-
|
|
330
|
-
🎯 Fase 1: Reprodução
|
|
331
|
-
|
|
332
|
-
Vamos reproduzir de forma controlada:
|
|
333
|
-
1. Criar pedido
|
|
334
|
-
2. Clicar rapidamente 2x em "Finalizar"
|
|
335
|
-
3. Verificar banco de dados
|
|
336
|
-
|
|
337
|
-
Reproduzido ✅
|
|
338
|
-
|
|
339
|
-
[Avança para Fase 2]
|
|
340
|
-
|
|
341
|
-
🎯 Fase 2: Análise de Causa Raiz
|
|
342
|
-
|
|
343
|
-
Hipóteses:
|
|
344
|
-
1. ❓ Falta de debounce no botão (MAIS PROVÁVEL)
|
|
345
|
-
2. ❓ Falta de idempotência no endpoint
|
|
346
|
-
3. ❓ Race condition no banco
|
|
347
|
-
|
|
348
|
-
Analisando código de `CheckoutButton.tsx`...
|
|
349
|
-
|
|
350
|
-
🎯 Causa Raiz: Botão sem debounce + endpoint não idempotente
|
|
351
|
-
|
|
352
|
-
[Avança para Fase 3]
|
|
353
|
-
|
|
354
|
-
🎯 Fase 3: Fix
|
|
355
|
-
|
|
356
|
-
```typescript
|
|
357
|
-
// ❌ ANTES
|
|
358
|
-
<button onClick={handleCheckout}>Finalizar</button>
|
|
359
|
-
|
|
360
|
-
// ✅ DEPOIS
|
|
361
|
-
<button
|
|
362
|
-
onClick={debounce(handleCheckout, 300)}
|
|
363
|
-
disabled={isProcessing}
|
|
364
|
-
>
|
|
365
|
-
Finalizar
|
|
366
|
-
</button>
|
|
367
|
-
```
|
|
368
|
-
|
|
369
|
-
+ Adicionar idempotency key no backend
|
|
370
|
-
|
|
371
|
-
Testes criados ✅
|
|
372
|
-
|
|
373
|
-
[Avança para Fase 4]
|
|
374
|
-
|
|
375
|
-
🎯 Fase 4: Deploy
|
|
376
|
-
|
|
377
|
-
Severidade CRÍTICA → Hotfix imediato
|
|
378
|
-
|
|
379
|
-
Use: /deploy production --hotfix
|
|
380
|
-
```
|
|
381
|
-
|
|
382
|
-
### Exemplo 2: Bug de UI (Baixa Severidade)
|
|
383
|
-
|
|
384
|
-
```
|
|
385
|
-
User: /mcp-debug Botão de logout desalinhado no mobile
|
|
386
|
-
|
|
387
|
-
AI: Severidade?
|
|
388
|
-
|
|
389
|
-
User: baixa
|
|
390
|
-
|
|
391
|
-
AI: ✅ Fluxo iniciado (BUG-002) - Severidade BAIXA
|
|
392
|
-
|
|
393
|
-
Bug cosmético. Incluir no próximo release.
|
|
394
|
-
|
|
395
|
-
Fase 1: Reprodução ✅
|
|
396
|
-
Fase 2: CSS incorreto identificado
|
|
397
|
-
Fase 3: Fix aplicado
|
|
398
|
-
Fase 4: Agendar para próximo deploy
|
|
399
|
-
```
|
|
400
|
-
|
|
401
|
-
---
|
|
402
|
-
|
|
403
|
-
## Comandos Relacionados
|
|
404
|
-
|
|
405
|
-
```
|
|
406
|
-
/mcp-debug [descrição] → Inicia fluxo de debugging
|
|
407
|
-
/mcp-next → Avança entre fases
|
|
408
|
-
/deploy --hotfix → Deploy emergencial (bugs críticos)
|
|
409
|
-
```
|
|
410
|
-
|
|
411
|
-
---
|
|
412
|
-
|
|
413
|
-
## Estrutura de Arquivos Gerados
|
|
414
|
-
|
|
415
|
-
```
|
|
416
|
-
docs/
|
|
417
|
-
├── bugs/
|
|
418
|
-
│ └── BUG-001-pedido-duplicado/
|
|
419
|
-
│ ├── 01-reproducao.md
|
|
420
|
-
│ ├── 02-causa-raiz.md
|
|
421
|
-
│ ├── 03-fix-e-testes.md
|
|
422
|
-
│ └── 04-deploy-log.md
|
|
423
|
-
```
|
|
424
|
-
|
|
425
|
-
---
|
|
426
|
-
|
|
427
|
-
## Regras Críticas (Root Cause Analysis)
|
|
428
|
-
|
|
429
|
-
### ✅ SEMPRE:
|
|
430
|
-
|
|
431
|
-
1. Reproduzir bug ANTES de tentar corrigir
|
|
432
|
-
2. Fazer análise de causa raiz (não apenas sintomas)
|
|
433
|
-
3. Adicionar testes que capturam o bug
|
|
434
|
-
4. Validar em staging antes de prod (exceto hotfixes)
|
|
435
|
-
5. Documentar causa raiz para aprendizado
|
|
436
|
-
|
|
437
|
-
### ❌ NUNCA:
|
|
438
|
-
|
|
439
|
-
1. "Corrigir" sem entender a causa
|
|
440
|
-
2. Deploy de fix crítico sem testes
|
|
441
|
-
3. Assumir causa raiz sem evidências
|
|
442
|
-
4. Esquecer de testar efeitos colaterais
|
|
443
|
-
5. Deixar bug sem teste de regressão
|
|
444
|
-
|
|
445
|
-
---
|
|
446
|
-
|
|
447
|
-
## Matriz de Severidade → Ação
|
|
448
|
-
|
|
449
|
-
| Severidade | SLA | Deploy | Comunicação |
|
|
450
|
-
|------------|-----|--------|-------------|
|
|
451
|
-
| **Crítica** | 1h | Hotfix imediato | Stakeholders + usuários |
|
|
452
|
-
| **Alta** | 4h | Próximo deploy | Stakeholders |
|
|
453
|
-
| **Média** | 1-2 dias | Release agendado | Interno |
|
|
454
|
-
| **Baixa** | 1 semana | Quando conveniente | Changelog |
|
|
455
|
-
|
|
456
|
-
---
|
|
457
|
-
|
|
458
|
-
## Protocolo de Hotfix (Bugs Críticos)
|
|
459
|
-
|
|
460
|
-
```
|
|
461
|
-
1. Criar branch: hotfix/BUG-001-pedido-duplicado
|
|
462
|
-
2. Fix + testes
|
|
463
|
-
3. Deploy staging → validar
|
|
464
|
-
4. Deploy prod
|
|
465
|
-
5. Merge back to main
|
|
466
|
-
6. Post-mortem (se necessário)
|
|
467
|
-
```
|
|
468
|
-
|
|
469
|
-
---
|
|
470
|
-
|
|
471
|
-
## Troubleshooting
|
|
472
|
-
|
|
473
|
-
### Não Consigo Reproduzir
|
|
474
|
-
|
|
475
|
-
**Ação:**
|
|
476
|
-
|
|
477
|
-
```markdown
|
|
478
|
-
Se não conseguiu reproduzir:
|
|
479
|
-
|
|
480
|
-
1. **Coletar mais informações**
|
|
481
|
-
- Logs mais detalhados
|
|
482
|
-
- Request/Response headers
|
|
483
|
-
- Estado do banco no momento
|
|
484
|
-
|
|
485
|
-
2. **Testar em ambiente idêntico**
|
|
486
|
-
- Mesma versão
|
|
487
|
-
- Mesmos dados
|
|
488
|
-
- Mesmo browser/device
|
|
489
|
-
|
|
490
|
-
3. **Race condition?**
|
|
491
|
-
- Tentar com diferentes timings
|
|
492
|
-
- Usar ferramentas de slow-motion (Network throttling)
|
|
493
|
-
```
|
|
494
|
-
|
|
495
|
-
### Múltiplas Causas Possíveis
|
|
496
|
-
|
|
497
|
-
**Ação:**
|
|
498
|
-
|
|
499
|
-
```markdown
|
|
500
|
-
Se várias hipóteses igualmente prováveis:
|
|
501
|
-
|
|
502
|
-
1. Testar todas sistematicamente
|
|
503
|
-
2. Usar método de bisseção (git bisect)
|
|
504
|
-
3. Adicionar logs temporários
|
|
505
|
-
4. Pair programming com colega
|
|
506
|
-
```
|