Skip to content

Critérios de Aceite

Sport Tech Club - User Stories com Critérios de Aceite Completos

Convenções

Formato User Story

Como [persona],
Quero [ação/funcionalidade],
Para [benefício/valor]

Formato Critérios de Aceite (Gherkin)

gherkin
Scenario: Nome do cenário
  Given [contexto inicial]
  When [ação do usuário]
  Then [resultado esperado]

Story Points (Fibonacci)

PontosComplexidadeEstimativa
1Trivial< 2h
2Simples2-4h
3Médio4-8h
5Complexo1-2 dias
8Muito complexo2-3 dias
13Épico (dividir)3-5 dias

Epic 1: Autenticação e Acesso

US-AUTH-001: Cadastro de Usuário

Como visitante, Quero me cadastrar na plataforma, Para acessar as funcionalidades de reserva e jogos.

Story Points: 5 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Cadastro com dados válidos
  Given eu estou na página de cadastro
  When eu preencho nome "João Silva"
  And eu preencho email "joao@email.com"
  And eu preencho senha "Senha@123"
  And eu preencho confirmação de senha "Senha@123"
  And eu aceito os termos de uso
  And eu clico em "Criar conta"
  Then minha conta deve ser criada
  And eu devo ver mensagem "Conta criada! Verifique seu email"
  And eu devo receber email de confirmação

Scenario: Cadastro com email já existente
  Given existe usuário com email "joao@email.com"
  When eu tento cadastrar com mesmo email
  Then eu devo ver erro "Email já cadastrado"
  And devo ver link "Esqueceu sua senha?"

Scenario: Validação de senha fraca
  Given eu estou preenchendo o formulário
  When eu digito senha "123456"
  Then eu devo ver erro de validação
  And mensagem "Senha deve ter 8+ caracteres, maiúscula, número e especial"

Scenario: Termos não aceitos
  Given eu preenchi todos os dados
  When eu não marco aceite dos termos
  And eu clico em "Criar conta"
  Then eu devo ver erro "Você deve aceitar os termos"

Scenario: Email inválido
  Given eu estou no formulário de cadastro
  When eu preencho email "emailinvalido"
  Then eu devo ver erro "Email inválido"

Definition of Done

  • [ ] Testes unitários (>80% coverage)
  • [ ] Testes E2E passando
  • [ ] Integração com Keycloak funcionando
  • [ ] Email de confirmação sendo enviado
  • [ ] Code review aprovado
  • [ ] Documentação atualizada

Dependências

  • Keycloak configurado
  • SendGrid/SES configurado

US-AUTH-002: Login com Email/Senha

Como usuário cadastrado, Quero fazer login com email e senha, Para acessar minha conta.

Story Points: 3 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Login bem-sucedido
  Given eu tenho conta ativa com email "joao@email.com"
  When eu acesso página de login
  And eu preencho email "joao@email.com"
  And eu preencho senha correta
  And eu clico em "Entrar"
  Then eu devo ser autenticado
  And eu devo ser redirecionado para home
  And meu nome deve aparecer no menu

Scenario: Senha incorreta
  Given eu tenho conta ativa
  When eu preencho senha incorreta
  And eu clico em "Entrar"
  Then eu devo ver erro "Email ou senha incorretos"
  And contador de tentativas deve incrementar

Scenario: Conta bloqueada após 5 tentativas
  Given eu errei a senha 5 vezes
  When eu tento novamente
  Then eu devo ver "Conta bloqueada por 30 minutos"
  And eu devo receber email de segurança

Scenario: Lembrar de mim
  Given eu marco "Lembrar de mim"
  When eu faço login
  And eu fecho e abro o navegador
  Then eu devo continuar logado

Scenario: Email não verificado
  Given meu email não foi verificado
  When eu faço login
  Then eu devo ver alerta "Verifique seu email"
  And link para reenviar verificação

Definition of Done

  • [ ] Testes unitários (>80% coverage)
  • [ ] Testes E2E passando
  • [ ] Rate limiting implementado
  • [ ] Logs de auditoria funcionando
  • [ ] Code review aprovado

Dependências

  • US-AUTH-001

US-AUTH-003: Login Social (Google)

Como usuário, Quero fazer login com minha conta Google, Para acessar mais rapidamente sem criar nova senha.

Story Points: 5 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Primeiro login com Google
  Given eu não tenho conta na plataforma
  When eu clico em "Continuar com Google"
  And eu autorizo no popup do Google
  Then conta deve ser criada automaticamente
  And eu devo ser redirecionado para completar perfil
  And email deve vir pré-preenchido

Scenario: Login Google com conta existente
  Given eu já tenho conta com email do Google
  When eu faço login com Google
  Then contas devem ser vinculadas
  And eu devo acessar minha conta existente

Scenario: Cancelar autorização Google
  Given eu cliquei em "Continuar com Google"
  When eu cancelo no popup
  Then eu devo voltar para página de login
  And nenhuma conta deve ser criada

Scenario: Google retorna erro
  Given houve problema no Google
  When a autorização falha
  Then eu devo ver erro amigável
  And opção de tentar novamente

Definition of Done

  • [ ] OAuth Google configurado
  • [ ] Testes E2E passando
  • [ ] Vinculação de contas funcionando
  • [ ] Code review aprovado

Dependências

  • US-AUTH-001
  • Google OAuth credentials

US-AUTH-004: Recuperação de Senha

Como usuário que esqueceu a senha, Quero redefinir minha senha, Para recuperar acesso à minha conta.

Story Points: 3 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Solicitar redefinição
  Given eu esqueci minha senha
  When eu clico em "Esqueci minha senha"
  And eu informo meu email cadastrado
  And eu clico em "Enviar"
  Then eu devo ver "Link enviado para seu email"
  And eu devo receber email com link

Scenario: Link de redefinição válido
  Given eu recebi email de redefinição
  When eu clico no link dentro de 1 hora
  Then eu devo ver formulário de nova senha

Scenario: Link expirado
  Given passou mais de 1 hora
  When eu clico no link
  Then eu devo ver "Link expirado"
  And opção de solicitar novo link

Scenario: Nova senha válida
  Given eu estou no formulário de redefinição
  When eu preencho nova senha válida
  And eu confirmo a senha
  And eu clico em "Redefinir"
  Then minha senha deve ser alterada
  And eu devo ver "Senha alterada com sucesso"
  And todas as sessões devem ser encerradas

Scenario: Email não cadastrado
  Given eu informo email não cadastrado
  When eu solicito redefinição
  Then eu devo ver mensagem genérica (segurança)
  And nenhum email deve ser enviado

Definition of Done

  • [ ] Testes unitários passando
  • [ ] Link com token seguro
  • [ ] Expiração de 1 hora
  • [ ] Code review aprovado

Dependências

  • US-AUTH-001

US-AUTH-005: Configurar MFA

Como usuário preocupado com segurança, Quero ativar autenticação de dois fatores, Para proteger minha conta.

Story Points: 5 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Ativar MFA com app autenticador
  Given eu estou em Configurações > Segurança
  When eu clico em "Ativar MFA"
  Then eu devo ver QR code
  And instruções para escanear
  When eu informo código do app
  Then MFA deve ser ativado
  And eu devo receber códigos de backup

Scenario: Login com MFA ativo
  Given MFA está ativo na minha conta
  When eu faço login com email/senha
  Then eu devo ver tela de código MFA
  When eu informo código correto
  Then eu devo ser autenticado

Scenario: Código MFA incorreto
  Given eu estou na tela de MFA
  When eu informo código incorreto
  Then eu devo ver erro "Código inválido"
  And posso tentar novamente

Scenario: Usar código de backup
  Given eu perdi acesso ao app autenticador
  When eu clico em "Usar código de backup"
  And eu informo um código válido
  Then eu devo ser autenticado
  And código usado deve ser invalidado

Scenario: Desativar MFA
  Given MFA está ativo
  When eu clico em "Desativar MFA"
  And eu confirmo com minha senha
  Then MFA deve ser desativado

Definition of Done

  • [ ] TOTP implementado
  • [ ] Códigos de backup gerados
  • [ ] Testes E2E passando
  • [ ] Code review aprovado

Dependências

  • US-AUTH-002

US-AUTH-006: Gerenciar Perfil

Como usuário logado, Quero editar meus dados pessoais, Para manter meu perfil atualizado.

Story Points: 3 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Editar dados básicos
  Given eu estou logado
  When eu acesso "Meu Perfil"
  Then eu devo poder editar: nome, telefone, data de nascimento
  When eu salvo alterações
  Then dados devem ser atualizados
  And eu devo ver "Perfil atualizado"

Scenario: Upload de foto
  Given eu estou editando meu perfil
  When eu clico em "Alterar foto"
  And eu seleciono imagem válida (JPG/PNG, max 5MB)
  Then a foto deve ser enviada
  And preview deve aparecer
  When eu salvo
  Then nova foto deve ser minha foto de perfil

Scenario: Foto inválida
  Given eu tento fazer upload
  When o arquivo é maior que 5MB
  Or formato não é JPG/PNG
  Then eu devo ver erro apropriado

Scenario: Alterar senha
  Given eu quero alterar minha senha
  When eu informo senha atual
  And eu informo nova senha válida
  And eu confirmo nova senha
  Then senha deve ser alterada
  And eu devo fazer login novamente

Definition of Done

  • [ ] Upload de imagem funcionando
  • [ ] Validações implementadas
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-AUTH-002

US-AUTH-007: Logout

Como usuário logado, Quero fazer logout, Para encerrar minha sessão com segurança.

Story Points: 1 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Logout simples
  Given eu estou logado
  When eu clico em "Sair"
  Then minha sessão deve ser encerrada
  And eu devo ser redirecionado para login
  And meu token deve ser invalidado

Scenario: Logout de todos os dispositivos
  Given eu estou logado em múltiplos dispositivos
  When eu clico em "Sair de todos os dispositivos"
  And eu confirmo com minha senha
  Then todas as sessões devem ser encerradas
  And todos os tokens invalidados

Definition of Done

  • [ ] Token invalidado no backend
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-AUTH-002

US-AUTH-008: Verificar Email

Como novo usuário, Quero verificar meu email, Para confirmar minha identidade.

Story Points: 2 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Verificação bem-sucedida
  Given eu recebi email de verificação
  When eu clico no link
  Then meu email deve ser verificado
  And eu devo ver "Email verificado com sucesso"
  And eu devo ter acesso completo

Scenario: Reenviar verificação
  Given meu email não está verificado
  When eu clico em "Reenviar email"
  Then novo email deve ser enviado
  And eu devo ver "Email reenviado"

Scenario: Link de verificação expirado
  Given passou mais de 24 horas
  When eu clico no link
  Then eu devo ver "Link expirado"
  And opção de reenviar

Definition of Done

  • [ ] Email sendo enviado
  • [ ] Link com expiração
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-AUTH-001

US-AUTH-009: Preferências de Privacidade

Como usuário consciente sobre privacidade, Quero controlar minhas preferências de dados, Para gerenciar como meus dados são usados.

Story Points: 3 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Configurar visibilidade do perfil
  Given eu acesso Configurações > Privacidade
  Then eu devo poder definir:
    | Configuração | Opções |
    | Perfil público | Sim/Não |
    | Aparecer em rankings | Sim/Não |
    | Mostrar estatísticas | Sim/Não |
  When eu salvo
  Then preferências devem ser aplicadas

Scenario: Gerenciar comunicações
  Given eu estou nas preferências
  Then eu devo poder controlar:
    | Tipo | Opções |
    | Emails promocionais | Sim/Não |
    | Notificações push | Sim/Não |
    | SMS | Sim/Não |

Scenario: Exportar meus dados (LGPD)
  Given eu quero meus dados
  When eu clico em "Exportar dados"
  Then solicitação deve ser registrada
  And eu devo receber email quando pronto
  And arquivo deve conter todos meus dados

Scenario: Excluir minha conta (LGPD)
  Given eu quero excluir minha conta
  When eu clico em "Excluir conta"
  And eu confirmo com minha senha
  And eu aceito os termos de exclusão
  Then conta deve ser marcada para exclusão
  And eu devo ter 30 dias para cancelar
  And após 30 dias, dados devem ser anonimizados

Definition of Done

  • [ ] Preferências salvas corretamente
  • [ ] Exportação funcionando
  • [ ] Exclusão com período de carência
  • [ ] Logs de auditoria
  • [ ] Code review aprovado

Dependências

  • US-AUTH-006

US-AUTH-010: Gestão de Sessões

Como usuário preocupado com segurança, Quero ver e gerenciar minhas sessões ativas, Para identificar acessos não autorizados.

Story Points: 3 | Prioridade: Baixa

Critérios de Aceite

gherkin
Scenario: Ver sessões ativas
  Given eu acesso Segurança > Sessões
  Then eu devo ver lista de dispositivos conectados
  And cada um mostrando: dispositivo, localização, última atividade
  And sessão atual deve estar marcada

Scenario: Encerrar sessão específica
  Given eu vejo uma sessão suspeita
  When eu clico em "Encerrar sessão"
  Then aquela sessão deve ser invalidada
  And dispositivo será deslogado

Scenario: Alerta de novo login
  Given eu fiz login de novo dispositivo
  Then eu devo receber email de alerta
  And email deve conter detalhes do acesso
  And link para revogar acesso se não fui eu

Definition of Done

  • [ ] Lista de sessões funcionando
  • [ ] Encerramento de sessão
  • [ ] Alertas de login
  • [ ] Code review aprovado

Dependências

  • US-AUTH-002

Epic 2: Busca e Descoberta

US-SEARCH-001: Buscar Arenas

Como jogador, Quero buscar arenas próximas, Para encontrar um lugar para jogar.

Story Points: 5 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Busca por localização
  Given eu permiti acesso à localização
  When eu acesso a busca
  Then devo ver arenas ordenadas por proximidade
  And cada arena mostra: nome, distância, avaliação, esportes

Scenario: Busca por nome
  Given eu digito "Arena Beach" na busca
  When eu pressiono Enter
  Then devo ver arenas que contém "Beach" no nome
  And resultados destacam o termo buscado

Scenario: Filtrar por esporte
  Given eu quero jogar Beach Tennis
  When eu aplico filtro "Beach Tennis"
  Then devo ver apenas arenas com Beach Tennis
  And o filtro deve estar visualmente ativo

Scenario: Filtrar por características
  Given eu quero quadra coberta
  When eu aplico filtro "Coberta"
  Then devo ver apenas arenas com quadras cobertas

Scenario: Sem resultados
  Given eu busco algo que não existe
  Then devo ver "Nenhuma arena encontrada"
  And sugestões de busca alternativa

Definition of Done

  • [ ] Busca por texto funcionando
  • [ ] Filtros implementados
  • [ ] Geolocalização funcionando
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • Arenas cadastradas no sistema

US-SEARCH-002: Ver Detalhes da Arena

Como jogador, Quero ver detalhes de uma arena, Para decidir se quero reservar.

Story Points: 3 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Visualizar informações básicas
  Given eu clico em uma arena
  Then devo ver: nome, endereço, telefone, horários
  And galeria de fotos
  And mapa com localização
  And avaliação média

Scenario: Ver quadras disponíveis
  Given eu estou na página da arena
  When eu rolo até "Quadras"
  Then devo ver lista de quadras
  And cada uma mostra: nome, esporte, preço, status

Scenario: Ver avaliações
  Given eu clico na aba "Avaliações"
  Then devo ver avaliações de outros jogadores
  And cada uma mostra: nota, comentário, data, autor
  And média geral deve estar visível

Scenario: Navegar até a arena
  Given eu quero ir até a arena
  When eu clico em "Como chegar"
  Then devo abrir app de mapas com a rota

Definition of Done

  • [ ] Página de detalhes completa
  • [ ] Galeria de fotos
  • [ ] Avaliações funcionando
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-SEARCH-001

US-SEARCH-003: Ver Disponibilidade

Como jogador, Quero ver disponibilidade de quadras, Para escolher o melhor horário.

Story Points: 5 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Ver agenda do dia
  Given eu estou na página de uma arena
  When eu acesso "Disponibilidade"
  Then devo ver grade de horários
  And horários livres em verde
  And horários ocupados em vermelho
  And preços de cada horário

Scenario: Navegar entre dias
  Given eu estou vendo disponibilidade
  When eu clico em outro dia
  Then a grade deve atualizar
  And mostrar disponibilidade do dia selecionado

Scenario: Filtrar por quadra
  Given eu quero ver apenas uma quadra
  When eu seleciono "Quadra 1"
  Then devo ver apenas horários dessa quadra

Scenario: Ver detalhes do horário
  Given eu clico em um horário disponível
  Then devo ver: preço, duração, regras
  And botão "Reservar"

Definition of Done

  • [ ] Grade de horários visual
  • [ ] Atualização em tempo real
  • [ ] Filtros funcionando
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-SEARCH-002

US-SEARCH-004: Favoritar Arena

Como jogador frequente, Quero favoritar arenas, Para acessá-las rapidamente.

Story Points: 2 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Adicionar aos favoritos
  Given eu estou na página de uma arena
  When eu clico no ícone de coração
  Then a arena deve ser adicionada aos favoritos
  And o ícone deve ficar preenchido

Scenario: Ver meus favoritos
  Given eu tenho arenas favoritas
  When eu acesso "Meus Favoritos"
  Then devo ver lista das arenas favoritas
  And poder acessar rapidamente cada uma

Scenario: Remover dos favoritos
  Given uma arena está nos favoritos
  When eu clico no coração novamente
  Then ela deve ser removida dos favoritos

Definition of Done

  • [ ] Favoritos salvos por usuário
  • [ ] Lista de favoritos
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-AUTH-002
  • US-SEARCH-002

US-SEARCH-005: Busca por Mapa

Como jogador visual, Quero buscar arenas em um mapa, Para visualizar a distribuição geográfica.

Story Points: 5 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Ver mapa com arenas
  Given eu acesso a busca por mapa
  Then devo ver mapa centrado na minha localização
  And pins das arenas próximas
  And cada pin mostra: nome e avaliação

Scenario: Clicar em pin
  Given eu vejo pins no mapa
  When eu clico em um pin
  Then devo ver card resumido da arena
  And poder acessar detalhes

Scenario: Mover o mapa
  Given eu movo o mapa para outra região
  Then novos pins devem carregar
  And arenas daquela região devem aparecer

Definition of Done

  • [ ] Mapa funcionando (Google Maps/Mapbox)
  • [ ] Pins interativos
  • [ ] Performance otimizada
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-SEARCH-001
  • API de mapas configurada

US-SEARCH-006: Histórico de Buscas

Como jogador, Quero ver meu histórico de buscas, Para refazer buscas anteriores.

Story Points: 2 | Prioridade: Baixa

Critérios de Aceite

gherkin
Scenario: Ver buscas recentes
  Given eu fiz buscas anteriormente
  When eu acesso o campo de busca
  Then devo ver sugestões das últimas buscas

Scenario: Limpar histórico
  Given eu tenho histórico de buscas
  When eu clico em "Limpar histórico"
  Then o histórico deve ser apagado

Definition of Done

  • [ ] Histórico salvo localmente
  • [ ] Sugestões funcionando
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-SEARCH-001

US-SEARCH-007: Ordenação de Resultados

Como jogador, Quero ordenar resultados de busca, Para encontrar o que preciso mais rápido.

Story Points: 2 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Ordenar por distância
  Given eu tenho resultados de busca
  When eu seleciono "Ordenar por: Distância"
  Then resultados devem ser ordenados do mais próximo ao mais distante

Scenario: Ordenar por avaliação
  Given eu seleciono "Ordenar por: Avaliação"
  Then resultados devem mostrar melhores avaliações primeiro

Scenario: Ordenar por preço
  Given eu seleciono "Ordenar por: Preço"
  Then resultados devem mostrar mais baratos primeiro

Definition of Done

  • [ ] Ordenação implementada
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-SEARCH-001

US-SEARCH-008: Sugestões Personalizadas

Como jogador frequente, Quero receber sugestões personalizadas, Para descobrir novas arenas baseadas no meu perfil.

Story Points: 5 | Prioridade: Baixa

Critérios de Aceite

gherkin
Scenario: Sugestões baseadas em histórico
  Given eu frequento arenas de Beach Tennis
  When eu acesso "Descobrir"
  Then devo ver sugestões de arenas de Beach Tennis
  And que ainda não visitei

Scenario: Sugestões próximas
  Given minha localização habitual é Zona Sul
  Then sugestões devem priorizar Zona Sul
  E arenas com boas avaliações

Definition of Done

  • [ ] Algoritmo de recomendação
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-SEARCH-001
  • Histórico de reservas

Epic 3: Reservas

US-BOOK-001: Criar Reserva Simples

Como jogador, Quero reservar uma quadra, Para jogar em um horário específico.

Story Points: 8 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Reserva bem-sucedida
  Given eu estou logado
  And eu encontrei horário disponível
  When eu clico em "Reservar"
  And eu confirmo os dados
  And eu efetuo pagamento com sucesso
  Then reserva deve ser criada
  And status deve ser "Confirmada"
  And eu devo receber confirmação por email e push
  And horário deve ficar bloqueado

Scenario: Verificar detalhes antes de confirmar
  Given eu selecionei um horário
  Then devo ver resumo com:
    | Campo | Valor |
    | Data | 15/03/2024 |
    | Horário | 18:00 - 19:00 |
    | Quadra | Quadra 1 |
    | Valor | R$ 120,00 |

Scenario: Horário ficou indisponível
  Given eu selecionei um horário
  But outro usuário reservou antes
  When eu confirmo
  Then devo ver erro "Horário não mais disponível"
  And sugestões de horários alternativos

Scenario: Pagamento falhou
  Given eu confirmei a reserva
  When o pagamento é recusado
  Then reserva não deve ser criada
  And eu devo ver erro do pagamento
  And poder tentar outro método

Definition of Done

  • [ ] Fluxo de reserva completo
  • [ ] Integração com pagamento
  • [ ] Notificações funcionando
  • [ ] Concorrência tratada
  • [ ] Testes E2E passando
  • [ ] Code review aprovado

Dependências

  • US-SEARCH-003
  • US-PAY-001

US-BOOK-002: Cancelar Reserva

Como jogador com reserva, Quero cancelar minha reserva, Para liberar o horário caso não possa comparecer.

Story Points: 5 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Cancelamento com reembolso total
  Given eu tenho reserva para daqui a 48 horas
  When eu acesso "Minhas Reservas"
  And eu clico em "Cancelar"
  Then devo ver "Reembolso: 100%"
  When eu confirmo
  Then reserva deve ser cancelada
  And reembolso deve ser processado
  And horário deve ficar disponível

Scenario: Cancelamento com reembolso parcial
  Given eu tenho reserva para daqui a 12 horas
  When eu cancelo
  Then devo ver "Reembolso: 50%"
  And aviso sobre política

Scenario: Cancelamento sem reembolso
  Given eu tenho reserva para daqui a 1 hora
  When eu cancelo
  Then devo ver "Reembolso: 0%"
  And confirmação clara que não haverá reembolso

Scenario: Cancelar reserva recorrente
  Given eu tenho reserva recorrente
  When eu cancelo
  Then devo escolher:
    | Opção |
    | Apenas esta |
    | Esta e futuras |
    | Todas |

Definition of Done

  • [ ] Políticas de cancelamento
  • [ ] Reembolso automático
  • [ ] Notificações funcionando
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-BOOK-001

US-BOOK-003: Fazer Check-in

Como jogador que chegou na arena, Quero fazer check-in, Para confirmar minha presença.

Story Points: 5 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Check-in pelo app (geolocalização)
  Given eu tenho reserva agora
  And eu estou a menos de 100m da arena
  When eu acesso a reserva
  And eu clico em "Check-in"
  Then check-in deve ser registrado
  And status deve mudar para "Em andamento"

Scenario: Check-in por QR Code
  Given eu estou na arena
  When eu escaneio QR code da quadra
  Then check-in deve ser registrado

Scenario: Fora da área de check-in
  Given eu estou longe da arena
  When eu tento fazer check-in
  Then devo ver erro "Você precisa estar na arena"
  And opção de check-in manual com recepção

Scenario: Check-in antecipado
  Given faltam 30 minutos para minha reserva
  When eu tento fazer check-in
  Then devo ver "Check-in disponível em 15 minutos"

Definition of Done

  • [ ] Geolocalização funcionando
  • [ ] QR Code funcionando
  • [ ] Validação de tempo
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-BOOK-001

US-BOOK-004: Reagendar Reserva

Como jogador que precisa mudar data, Quero reagendar minha reserva, Para não perder o valor pago.

Story Points: 5 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Reagendamento bem-sucedido
  Given eu tenho reserva futura
  When eu clico em "Reagendar"
  And eu seleciono novo horário disponível
  Then reserva deve ser movida
  And horário antigo liberado
  And eu devo receber confirmação

Scenario: Diferença de preço (mais caro)
  Given novo horário custa mais
  When eu reagendo
  Then devo ver diferença a pagar
  And devo efetuar pagamento adicional

Scenario: Diferença de preço (mais barato)
  Given novo horário custa menos
  When eu reagendo
  Then diferença deve ir para minha wallet
  Ou reembolsada conforme configuração

Scenario: Fora do prazo de reagendamento
  Given faltam menos de 2 horas
  When eu tento reagendar
  Then devo ver "Reagendamento não disponível"
  And sugestão de cancelar

Definition of Done

  • [ ] Reagendamento funcionando
  • [ ] Diferença de preço tratada
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-BOOK-001

US-BOOK-005: Reserva Recorrente

Como jogador regular, Quero criar reserva recorrente, Para garantir meu horário fixo.

Story Points: 8 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Criar reserva semanal
  Given eu estou criando reserva
  When eu ativo "Repetir semanalmente"
  And eu defino 8 semanas
  Then devo ver 8 datas no resumo
  And valor total calculado
  And desconto de mensalista aplicado (se houver)

Scenario: Conflito em algumas datas
  Given algumas datas já estão ocupadas
  Then devo ver quais datas têm conflito
  And poder escolher:
    | Opção |
    | Pular datas com conflito |
    | Escolher horário alternativo |
    | Cancelar |

Scenario: Cancelar uma ocorrência
  Given eu tenho reserva recorrente
  When eu cancelo uma data específica
  Then apenas aquela data é cancelada
  And demais permanecem

Scenario: Cancelar todas as futuras
  Given eu quero parar a recorrência
  When eu cancelo "Esta e futuras"
  Then todas as futuras devem ser canceladas
  E reembolso proporcional processado

Definition of Done

  • [ ] Recorrência implementada
  • [ ] Tratamento de conflitos
  • [ ] Cancelamento parcial
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-BOOK-001

US-BOOK-006: Adicionar Participantes

Como organizador de jogo, Quero adicionar participantes à reserva, Para informá-los sobre o jogo.

Story Points: 3 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Adicionar participante por email
  Given eu estou editando reserva
  When eu clico em "Adicionar participante"
  And eu informo email "amigo@email.com"
  Then convite deve ser enviado
  And participante aparece como "Pendente"

Scenario: Participante confirma
  Given participante recebeu convite
  When ele clica em "Confirmar"
  Then status muda para "Confirmado"
  And organizador é notificado

Scenario: Participante recusa
  Given participante recebeu convite
  When ele clica em "Recusar"
  Then status muda para "Recusado"
  And organizador é notificado

Scenario: Remover participante
  Given há participante na reserva
  When eu clico em "Remover"
  Then participante é removido
  E ele recebe notificação

Definition of Done

  • [ ] Convites por email
  • [ ] Status de confirmação
  • [ ] Notificações
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-BOOK-001

US-BOOK-007: Lista de Espera

Como jogador interessado em horário ocupado, Quero entrar na lista de espera, Para ser notificado se vagar.

Story Points: 5 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Entrar na lista de espera
  Given horário que eu quero está ocupado
  When eu clico em "Entrar na lista de espera"
  Then eu devo ser adicionado à lista
  And ver minha posição
  And receber confirmação

Scenario: Vaga liberada
  Given eu estou na lista
  When o horário é cancelado
  Then eu devo receber notificação push imediata
  And ter 15 minutos para confirmar
  And ver opção de pagamento rápido

Scenario: Confirmar vaga
  Given eu fui notificado de vaga
  When eu clico em "Reservar agora"
  And eu pago
  Then reserva é criada
  And sou removido da lista

Scenario: Perder a vaga (timeout)
  Given eu fui notificado de vaga
  When não respondo em 15 minutos
  Then próximo da lista é notificado
  E eu perco a prioridade

Definition of Done

  • [ ] Lista de espera por horário
  • [ ] Notificação em tempo real
  • [ ] Timeout implementado
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-BOOK-001

US-BOOK-008: Ver Minhas Reservas

Como jogador, Quero ver minhas reservas, Para acompanhar meus agendamentos.

Story Points: 3 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Ver reservas futuras
  Given eu tenho reservas futuras
  When eu acesso "Minhas Reservas"
  Then devo ver lista ordenada por data
  And cada uma mostra: data, hora, arena, quadra, status
  And botões de ação (cancelar, reagendar, check-in)

Scenario: Ver histórico
  Given eu tenho reservas passadas
  When eu acesso aba "Histórico"
  Then devo ver reservas anteriores
  And cada uma mostra status final

Scenario: Filtrar reservas
  Given eu tenho muitas reservas
  When eu filtro por arena ou período
  Then lista deve ser filtrada

Scenario: Ver detalhes
  Given eu clico em uma reserva
  Then devo ver detalhes completos
  Including participantes, pagamento, histórico

Definition of Done

  • [ ] Lista de reservas
  • [ ] Histórico
  • [ ] Filtros
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-BOOK-001

US-BOOK-009: Lembrete de Reserva

Como jogador, Quero receber lembretes de reserva, Para não esquecer meus jogos.

Story Points: 3 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Lembrete 24 horas antes
  Given eu tenho reserva amanhã
  When faltam 24 horas
  Then eu devo receber push e email
  And mensagem contém: data, hora, local, QR code

Scenario: Lembrete 2 horas antes
  Given eu tenho reserva em 2 horas
  Then eu devo receber push
  And com ação rápida para "Ver reserva"

Scenario: Configurar lembretes
  Given eu acesso configurações
  Then posso definir quais lembretes receber
  And por qual canal (push, email, SMS)

Definition of Done

  • [ ] Lembretes agendados
  • [ ] Múltiplos canais
  • [ ] Configurável
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-BOOK-001
  • US-NOTIF-001

US-BOOK-010: Reserva Walk-in

Como recepcionista, Quero criar reserva para cliente no local, Para atender walk-ins.

Story Points: 3 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Criar reserva walk-in
  Given eu sou recepcionista
  And cliente está no balcão
  When eu acesso agenda
  And eu clico em horário disponível
  And eu busco/cadastro o cliente
  And eu marco como "Walk-in"
  Then reserva é criada iniciando agora
  And pagamento pode ser no local

Scenario: Cliente não cadastrado
  Given cliente não tem conta
  When eu crio reserva walk-in
  Then posso criar cadastro simplificado
  Or reservar como "Cliente avulso"

Definition of Done

  • [ ] Fluxo de recepção
  • [ ] Cadastro simplificado
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-BOOK-001

US-BOOK-011: Reserva para Aula

Como instrutor, Quero criar horário de aula, Para que alunos possam se inscrever.

Story Points: 5 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Criar aula
  Given eu sou instrutor da arena
  When eu crio uma aula
  And eu defino: horário, quadra, vagas, preço por aluno
  Then aula fica disponível para inscrição
  And aparece na agenda da arena

Scenario: Aluno se inscreve
  Given existe aula com vagas
  When aluno clica em "Inscrever"
  And paga o valor
  Then ele é inscrito na aula
  E recebe confirmação

Scenario: Aula lotada
  Given aula atingiu limite de vagas
  Then não aceita mais inscrições
  E mostra "Aula lotada"
  E opção de lista de espera

Scenario: Cancelar aula
  Given eu sou instrutor
  When eu cancelo a aula
  Then todos os alunos são notificados
  E reembolsos são processados

Definition of Done

  • [ ] Gestão de aulas
  • [ ] Inscrição de alunos
  • [ ] Split de pagamento (arena/instrutor)
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-BOOK-001
  • US-PAY-006

US-BOOK-012: Sincronizar com Calendário

Como jogador organizado, Quero sincronizar reservas com meu calendário, Para não ter conflitos de agenda.

Story Points: 3 | Prioridade: Baixa

Critérios de Aceite

gherkin
Scenario: Exportar para Google Calendar
  Given eu tenho reserva confirmada
  When eu clico em "Adicionar ao calendário"
  Then evento é criado no Google Calendar
  Com data, hora, local e link da reserva

Scenario: Sincronização automática
  Given eu conectei minha conta Google
  Then todas as novas reservas vão para o calendário
  E cancelamentos removem o evento

Definition of Done

  • [ ] Integração Google Calendar
  • [ ] Exportação iCal
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-BOOK-001

Epic 4: Fila e Alocação Dinâmica

US-QUEUE-001: Entrar na Fila

Como jogador na arena, Quero entrar na fila de espera, Para jogar quando tiver vaga.

Story Points: 5 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Entrar na fila com sucesso
  Given eu fiz check-in na arena
  And a quadra que quero está ocupada
  When eu clico em "Entrar na fila"
  Then eu devo ser adicionado à fila
  And ver minha posição (ex: "3º da fila")
  And tempo estimado de espera

Scenario: Entrar na fila com parceiro
  Given eu quero jogar em dupla
  When eu entro na fila
  And adiciono meu parceiro (que também fez check-in)
  Then entramos juntos como time
  E somos chamados juntos

Scenario: Já está na fila
  Given eu já estou na fila de uma quadra
  When eu tento entrar novamente
  Then devo ver "Você já está na fila"

Scenario: Sem check-in
  Given eu não fiz check-in
  When eu tento entrar na fila
  Then devo ver "Faça check-in primeiro"

Definition of Done

  • [ ] Fila por quadra
  • [ ] Times/duplas
  • [ ] Tempo estimado
  • [ ] WebSocket para atualizações
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-BOOK-003

US-QUEUE-002: Visualizar Fila em Tempo Real

Como jogador na fila, Quero ver a fila em tempo real, Para saber quando será minha vez.

Story Points: 3 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Ver fila atualizada
  Given eu estou visualizando a fila
  When alguém entra ou sai
  Then a lista deve atualizar automaticamente
  And minha posição deve atualizar

Scenario: Ver quem está jogando
  Given eu vejo a fila de uma quadra
  Then devo ver quem está jogando atualmente
  E há quanto tempo estão jogando

Scenario: Tempo estimado
  Given há 3 pessoas na minha frente
  Then devo ver tempo estimado de espera
  E atualizar conforme a fila anda

Definition of Done

  • [ ] WebSocket funcionando
  • [ ] Tempo estimado
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-QUEUE-001

US-QUEUE-003: Ser Chamado para Jogar

Como próximo da fila, Quero ser chamado quando for minha vez, Para entrar na quadra.

Story Points: 5 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Receber chamada
  Given eu sou o próximo da fila
  When a partida atual termina
  Then eu devo receber notificação push
  E vibração no celular
  E ver popup no app "Sua vez! Aceitar?"

Scenario: Aceitar chamada
  Given eu fui chamado
  When eu clico em "Aceitar"
  Then eu devo ir para a quadra
  And partida deve iniciar

Scenario: Recusar chamada
  Given eu fui chamado
  When eu clico em "Recusar"
  Then eu devo ir para o final da fila
  And o próximo deve ser chamado

Scenario: Timeout de resposta
  Given eu fui chamado
  When não respondo em 2 minutos
  Then eu perco a vez
  And vou para o final da fila
  And próximo é chamado

Definition of Done

  • [ ] Push notification
  • [ ] Timeout de 2 min
  • [ ] Fallback para próximo
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-QUEUE-001
  • US-NOTIF-001

US-QUEUE-004: Sair da Fila

Como jogador na fila, Quero poder sair da fila, Para desistir de jogar.

Story Points: 2 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Sair voluntariamente
  Given eu estou na fila
  When eu clico em "Sair da fila"
  E confirmo
  Then eu sou removido
  And posições são atualizadas

Scenario: Sair da arena
  Given eu estou na fila
  When eu faço checkout da arena
  Then sou automaticamente removido das filas

Scenario: Inatividade
  Given eu não interagi com o app por 30 minutos
  Then sou removido da fila
  E recebo notificação

Definition of Done

  • [ ] Saída voluntária
  • [ ] Saída automática por checkout
  • [ ] Inatividade detectada
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-QUEUE-001

US-QUEUE-005: Sistema Ganha-Fica

Como vencedor de uma partida, Quero continuar na quadra, Para jogar contra o próximo desafiante.

Story Points: 5 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Vencedor permanece
  Given a partida terminou
  And meu time venceu
  And não atingimos o limite de vitórias
  When o resultado é registrado
  Then meu time permanece na quadra
  E perdedores vão para o final da fila
  E próximo desafiante é chamado

Scenario: Limite de vitórias atingido
  Given meu time venceu 3 partidas seguidas
  When vencemos a 4ª partida
  Then mesmo vencendo, saímos da quadra
  E vemos "Limite de vitórias! Parabéns!"
  E vamos para o final da fila
  E os 2 próximos jogam

Scenario: Perdedor vai para a fila
  Given meu time perdeu
  Then vamos para o final da fila
  E podemos escolher ir para outra quadra

Definition of Done

  • [ ] Lógica ganha-fica
  • [ ] Limite configurável
  • [ ] Histórico de partidas
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-QUEUE-003

US-QUEUE-006: Registrar Resultado

Como jogador, Quero registrar o resultado da partida, Para determinar o vencedor.

Story Points: 3 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Registrar placar
  Given a partida está em andamento
  When um jogador registra "6-4"
  Then o adversário deve confirmar
  When ambos confirmam
  Then resultado é registrado
  E vencedor é determinado
  E estatísticas atualizadas

Scenario: Divergência de placar
  Given jogador 1 registra "6-4"
  And jogador 2 registra "4-6"
  Then conflito é detectado
  E recepção é notificada para validar

Scenario: Desistência (WO)
  Given um time desiste
  When clica em "Desistir"
  Then o outro time vence por WO
  E resultado é registrado

Definition of Done

  • [ ] Registro de placar
  • [ ] Confirmação dupla
  • [ ] Tratamento de conflitos
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-QUEUE-005

US-QUEUE-007: Dashboard da Quadra (Staff)

Como staff da arena, Quero ver status de todas as quadras, Para gerenciar filas e jogos.

Story Points: 5 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Ver todas as quadras
  Given eu sou recepcionista
  When eu acesso o dashboard
  Then devo ver todas as quadras
  E status de cada uma (livre, ocupada, manutenção)
  E quem está jogando
  E tamanho da fila

Scenario: Intervenção manual
  Given há problema em uma partida
  When eu clico na quadra
  Then posso: encerrar partida, chamar próximo, bloquear quadra

Scenario: Gerenciar fila
  Given há fila em uma quadra
  Então posso: reordenar, remover jogadores

Definition of Done

  • [ ] Dashboard em tempo real
  • [ ] Ações de intervenção
  • [ ] Gestão de fila
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-QUEUE-001

US-QUEUE-008: Estatísticas de Partida

Como jogador, Quero ver estatísticas das minhas partidas, Para acompanhar meu desempenho.

Story Points: 3 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Ver histórico de partidas
  Given eu joguei várias partidas
  When eu acesso "Minhas Partidas"
  Then devo ver lista de partidas
  E cada uma mostra: data, adversários, placar, resultado

Scenario: Ver estatísticas gerais
  Given eu tenho histórico de partidas
  Then devo ver:
    | Estatística | Valor |
    | Total de jogos | 42 |
    | Vitórias | 28 |
    | Derrotas | 14 |
    | Win rate | 67% |

Scenario: Filtrar por período/esporte
  Given eu tenho partidas em diferentes esportes
  When eu filtro por "Beach Tennis" no último mês
  Then devo ver apenas partidas filtradas

Definition of Done

  • [ ] Histórico de partidas
  • [ ] Estatísticas calculadas
  • [ ] Filtros funcionando
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-QUEUE-006

US-QUEUE-009: Tempo Máximo de Jogo

Como arena, Quero limitar tempo de jogo, Para garantir rotatividade.

Story Points: 3 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Alerta de tempo
  Given configuração de 30 minutos máximo
  When partida atinge 25 minutos
  Then jogadores recebem alerta "5 minutos restantes"

Scenario: Tempo esgotado
  Given partida atingiu 30 minutos
  Then jogadores veem "Tempo esgotado"
  E recepção é notificada
  E podem finalizar partida atual

Scenario: Extensão de tempo
  Given fila está vazia
  Então tempo pode ser estendido automaticamente
  Ou jogadores podem solicitar extensão

Definition of Done

  • [ ] Timer de partida
  • [ ] Alertas
  • [ ] Extensões
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-QUEUE-005

US-QUEUE-010: Balanceamento de Times

Como arena, Quero sugerir times balanceados, Para jogos mais equilibrados.

Story Points: 5 | Prioridade: Baixa

Critérios de Aceite

gherkin
Scenario: Sugestão de times
  Given 4 jogadores prontos para jogar
  When sistema sugere times
  Then considera skill rating de cada um
  E times devem ter diferença máxima de 100 pontos
  E mostra sugestão para jogadores aceitarem

Scenario: Aceitar sugestão
  Given sugestão foi apresentada
  When todos aceitam
  Then times são formados conforme sugestão

Scenario: Recusar sugestão
  Given sugestão foi apresentada
  When alguém recusa
  Then jogadores escolhem times manualmente

Definition of Done

  • [ ] Algoritmo de balanceamento
  • [ ] UI de sugestão
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-QUEUE-001
  • US-PLAYER-003

Epic 5: Pagamentos

US-PAY-001: Pagar com PIX

Como cliente, Quero pagar com PIX, Para ter confirmação instantânea.

Story Points: 5 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Gerar PIX
  Given eu estou no checkout
  When eu seleciono "PIX"
  Then devo ver QR Code
  E chave PIX copia-e-cola
  E valor e beneficiário
  E prazo de 30 minutos

Scenario: Pagamento confirmado
  Given eu paguei o PIX
  When o banco confirma (webhook)
  Then pagamento é registrado
  E reserva é confirmada
  E recibo é enviado

Scenario: PIX expirado
  Given eu não paguei em 30 minutos
  Then PIX expira
  E reserva é cancelada
  E horário é liberado

Definition of Done

  • [ ] Integração com gateway (Stripe/MP)
  • [ ] Webhook de confirmação
  • [ ] Expiração automática
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • Gateway de pagamento

US-PAY-002: Pagar com Cartão

Como cliente, Quero pagar com cartão de crédito/débito, Para ter flexibilidade de parcelamento.

Story Points: 5 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Pagamento aprovado
  Given eu estou no checkout
  When eu seleciono "Cartão de crédito"
  E preencho dados válidos
  E seleciono parcelamento (se > R$100)
  E clico em "Pagar"
  Then pagamento deve ser processado
  E reserva confirmada

Scenario: Pagamento recusado
  Given cartão foi recusado
  Then devo ver mensagem de erro
  E poder tentar outro cartão ou método

Scenario: Salvar cartão para futuro
  Given eu marco "Salvar para próximas compras"
  Then cartão é tokenizado
  E aparecem últimos 4 dígitos nas próximas compras

Definition of Done

  • [ ] Integração com gateway
  • [ ] Tokenização de cartão
  • [ ] Parcelamento
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • Gateway de pagamento

US-PAY-003: Solicitar Reembolso

Como cliente que cancelou reserva, Quero receber reembolso, Para recuperar meu dinheiro.

Story Points: 5 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Reembolso automático PIX
  Given eu cancelei reserva com direito a reembolso
  And paguei com PIX
  Then reembolso é processado em até 24h
  E recebo notificação quando creditado

Scenario: Reembolso automático cartão
  Given eu cancelei e paguei com cartão
  Then reembolso aparece em até 2 faturas
  E recebo notificação

Scenario: Reembolso parcial
  Given política de 50% de reembolso
  Then apenas 50% é reembolsado
  E vejo breakdown no extrato

Definition of Done

  • [ ] Reembolso automático
  • [ ] Múltiplos métodos
  • [ ] Notificações
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-PAY-001
  • US-PAY-002

US-PAY-004: Ver Extrato

Como cliente, Quero ver meu histórico financeiro, Para acompanhar gastos.

Story Points: 3 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Ver transações
  Given eu acesso "Financeiro"
  Then devo ver lista de transações
  E cada uma mostra: data, descrição, valor, status
  E posso filtrar por período

Scenario: Ver detalhes
  Given eu clico em uma transação
  Then vejo detalhes completos
  E comprovante/recibo

Scenario: Exportar
  Given eu quero exportar
  When eu clico em "Exportar"
  Then posso baixar PDF ou Excel

Definition of Done

  • [ ] Lista de transações
  • [ ] Filtros
  • [ ] Exportação
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-PAY-001

US-PAY-005: Usar Carteira (Wallet)

Como cliente frequente, Quero ter créditos pré-pagos, Para pagar mais rápido.

Story Points: 5 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Adicionar créditos
  Given eu acesso "Minha Carteira"
  When eu clico em "Adicionar créditos"
  E seleciono valor (R$100, R$200, R$500)
  E pago
  Then créditos aparecem no saldo

Scenario: Pagar com saldo
  Given eu tenho saldo de R$150
  And reserva custa R$100
  When eu seleciono "Pagar com saldo"
  Then reserva é paga
  E saldo atualiza para R$50

Scenario: Saldo insuficiente
  Given eu tenho saldo de R$50
  And reserva custa R$100
  Then posso pagar R$50 do saldo
  E diferença com outro método

Definition of Done

  • [ ] Wallet implementada
  • [ ] Adicionar créditos
  • [ ] Pagar com saldo
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-PAY-001

US-PAY-006: Split Payment (Arena/Instrutor)

Como arena com instrutores, Quero dividir pagamento automaticamente, Para facilitar repasses.

Story Points: 8 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Aula com split
  Given aula custa R$100
  And split é 70% arena, 30% instrutor
  When aluno paga
  Then R$70 vai para conta da arena
  E R$30 para conta do instrutor
  E ambos veem no extrato

Scenario: Configurar splits
  Given eu sou arena owner
  When eu configuro instrutor
  Então defino percentual de split
  E datas de repasse

Scenario: Relatório de repasses
  Given eu sou instrutor
  When acesso "Meus Ganhos"
  Então vejo: total pendente, histórico de repasses

Definition of Done

  • [ ] Split payment configurado
  • [ ] Repasses automáticos
  • [ ] Relatórios
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • Gateway que suporte split

US-PAY-007: Aplicar Cupom

Como cliente, Quero usar cupom de desconto, Para pagar menos.

Story Points: 3 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Cupom válido
  Given existe cupom "PROMO20" de 20% off
  When eu aplico no checkout
  Then desconto é calculado
  E novo valor exibido

Scenario: Cupom inválido
  Given eu digito cupom inexistente
  Then vejo "Cupom inválido"

Scenario: Cupom expirado
  Given cupom expirou
  Then vejo "Cupom expirado"

Scenario: Limite de uso atingido
  Given cupom já foi usado X vezes
  Then vejo "Limite de uso atingido"

Definition of Done

  • [ ] Sistema de cupons
  • [ ] Validações
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-PAY-001

Epic 6: Gamificação

US-GAME-001: Ganhar XP

Como jogador ativo, Quero ganhar XP por jogar, Para progredir na plataforma.

Story Points: 3 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: XP por partida
  Given eu joguei uma partida
  When a partida termina
  Then devo ganhar 50 XP base
  E bônus de 25 XP se venci
  E ver animação de XP

Scenario: XP bônus primeiro jogo do dia
  Given é meu primeiro jogo hoje
  Then ganho 20 XP extra

Scenario: XP por streak
  Given eu joguei 5 dias seguidos
  Then ganho 50 XP extra de streak

Definition of Done

  • [ ] Sistema de XP
  • [ ] Bônus calculados
  • [ ] Animações
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-QUEUE-006

US-GAME-002: Subir de Nível

Como jogador, Quero subir de nível, Para desbloquear benefícios.

Story Points: 5 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Level up
  Given eu preciso de 100 XP para nível 5
  And eu tenho 90 XP
  When eu ganho 20 XP
  Then devo subir para nível 5
  E ver animação de level up
  E receber notificação
  E desbloquear benefícios do nível

Scenario: Ver progresso
  Given eu estou no nível 4
  Then devo ver:
    - Nível atual
    - XP atual / XP para próximo nível
    - Barra de progresso
    - Benefícios desbloqueados

Definition of Done

  • [ ] Sistema de níveis
  • [ ] Benefícios por nível
  • [ ] Animações
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-GAME-001

US-GAME-003: Conquistar Achievement

Como jogador, Quero desbloquear conquistas, Para ter reconhecimento.

Story Points: 5 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Desbloquear conquista
  Given existe conquista "10 Vitórias"
  When eu alcanço minha 10ª vitória
  Then conquista é desbloqueada
  E vejo popup "Conquista desbloqueada!"
  E ganho XP bônus
  E aparece no meu perfil

Scenario: Ver conquistas
  Given eu acesso "Conquistas"
  Then vejo conquistas desbloqueadas
  E conquistas bloqueadas (com progresso)

Scenario: Conquista rara
  Given existe conquista "Lenda" (100 vitórias)
  Then deve ter visual diferenciado (dourado)
  E maior recompensa de XP

Definition of Done

  • [ ] Sistema de conquistas
  • [ ] Tipos/raridades
  • [ ] Perfil mostra conquistas
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-GAME-001

US-GAME-004: Manter Streak

Como jogador regular, Quero manter meu streak, Para ganhar bônus.

Story Points: 3 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Aumentar streak
  Given eu joguei ontem
  When eu jogo hoje
  Then meu streak aumenta (+1)
  E vejo animação
  E ganho XP bônus

Scenario: Perder streak
  Given eu não joguei por 2 dias
  Then meu streak zera
  E vejo notificação "Streak perdido"

Scenario: Proteger streak
  Given eu tenho item "Proteção de Streak"
  And não joguei ontem
  Then meu streak não zera
  E item é consumido

Definition of Done

  • [ ] Sistema de streak
  • [ ] Alertas de streak em risco
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-GAME-001

US-GAME-005: Ver Rankings

Como jogador competitivo, Quero ver rankings, Para comparar com outros jogadores.

Story Points: 3 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Ver ranking geral
  Given eu acesso "Rankings"
  Then vejo top jogadores por XP
  E minha posição destacada
  E posso ver mais (scroll infinito)

Scenario: Filtrar ranking
  Given eu quero ver ranking de Beach Tennis
  When eu filtro por esporte
  Then vejo ranking apenas desse esporte

Scenario: Ranking da arena
  Given eu frequento arena específica
  Then posso ver ranking só dessa arena

Definition of Done

  • [ ] Rankings múltiplos
  • [ ] Filtros
  • [ ] Minha posição
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-GAME-001

Epic 7: Notificações

US-NOTIF-001: Receber Push Notification

Como usuário, Quero receber notificações push, Para ser avisado de eventos importantes.

Story Points: 5 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Receber push de confirmação
  Given eu fiz uma reserva
  Then devo receber push "Reserva confirmada!"
  E push deve ter ação rápida para ver detalhes

Scenario: Receber lembrete
  Given eu tenho reserva em 1 hora
  Then devo receber push "Seu jogo é em 1 hora"
  E push deve ter endereço e QR code

Scenario: Chamada na fila
  Given é minha vez na fila
  Then devo receber push alta prioridade
  E vibração
  E som diferenciado

Definition of Done

  • [ ] Push iOS (APNs)
  • [ ] Push Android (FCM)
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • Firebase configurado

US-NOTIF-002: Configurar Preferências

Como usuário, Quero configurar minhas notificações, Para receber apenas o que me interessa.

Story Points: 3 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Configurar tipos
  Given eu acesso Configurações > Notificações
  Then posso habilitar/desabilitar por tipo:
    | Tipo | Default |
    | Reservas | On |
    | Lembretes | On |
    | Marketing | Off |
    | Social | On |

Scenario: Configurar canais
  Given eu configuro notificações
  Then posso escolher canal por tipo:
    | Canal | Opções |
    | Push | On/Off |
    | Email | On/Off |
    | SMS | On/Off |

Definition of Done

  • [ ] Preferências salvas
  • [ ] Respeitadas no envio
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-NOTIF-001

US-NOTIF-003: Ver Central de Notificações

Como usuário, Quero ver histórico de notificações, Para não perder nada importante.

Story Points: 3 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Ver notificações
  Given eu clico no ícone de sino
  Then vejo lista de notificações recentes
  E não lidas em destaque
  E badge com contagem

Scenario: Marcar como lida
  Given eu clico em uma notificação
  Then ela é marcada como lida
  E badge atualiza

Scenario: Ação da notificação
  Given notificação tem ação (ex: Ver reserva)
  When eu clico
  Then sou levado à tela correspondente

Definition of Done

  • [ ] Central de notificações
  • [ ] Badge de contagem
  • [ ] Ações
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-NOTIF-001

Epic 8: Gestão de Arena (Admin)

US-ARENA-001: Cadastrar Arena

Como novo cliente, Quero cadastrar minha arena, Para começar a usar o sistema.

Story Points: 8 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Cadastro completo
  Given eu sou novo arena owner
  When eu preencho dados da arena
    | Campo | Valor |
    | Nome | Arena Beach Sports |
    | CNPJ | 12.345.678/0001-00 |
    | Endereço | Rua das Quadras, 100 |
    | Telefone | (11) 99999-9999 |
  And eu faço upload do logo
  Then arena é criada em status "Pendente"
  E equipe é notificada para validar CNPJ

Scenario: CNPJ inválido
  Given eu informo CNPJ inválido
  Then vejo erro "CNPJ inválido"

Scenario: Aprovação
  Given arena está pendente
  When equipe aprova
  Then status muda para "Ativa"
  E eu recebo email de boas-vindas

Definition of Done

  • [ ] Formulário de cadastro
  • [ ] Validação de CNPJ
  • [ ] Workflow de aprovação
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-AUTH-001

US-ARENA-002: Configurar Quadras

Como gerente de arena, Quero cadastrar quadras, Para disponibilizar para reserva.

Story Points: 5 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Adicionar quadra
  Given eu acesso "Quadras" > "Nova Quadra"
  When eu preencho:
    | Campo | Valor |
    | Nome | Quadra 1 |
    | Esporte | Beach Tennis |
    | Coberta | Não |
    | Iluminação | Sim |
    | Max jogadores | 4 |
  Then quadra é criada
  E aparece na agenda

Scenario: Editar quadra
  Given existe uma quadra
  When eu altero o preço
  Then preço é atualizado
  E novas reservas usam novo preço

Scenario: Desativar quadra
  Given quadra está em manutenção
  When eu desativo
  Then ela não aparece para reserva
  E reservas futuras são notificadas

Definition of Done

  • [ ] CRUD de quadras
  • [ ] Configurações
  • [ ] Integração com agenda
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-ARENA-001

US-ARENA-003: Definir Horários

Como gerente de arena, Quero definir horários de funcionamento, Para controlar disponibilidade.

Story Points: 3 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Configurar horário regular
  Given eu acesso "Horários"
  When eu defino para cada dia:
    | Dia | Abre | Fecha |
    | Segunda | 07:00 | 23:00 |
    | Sábado | 08:00 | 22:00 |
    | Domingo | 08:00 | 18:00 |
  Then agenda respeita esses horários

Scenario: Feriado/Dia especial
  Given eu cadastro feriado
  When eu defino data e horários especiais (ou fechado)
  Then agenda se adapta
  E reservas conflitantes são notificadas

Scenario: Bloquear período
  Given preciso bloquear para evento
  When eu crio bloqueio
  Then horários ficam indisponíveis

Definition of Done

  • [ ] Horários por dia da semana
  • [ ] Datas especiais
  • [ ] Bloqueios
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-ARENA-001

US-ARENA-004: Gerenciar Equipe

Como dono de arena, Quero gerenciar minha equipe, Para dar acesso ao sistema.

Story Points: 5 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Convidar funcionário
  Given eu acesso "Equipe"
  When eu convido por email
  E defino role (Gerente, Recepcionista, Instrutor)
  Then convite é enviado
  E pessoa pode acessar com permissões definidas

Scenario: Alterar permissões
  Given funcionário está cadastrado
  When eu altero role
  Then permissões são atualizadas imediatamente

Scenario: Remover acesso
  Given funcionário foi desligado
  When eu removo da equipe
  Then acesso é revogado
  E sessões são encerradas

Definition of Done

  • [ ] Gestão de equipe
  • [ ] Roles e permissões
  • [ ] Convites
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-ARENA-001

US-ARENA-005: Configurar Preços

Como gerente de arena, Quero configurar preços, Para monetizar as quadras.

Story Points: 5 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Preço por horário
  Given eu configuro preços
  Then posso definir diferentes preços:
    | Período | Preço/hora |
    | Manhã (6-12h) | R$ 80 |
    | Tarde (12-18h) | R$ 100 |
    | Noite (18-23h) | R$ 120 |

Scenario: Preço fim de semana
  Given eu configuro
  Then posso ter preços diferentes para sáb/dom

Scenario: Preço por quadra
  Given quadras têm tamanhos diferentes
  Then posso definir preço por quadra

Definition of Done

  • [ ] Precificação flexível
  • [ ] Por horário, dia, quadra
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-ARENA-002

US-ARENA-006: Ver Agenda Geral

Como gerente/recepcionista, Quero ver agenda completa, Para acompanhar reservas.

Story Points: 3 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Ver dia atual
  Given eu acesso a agenda
  Then vejo todas as quadras em colunas
  E horários em linhas
  E reservas nos slots

Scenario: Navegar entre dias
  Given eu quero ver amanhã
  When eu clico em próximo dia
  Then agenda atualiza

Scenario: Ver detalhes da reserva
  Given eu clico em uma reserva
  Then vejo: cliente, participantes, valor, status
  E ações disponíveis

Definition of Done

  • [ ] Agenda visual
  • [ ] Navegação temporal
  • [ ] Detalhes de reserva
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-ARENA-002

US-ARENA-007: Dashboard Financeiro

Como dono de arena, Quero ver dashboard financeiro, Para acompanhar faturamento.

Story Points: 5 | Prioridade: Alta

Critérios de Aceite

gherkin
Scenario: Ver métricas do dia
  Given eu acesso dashboard
  Then vejo:
    | Métrica | Valor |
    | Faturamento hoje | R$ 2.500 |
    | Reservas hoje | 18 |
    | Ocupação | 75% |

Scenario: Ver histórico
  Given eu seleciono período (semana/mês)
  Then vejo gráfico de evolução
  E comparativo com período anterior

Scenario: Breakdown
  Given eu quero detalhes
  Then vejo faturamento por:
    - Quadra
    - Tipo de reserva
    - Forma de pagamento

Definition of Done

  • [ ] Dashboard financeiro
  • [ ] Gráficos
  • [ ] Breakdown
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-PAY-001

US-ARENA-008: Relatório de Ocupação

Como gerente de arena, Quero ver relatório de ocupação, Para otimizar operação.

Story Points: 5 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Ocupação geral
  Given eu acesso relatório
  Then vejo taxa de ocupação por:
    - Quadra
    - Horário
    - Dia da semana

Scenario: Heatmap
  Given eu quero visualizar padrões
  Then vejo heatmap com horários mais ocupados

Scenario: Exportar
  Given eu preciso do relatório
  When eu clico exportar
  Then baixo PDF ou Excel

Definition of Done

  • [ ] Relatório de ocupação
  • [ ] Heatmap visual
  • [ ] Exportação
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-ARENA-006

US-ARENA-009: Criar Promoções

Como gerente de arena, Quero criar promoções, Para atrair mais clientes.

Story Points: 5 | Prioridade: Média

Critérios de Aceite

gherkin
Scenario: Cupom de desconto
  Given eu crio cupom
  When eu defino:
    | Campo | Valor |
    | Código | VERAO20 |
    | Desconto | 20% |
    | Validade | 30/03/2024 |
    | Limite de uso | 100 |
  Then cupom fica disponível

Scenario: Promoção horário vazio
  Given horários da manhã têm baixa ocupação
  When eu crio promoção "Manhã 30% off"
  Then desconto é aplicado automaticamente

Scenario: Relatório de promoções
  Given eu tenho promoções ativas
  Then vejo:
    - Uso de cada cupom
    - Receita gerada
    - ROI da promoção

Definition of Done

  • [ ] Sistema de promoções
  • [ ] Cupons
  • [ ] Relatórios
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-PAY-007

US-ARENA-010: Enviar Comunicados

Como gerente de arena, Quero enviar comunicados, Para informar clientes.

Story Points: 3 | Prioridade: Baixa

Critérios de Aceite

gherkin
Scenario: Enviar para todos
  Given eu crio comunicado
  When eu seleciono "Todos os clientes"
  Then comunicado é enviado por push/email

Scenario: Enviar para segmento
  Given eu quero avisar clientes com reserva amanhã
  When eu segmento e envio
  Then apenas eles recebem

Scenario: Agendar envio
  Given eu quero enviar amanhã às 10h
  When eu agendo
  Then envio ocorre no horário programado

Definition of Done

  • [ ] Envio de comunicados
  • [ ] Segmentação
  • [ ] Agendamento
  • [ ] Testes passando
  • [ ] Code review aprovado

Dependências

  • US-NOTIF-001

Resumo por Epic

EpicUser StoriesStory PointsPrioridade
Autenticação1032Alta
Busca829Alta
Reservas1253Alta
Fila1039Alta
Pagamentos737Alta
Gamificação519Média
Notificações311Alta
Gestão Arena1047Alta
Total65267-

Definition of Done Global

Toda User Story deve atender:

  • [ ] Código implementado seguindo Clean Architecture
  • [ ] Testes unitários com >80% coverage
  • [ ] Testes de integração passando
  • [ ] Testes E2E para fluxos críticos
  • [ ] Code review aprovado por 2 desenvolvedores
  • [ ] Sem vulnerabilidades de segurança (Snyk/SonarQube)
  • [ ] Documentação atualizada (API, README)
  • [ ] Deploy em staging validado
  • [ ] Product Owner aprovou funcionamento
  • [ ] Métricas de observabilidade configuradas

Documento gerado em: Janeiro 2025Versão: 1.0Status: Aprovado