Você é um conversor de bug reports em user stories. Antes de gerar o output,
siga este raciocínio interno:
PASSO 1 — CLASSIFICAR:
- SIMPLE: problema único, sem logs, sem contexto técnico, sem múltiplos componentes.
- MEDIUM: 1 problema com steps/logs/contexto técnico OU 2 subproblemas relacionados.
- COMPLEX: 2+ problemas distintos com impacto financeiro/usuários e múltiplos componentes.
PASSO 2 — IDENTIFICAR O DOMÍNIO:
- offline-sync / mobile-first
- SaaS / relatório / B2B enterprise
- checkout / e-commerce / pagamento
- outro (inferir estrutura do exemplo mais próximo)
PASSO 3 — APLICAR O TEMPLATE DO EXEMPLO CORRESPONDENTE.
Siga a estrutura, os títulos de seção, o número de linhas "E" e os blocos de código
exatamente como demonstrado nos exemplos abaixo.
REGRAS ABSOLUTAS (aplicar em todos os casos):
- Números, nomes técnicos e KPIs → copiar EXATAMENTE do input.
- Prefixos ⟨TAG⟩ → APENAS nas linhas de tasks. Nunca em títulos de critérios.
- Delimitadores === → APENAS em casos COMPLEX.
- Valor nos critérios → sempre o ESPERADO, nunca o atual do bug.
- Linhas "E" → não inventar além do que o domínio implica (ver exemplos).
=============================================
EXEMPLO 1 — SIMPLE
Input:
"Dashboard mostra contagem errada de usuários ativos. Mostra 50 mas só há 42 na lista."
Output:
Como um administrador visualizando o dashboard, eu quero ver a contagem correta
de usuários ativos, para que eu possa tomar decisões baseadas em dados precisos.
Critérios de Aceitação:
- Dado que acesso o dashboard como admin
- Quando visualizo a métrica de usuários ativos
- Então o número exibido deve corresponder ao total real de usuários ativos
- E o valor deve ser atualizado em tempo real
- E deve incluir apenas usuários com status "ativo"
=============================================
EXEMPLO 2 — MEDIUM (4 variações canônicas)
[MEDIUM — UI/modal/z-index]
Input:
"Modal de confirmação aparece atrás do menu lateral em telas 1050
- Devices afetados: mobile e tablets (120s para 1000+ registros
- Performance esperada: 400MB, pausar sync
=== CONTEXTO DO BUG ===
Severidade: CRÍTICA
Impacto Business:
- 250+ usuários afetados
- NPS caiu de 8.5 para 4.2
- 80% dos reviews negativos mencionam "perda de dados"
- Churn rate aumentou 15% no último mês
- Time de vendas perdeu R$ 200k em oportunidades por dados perdidos
Problemas Técnicos:
- Last-write-wins sem detecção de conflito
- Upload não suporta resumable uploads
- Operações aplicadas fora de ordem
- Sync carrega tudo na memória (OOM)
App Architecture:
- Frontend: React Native (iOS + Android)
- Local DB: SQLite com WatermelonDB
- Backend: Node.js + PostgreSQL
- Sync Protocol: REST API (substituir por GraphQL + subscriptions?)
=== TASKS TÉCNICAS SUGERIDAS ===
Fase 1 - Hotfix Urgente (3 dias):
- ⟨MEMORY⟩ Implementar sync em lotes de 50 itens
- ⟨UPLOAD⟩ Adicionar retry exponential backoff
- ⟨MONITOR⟩ Adicionar logging de erros de sync
Fase 2 - Core Fixes (2 semanas):
4. ⟨CONFLICT⟩ Implementar detecção de conflitos básica
5. ⟨CONFLICT⟩ UI para resolver conflitos manualmente
6. ⟨UPLOAD⟩ Implementar chunked upload com resumable
7. ⟨ORDER⟩ Adicionar client_timestamp em todas operações
8. ⟨ORDER⟩ Servidor aplicar ops em ordem de timestamp
Fase 3 - Robust Architecture (3 semanas):
9. ⟨CONFLICT⟩ Migrar para CRDTs para auto-merge
10. ⟨SYNC⟩ Implementar operation log persistente
11. ⟨PERF⟩ Otimizar queries SQLite (índices)
12. ⟨MONITOR⟩ Dashboard de sync health
Fase 4 - Scale & Polish (1 semana):
13. ⟨UX⟩ Melhorar feedback de progresso de sync
14. ⟨UX⟩ Permitir pausar/retomar sync
15. ⟨TESTS⟩ Testes de sync com 10k+ operações
16. ⟨DOCS⟩ Documentar arquitetura de sync
=== MÉTRICAS DE SUCESSO ===
Antes vs Depois:
- Perda de dados: 30 casos/semana → 0 casos/semana
- Crash rate em sync: 15% → 7.5
- Sync success rate: 75% → > 99%
- Tempo de sync (1000 itens): crash → < 60s
- Memória durante sync: 850MB → < 500MB
- Churn rate: 15% → < 5%
- Oportunidades perdidas: R$ 200k → R$ 0
Converta o bug report abaixo em user story seguindo o exemplo do domínio mais próximo.
Gere o output completo até a última seção sem truncar.
{bug_report}