Requisitos Funcionais
Sport Tech Club - Especificação Completa de Requisitos Funcionais
Convenções
Identificação
- Formato: RF-[MÓDULO]-[NNN]
- Exemplo: RF-IAM-001
Priorização MoSCoW
| Prioridade | Significado | % Esperado |
|---|---|---|
| Must | Obrigatório para MVP | 60% |
| Should | Importante, mas não crítico | 20% |
| Could | Desejável se houver tempo | 15% |
| Won't | Fora do escopo atual | 5% |
Status
- Proposto - Em análise
- Aprovado - Validado pelo PO
- Implementado - Em produção
1. Identity & Access Management (RF-IAM)
RF-IAM-001: Cadastro de Usuário
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir que novos usuários se cadastrem fornecendo nome, email, senha e aceitação dos termos de uso.
Critérios de Aceite:
Given eu estou na página de cadastro
When eu preencho nome "João Silva"
And eu preencho email válido "joao@email.com"
And eu preencho senha que atende aos requisitos
And eu aceito os termos de uso
And eu clico em "Criar conta"
Then minha conta deve ser criada
And eu devo receber email de confirmação
And eu devo ser redirecionado para completar meu perfilRegras de Negócio:
- RN-001: Senha mínimo 8 caracteres, 1 maiúscula, 1 número, 1 especial
- RN-002: Email deve ser único no sistema
- RN-003: Termos de uso devem ser aceitos (LGPD)
Dependências: Nenhuma
RF-IAM-002: Login com Email/Senha
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir login com email e senha cadastrados.
Critérios de Aceite:
Given eu tenho uma conta ativa
When eu acesso a página de login
And eu preencho meu email e senha corretos
And eu clico em "Entrar"
Then eu devo ser autenticado
And eu devo ser redirecionado para a página inicial
And meu nome deve aparecer no menuRegras de Negócio:
- RN-004: Bloquear conta após 5 tentativas falhas por 30 minutos
- RN-005: Token JWT expira em 24h (refresh token 7 dias)
Dependências: RF-IAM-001
RF-IAM-003: Login Social (Google/Apple)
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve permitir login via provedores OAuth (Google, Apple).
Critérios de Aceite:
Given eu estou na página de login
When eu clico em "Continuar com Google"
And eu autorizo o acesso no popup do Google
Then eu devo ser autenticado
And minha conta deve ser criada/vinculada automaticamenteDependências: RF-IAM-001
RF-IAM-004: Recuperação de Senha
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir recuperação de senha via email.
Critérios de Aceite:
Given eu esqueci minha senha
When eu clico em "Esqueci minha senha"
And eu informo meu email cadastrado
Then eu devo receber um email com link de redefinição
And o link deve expirar em 1 hora
When eu acesso o link e defino nova senha
Then minha senha deve ser atualizada
And eu devo conseguir fazer login com a nova senhaDependências: RF-IAM-001
RF-IAM-005: Autenticação Multi-Fator (MFA)
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve suportar MFA via TOTP (Google Authenticator).
Critérios de Aceite:
Given eu estou nas configurações de segurança
When eu ativo MFA
And eu escaneio o QR code com meu app autenticador
And eu confirmo com um código válido
Then MFA deve estar ativo na minha conta
And eu devo receber códigos de recuperação
Given MFA está ativo
When eu faço login com email/senha
Then eu devo informar o código do autenticadorRegras de Negócio:
- RN-006: MFA obrigatório para ARENA_OWNER e roles administrativas
Dependências: RF-IAM-002
RF-IAM-006: Gestão de Perfil de Usuário
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir que o usuário gerencie seus dados pessoais.
Critérios de Aceite:
Given eu estou logado
When eu acesso "Meu Perfil"
Then eu devo poder editar: nome, telefone, foto, data de nascimento
And eu devo poder alterar minha senha
And eu devo poder gerenciar preferências de notificação
When eu salvo as alterações
Then os dados devem ser atualizados
And eu devo ver confirmação "Perfil atualizado"Dependências: RF-IAM-002
RF-IAM-007: Gestão de Roles (RBAC)
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve implementar controle de acesso baseado em roles.
Roles Disponíveis:
- SUPER_ADMIN: Acesso total ao sistema
- ARENA_OWNER: Dono de arena(s)
- ARENA_MANAGER: Gerente de arena
- RECEPTIONIST: Recepcionista
- INSTRUCTOR: Professor/Instrutor
- PLAYER: Jogador (default)
Critérios de Aceite:
Given eu sou ARENA_OWNER
When eu acesso o painel administrativo
Then eu devo ver opções de gestão da arena
And eu devo poder atribuir roles a outros usuários
Given eu sou PLAYER
When eu tento acessar o painel administrativo
Then eu devo ser bloqueado com "Acesso não autorizado"Dependências: RF-IAM-002
RF-IAM-008: Convite de Usuários
Prioridade: Should | Status: Aprovado
Descrição: Administradores podem convidar usuários para a arena.
Critérios de Aceite:
Given eu sou ARENA_OWNER
When eu acesso "Equipe" > "Convidar"
And eu preencho email e role
Then um convite deve ser enviado
When o convidado aceita
Then ele deve ser vinculado à minha arena com a role definidaDependências: RF-IAM-007
RF-IAM-009: Logout
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir logout seguro.
Critérios de Aceite:
Given eu estou logado
When eu clico em "Sair"
Then minha sessão deve ser encerrada
And meus tokens devem ser invalidados
And eu devo ser redirecionado para a página de loginDependências: RF-IAM-002
RF-IAM-010: Logout de Todos os Dispositivos
Prioridade: Could | Status: Proposto
Descrição: O sistema deve permitir encerrar todas as sessões ativas.
Critérios de Aceite:
Given eu estou logado em múltiplos dispositivos
When eu acesso "Segurança" > "Sair de todos os dispositivos"
And eu confirmo a ação
Then todas as minhas sessões devem ser encerradas
And eu devo fazer login novamenteDependências: RF-IAM-009
RF-IAM-011: Verificação de Email
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve verificar emails de novos usuários.
Critérios de Aceite:
Given eu me cadastrei
When eu recebo o email de verificação
And eu clico no link de confirmação
Then meu email deve ser marcado como verificado
And eu devo ter acesso completo à plataformaDependências: RF-IAM-001
RF-IAM-012: Verificação de Telefone
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve verificar telefones via SMS/WhatsApp.
Critérios de Aceite:
Given eu informei meu telefone
When eu solicito verificação
Then eu devo receber código via SMS
When eu insiro o código correto
Then meu telefone deve ser verificadoDependências: RF-IAM-006
RF-IAM-013: Preferências de Privacidade
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir controle de privacidade (LGPD).
Critérios de Aceite:
Given eu estou nas configurações de privacidade
Then eu devo poder controlar:
- Visibilidade do perfil (público/privado)
- Aparecer em rankings
- Compartilhar estatísticas
- Receber comunicações de marketing
And todas as alterações devem ser registradas em log de auditoriaDependências: RF-IAM-006
RF-IAM-014: Exclusão de Conta (LGPD)
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir exclusão de conta conforme LGPD.
Critérios de Aceite:
Given eu quero excluir minha conta
When eu acesso "Privacidade" > "Excluir conta"
And eu confirmo com minha senha
Then minha conta deve ser marcada para exclusão
And após 30 dias meus dados devem ser anonimizados
And eu devo poder cancelar a exclusão dentro de 30 diasRegras de Negócio:
- RN-007: Manter dados anonimizados para fins legais por 5 anos
Dependências: RF-IAM-006
RF-IAM-015: Exportação de Dados (LGPD)
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir exportação de dados pessoais.
Critérios de Aceite:
Given eu quero meus dados
When eu solicito exportação em "Privacidade"
Then o sistema deve gerar arquivo JSON/PDF
And eu devo receber notificação quando pronto
And o download deve estar disponível por 7 diasDependências: RF-IAM-006
RF-IAM-016: Gestão de Sessões Ativas
Prioridade: Could | Status: Proposto
Descrição: O sistema deve mostrar sessões ativas e permitir encerramento.
Critérios de Aceite:
Given eu acesso "Segurança" > "Sessões"
Then eu devo ver lista de dispositivos conectados
And cada sessão deve mostrar: dispositivo, localização, última atividade
When eu clico em "Encerrar" em uma sessão
Then aquela sessão deve ser invalidadaDependências: RF-IAM-009
RF-IAM-017: Bloqueio de Conta por Admin
Prioridade: Must | Status: Aprovado
Descrição: Administradores devem poder bloquear usuários.
Critérios de Aceite:
Given eu sou ARENA_OWNER
When eu acesso um usuário problemático
And eu clico em "Bloquear"
And eu informo o motivo
Then o usuário não deve conseguir acessar minha arena
And ele deve receber notificação de bloqueioDependências: RF-IAM-007
RF-IAM-018: Histórico de Acesso
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve manter log de acessos.
Critérios de Aceite:
Given eu acesso "Segurança" > "Histórico"
Then eu devo ver últimos 50 acessos
And cada entrada deve mostrar: data, IP, dispositivo, localização
And acessos suspeitos devem estar destacadosDependências: RF-IAM-002
RF-IAM-019: Termos de Uso e Políticas
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve exibir e registrar aceite de termos.
Critérios de Aceite:
Given os termos foram atualizados
When eu faço login
Then eu devo ser forçado a aceitar os novos termos
And o aceite deve ser registrado com timestamp e IPDependências: RF-IAM-001
RF-IAM-020: Integração com Keycloak
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve usar Keycloak para gestão de identidade.
Critérios de Aceite:
Given Keycloak está configurado
Then todas as operações de autenticação devem passar pelo Keycloak
And tokens devem ser validados pelo Keycloak
And roles devem ser sincronizadas com KeycloakDependências: Infraestrutura
2. Arena Management (RF-ARENA)
RF-ARENA-001: Cadastro de Arena
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir cadastro de novas arenas.
Critérios de Aceite:
Given eu sou ARENA_OWNER
When eu acesso "Nova Arena"
And eu preencho: nome, CNPJ, endereço, telefone, email
And eu faço upload do logo
Then a arena deve ser criada em status "Pendente"
And a equipe deve validar o CNPJ
When aprovada, a arena deve ficar "Ativa"Regras de Negócio:
- RN-010: CNPJ deve ser válido e único
- RN-011: Endereço deve ser geocodificado
Dependências: RF-IAM-007
RF-ARENA-002: Edição de Arena
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir edição dos dados da arena.
Critérios de Aceite:
Given eu sou ARENA_OWNER ou ARENA_MANAGER
When eu acesso "Configurações da Arena"
Then eu devo poder editar: nome, descrição, contatos, fotos
And alterações em CNPJ/endereço devem passar por aprovaçãoDependências: RF-ARENA-001
RF-ARENA-003: Cadastro de Quadra
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir cadastro de quadras.
Critérios de Aceite:
Given eu sou ARENA_MANAGER
When eu acesso "Quadras" > "Nova Quadra"
And eu preencho: nome, código, esporte, superfície
And eu defino: coberta, iluminação, max jogadores
Then a quadra deve ser criada
And ela deve aparecer na grade de horáriosRegras de Negócio:
- RN-012: Código da quadra único por arena
Dependências: RF-ARENA-001
RF-ARENA-004: Configuração de Horários
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir definir horários de funcionamento.
Critérios de Aceite:
Given eu sou ARENA_MANAGER
When eu acesso "Horários de Funcionamento"
Then eu devo poder definir para cada dia da semana:
- Horário de abertura
- Horário de fechamento
- Se está aberto ou fechado
And as reservas devem respeitar esses horáriosDependências: RF-ARENA-001
RF-ARENA-005: Datas Especiais
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve permitir configurar feriados e eventos.
Critérios de Aceite:
Given eu sou ARENA_MANAGER
When eu cadastro uma data especial
And eu defino: tipo (feriado, evento, manutenção)
And eu defino horários alternativos ou fechamento
Then a agenda deve refletir essa alteração
And reservas conflitantes devem ser notificadasDependências: RF-ARENA-004
RF-ARENA-006: Gestão de Amenidades
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve permitir cadastro de amenidades.
Critérios de Aceite:
Given eu sou ARENA_MANAGER
When eu acesso "Amenidades"
Then eu devo poder adicionar/remover:
- Estacionamento
- Vestiários
- Wi-Fi
- Lanchonete
- Loja
And essas informações devem aparecer na página da arenaDependências: RF-ARENA-001
RF-ARENA-007: Galeria de Fotos
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve permitir upload de fotos da arena.
Critérios de Aceite:
Given eu sou ARENA_MANAGER
When eu acesso "Fotos"
Then eu devo poder fazer upload de até 20 fotos
And eu devo poder ordenar as fotos
And eu devo poder definir foto de capa
And as fotos devem aparecer na página públicaRegras de Negócio:
- RN-013: Imagens max 5MB, formatos JPG/PNG/WebP
Dependências: RF-ARENA-001
RF-ARENA-008: Manutenção de Quadra
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir bloquear quadra para manutenção.
Critérios de Aceite:
Given eu sou ARENA_MANAGER
When eu coloco uma quadra em manutenção
And eu defino período e motivo
Then a quadra não deve aceitar novas reservas nesse período
And reservas existentes devem ser canceladas/reagendadas
And os clientes devem ser notificadosDependências: RF-ARENA-003
RF-ARENA-009: Status da Quadra em Tempo Real
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve mostrar status atual de cada quadra.
Critérios de Aceite:
Given eu acesso a página de quadras
Then eu devo ver para cada quadra:
- Status: Disponível, Ocupada, Manutenção
- Próximo horário disponível
- Quem está jogando (se ocupada)
And o status deve atualizar em tempo real via WebSocketDependências: RF-ARENA-003
RF-ARENA-010: Regras de Preço por Quadra
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir definir preços por quadra.
Critérios de Aceite:
Given eu sou ARENA_MANAGER
When eu acesso "Preços" de uma quadra
Then eu devo poder definir:
- Preço base por hora
- Preço por dia da semana (seg-sex vs sáb-dom)
- Preço por horário (manhã, tarde, noite)
- Preço mínimo e máximoDependências: RF-ARENA-003
RF-ARENA-011: Precificação Dinâmica
Prioridade: Could | Status: Proposto
Descrição: O sistema deve suportar preços dinâmicos baseados em demanda.
Critérios de Aceite:
Given precificação dinâmica está ativa
When a ocupação passa de 80%
Then os preços devem aumentar em até 20%
When a ocupação está abaixo de 30%
Then os preços podem diminuir em até 15%Regras de Negócio:
- RN-014: Limites min/max devem ser respeitados
Dependências: RF-ARENA-010
RF-ARENA-012: Dashboard da Arena
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve fornecer dashboard de gestão.
Critérios de Aceite:
Given eu sou ARENA_MANAGER
When eu acesso o dashboard
Then eu devo ver:
- Ocupação do dia
- Reservas pendentes
- Faturamento do dia/semana/mês
- Alertas e notificações
- Próximas reservasDependências: RF-ARENA-001
RF-ARENA-013: Configurações de Reserva
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir configurar regras de reserva.
Critérios de Aceite:
Given eu sou ARENA_MANAGER
When eu acesso "Configurações de Reserva"
Then eu devo poder definir:
- Antecedência mínima (ex: 2 horas)
- Antecedência máxima (ex: 30 dias)
- Duração mínima/máxima
- Política de cancelamento
- Pagamento obrigatório antecipadoDependências: RF-ARENA-001
RF-ARENA-014: Integrações Externas
Prioridade: Could | Status: Proposto
Descrição: O sistema deve permitir integrações com sistemas externos.
Critérios de Aceite:
Given eu sou ARENA_OWNER
When eu acesso "Integrações"
Then eu devo poder conectar:
- Google Calendar
- iCal
- Sistemas de contabilidade
- ERPsDependências: RF-ARENA-001
RF-ARENA-015: Multi-Unidades
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve suportar múltiplas unidades por tenant.
Critérios de Aceite:
Given eu sou ARENA_OWNER com plano Enterprise
When eu adiciono uma nova unidade
Then ela deve aparecer no meu painel
And eu devo poder alternar entre unidades
And relatórios devem consolidar todas as unidadesDependências: RF-ARENA-001
3. Scheduling - Reservas (RF-SCHED)
RF-SCHED-001: Buscar Disponibilidade
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir buscar horários disponíveis.
Critérios de Aceite:
Given eu estou na página de reservas
When eu seleciono: data, esporte, horário preferido
Then eu devo ver quadras disponíveis
And cada opção deve mostrar: quadra, preço, duração
And horários ocupados devem estar desabilitadosDependências: RF-ARENA-003, RF-ARENA-004
RF-SCHED-002: Criar Reserva Avulsa
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir criar reserva única.
Critérios de Aceite:
Given eu sou PLAYER logado
And encontrei um horário disponível
When eu clico em "Reservar"
And eu confirmo os dados
And eu efetuo o pagamento
Then a reserva deve ser criada com status "Confirmada"
And eu devo receber confirmação por email/push
And o horário deve ficar bloqueado para outrosDependências: RF-SCHED-001, RF-PAY-001
RF-SCHED-003: Criar Reserva Recorrente
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve permitir reservas recorrentes.
Critérios de Aceite:
Given eu quero reservar toda semana
When eu crio uma reserva
And eu marco "Repetir semanalmente"
And eu defino quantidade de repetições ou data final
Then múltiplas reservas devem ser criadas
And eu devo ver resumo com todas as datas
And o valor total deve ser calculadoRegras de Negócio:
- RN-020: Máximo 12 semanas de recorrência
- RN-021: Desconto de 10% para mensalistas
Dependências: RF-SCHED-002
RF-SCHED-004: Cancelar Reserva
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir cancelar reservas.
Critérios de Aceite:
Given eu tenho uma reserva futura
When eu acesso "Minhas Reservas"
And eu clico em "Cancelar"
Then o sistema deve verificar a política de cancelamento
And mostrar se haverá reembolso
When eu confirmo
Then a reserva deve ser cancelada
And o reembolso processado conforme políticaRegras de Negócio:
- RN-022: Cancelamento >24h: reembolso total
- RN-023: Cancelamento 2-24h: reembolso 50%
- RN-024: Cancelamento <2h: sem reembolso
Dependências: RF-SCHED-002
RF-SCHED-005: Reagendar Reserva
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve permitir reagendar reservas.
Critérios de Aceite:
Given eu tenho uma reserva futura
When eu clico em "Reagendar"
And eu seleciono novo horário disponível
Then a reserva deve ser movida
And se houver diferença de preço, cobrar/creditar
And notificações devem ser enviadasRegras de Negócio:
- RN-025: Reagendamento apenas com >2h de antecedência
Dependências: RF-SCHED-002
RF-SCHED-006: Check-in
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir check-in na chegada.
Critérios de Aceite:
Given eu tenho uma reserva para agora
When eu acesso o app dentro de 50m da arena
And eu clico em "Check-in"
Then meu check-in deve ser registrado
And a quadra deve mostrar status "Em uso"
Alternative: Check-in via QR Code
Given eu estou na arena
When eu escaneio o QR code na quadra
Then meu check-in deve ser registradoDependências: RF-SCHED-002
RF-SCHED-007: No-Show
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve tratar ausências.
Critérios de Aceite:
Given uma reserva não teve check-in
And passaram 15 minutos do horário
Then a reserva deve ser marcada como "No-show"
And penalidade deve ser aplicada conforme política
And a quadra deve ficar disponível para walk-inRegras de Negócio:
- RN-026: 3 no-shows = bloqueio temporário de 7 dias
Dependências: RF-SCHED-006
RF-SCHED-008: Lista de Espera
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve permitir entrar em lista de espera.
Critérios de Aceite:
Given o horário que eu quero está ocupado
When eu clico em "Entrar na lista de espera"
Then eu devo ser adicionado à lista
When uma vaga abrir (cancelamento)
Then eu devo ser notificado
And eu devo ter 15 minutos para confirmarDependências: RF-SCHED-001
RF-SCHED-009: Adicionar Participantes
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve permitir adicionar participantes.
Critérios de Aceite:
Given eu estou criando/editando uma reserva
When eu adiciono participantes por email/telefone
Then eles devem receber convite
And eles podem confirmar ou recusar
And a lista de participantes deve aparecer na reservaDependências: RF-SCHED-002
RF-SCHED-010: Divisão de Pagamento
Prioridade: Could | Status: Proposto
Descrição: O sistema deve permitir dividir pagamento entre participantes.
Critérios de Aceite:
Given eu tenho uma reserva com 4 participantes
When eu ativo "Dividir pagamento"
Then cada participante deve receber link de pagamento
And a reserva só é confirmada quando todos pagaremDependências: RF-SCHED-009, RF-PAY-001
RF-SCHED-011: Reserva pela Recepção
Prioridade: Must | Status: Aprovado
Descrição: Recepcionistas devem poder criar reservas.
Critérios de Aceite:
Given eu sou RECEPTIONIST
When eu acesso a agenda
And eu clico em um horário vago
Then eu devo poder criar reserva para um cliente
And eu devo poder buscar cliente por nome/telefone
And eu devo poder criar cliente novoDependências: RF-SCHED-002, RF-IAM-007
RF-SCHED-012: Bloqueio de Horário
Prioridade: Must | Status: Aprovado
Descrição: Staff deve poder bloquear horários.
Critérios de Aceite:
Given eu sou ARENA_MANAGER
When eu seleciono um horário
And eu clico em "Bloquear"
And eu informo motivo (aula, evento, manutenção)
Then o horário não deve aceitar reservas
And deve aparecer como "Bloqueado" na agendaDependências: RF-ARENA-003
RF-SCHED-013: Visualização de Agenda
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve exibir agenda visual.
Critérios de Aceite:
Given eu acesso a agenda
Then eu devo poder ver:
- Visão por dia (todas as quadras)
- Visão por semana
- Visão por quadra específica
And cada reserva deve mostrar: cliente, horário, status
And eu devo poder navegar entre dias/semanasDependências: RF-ARENA-003
RF-SCHED-014: Histórico de Reservas
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve manter histórico completo.
Critérios de Aceite:
Given eu sou PLAYER
When eu acesso "Minhas Reservas" > "Histórico"
Then eu devo ver todas as reservas passadas
And cada uma deve mostrar: data, quadra, valor, status
And eu devo poder filtrar por período/arena
Given eu sou ARENA_MANAGER
Then eu devo ver histórico de todas as reservas da arenaDependências: RF-SCHED-002
RF-SCHED-015: Lembretes Automáticos
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve enviar lembretes de reservas.
Critérios de Aceite:
Given eu tenho uma reserva amanhã
Then eu devo receber lembrete 24h antes
And eu devo receber lembrete 2h antes
And os lembretes devem conter: data, hora, local, QR codeDependências: RF-SCHED-002, RF-NOTIF-001
RF-SCHED-016: Conflito de Horário
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve prevenir double-booking.
Critérios de Aceite:
Given uma quadra está reservada das 18h às 19h
When outro usuário tenta reservar 18:30
Then deve ser bloqueado com "Horário indisponível"
And deve ver sugestões de horários próximosDependências: RF-SCHED-001
RF-SCHED-017: Extensão de Reserva
Prioridade: Could | Status: Proposto
Descrição: O sistema deve permitir estender reserva em andamento.
Critérios de Aceite:
Given eu estou jogando
And o próximo horário está disponível
When eu solicito extensão pelo app
Then eu devo poder adicionar mais tempo
And o pagamento adicional deve ser processadoDependências: RF-SCHED-002, RF-PAY-001
RF-SCHED-018: Reserva de Pacote de Horas
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve suportar pacotes de horas pré-pagos.
Critérios de Aceite:
Given eu comprei um pacote de 10 horas
When eu faço uma reserva
Then eu devo poder usar horas do pacote
And o saldo deve ser atualizado
And eu devo ver saldo restanteDependências: RF-SCHED-002, RF-PAY-005
RF-SCHED-019: Aula/Clínica
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve suportar reservas de aula.
Critérios de Aceite:
Given eu sou INSTRUCTOR
When eu crio uma aula
And eu defino: horário, quadra, vagas, preço por aluno
Then a aula deve aparecer para alunos
And alunos podem se inscrever
And o pagamento é por alunoDependências: RF-SCHED-002, RF-IAM-007
RF-SCHED-020: Walk-in
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve suportar reservas de última hora.
Critérios de Aceite:
Given eu estou na arena sem reserva
When o RECEPTIONIST cria reserva walk-in
Then a reserva deve começar imediatamente
And o pagamento pode ser no local
And deve haver flag "Walk-in" na reservaDependências: RF-SCHED-011
RF-SCHED-021: Reserva Pendente de Aprovação
Prioridade: Could | Status: Proposto
Descrição: Algumas reservas podem requerer aprovação.
Critérios de Aceite:
Given a arena requer aprovação para novos clientes
When um novo cliente solicita reserva
Then ela fica como "Pendente"
And o ARENA_MANAGER é notificado
When ele aprova
Then a reserva é confirmada e cliente notificadoDependências: RF-SCHED-002
RF-SCHED-022: Reserva por Telefone
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve registrar reservas por telefone.
Critérios de Aceite:
Given um cliente liga para a arena
When o RECEPTIONIST cria reserva
And marca origem como "Telefone"
Then a reserva é criada normalmente
And SMS de confirmação é enviado ao clienteDependências: RF-SCHED-011
RF-SCHED-023: Reserva de Evento
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve suportar eventos corporativos.
Critérios de Aceite:
Given uma empresa quer reservar múltiplas quadras
When eu crio reserva tipo "Evento"
And eu seleciono múltiplas quadras e horários
Then todas as quadras são bloqueadas
And eu posso gerar orçamento e contratoDependências: RF-SCHED-002
RF-SCHED-024: Notificação de Vaga
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve notificar quando surgir vaga.
Critérios de Aceite:
Given eu marquei interesse em um horário ocupado
When esse horário é cancelado
Then eu devo receber notificação push imediata
And eu devo ter 10 minutos de prioridade para reservarDependências: RF-SCHED-008
RF-SCHED-025: Reserva Favorita
Prioridade: Could | Status: Proposto
Descrição: O sistema deve lembrar preferências de reserva.
Critérios de Aceite:
Given eu sempre reservo quinta 19h na Quadra 2
When eu acesso "Nova Reserva"
Then devo ver sugestão "Reservar seu horário habitual?"
When eu confirmo
Then a reserva é criada rapidamenteDependências: RF-SCHED-002
4. Queue Management (RF-QUEUE)
RF-QUEUE-001: Visualizar Fila
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve exibir fila de espera por quadra.
Critérios de Aceite:
Given eu estou na página de uma quadra
Then eu devo ver a fila de espera atual
And devo ver: posição, nome/apelido, tempo estimado
And a fila deve atualizar em tempo realDependências: RF-ARENA-003
RF-QUEUE-002: Entrar na Fila
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir entrar na fila.
Critérios de Aceite:
Given eu fiz check-in na arena
And eu quero jogar na Quadra 1
When eu clico em "Entrar na fila"
Then eu devo ser adicionado ao final da fila
And devo ver minha posição e tempo estimado
And devo receber notificação quando for minha vezDependências: RF-SCHED-006
RF-QUEUE-003: Sair da Fila
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir sair da fila.
Critérios de Aceite:
Given eu estou na fila
When eu clico em "Sair da fila"
Then eu devo ser removido
And as posições devem ser atualizadasDependências: RF-QUEUE-002
RF-QUEUE-004: Chamada para Jogar
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve chamar próximo da fila.
Critérios de Aceite:
Given uma partida terminou
And há pessoas na fila
When o próximo é chamado
Then ele deve receber notificação push
And deve ter 2 minutos para aceitar
And a quadra deve mostrar "Aguardando próximo"Regras de Negócio:
- RN-030: Timeout de 2 minutos para aceitar
Dependências: RF-QUEUE-002
RF-QUEUE-005: Aceitar/Recusar Chamada
Prioridade: Must | Status: Aprovado
Descrição: O usuário deve poder responder à chamada.
Critérios de Aceite:
Given eu fui chamado para jogar
When eu aceito
Then eu devo ir para a quadra
And a partida deve iniciar
When eu recuso ou não respondo em 2min
Then eu devo ir para o final da fila
And o próximo deve ser chamadoDependências: RF-QUEUE-004
RF-QUEUE-006: Winner Stays (Ganha-Fica)
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve implementar regra ganha-fica.
Critérios de Aceite:
Given uma partida terminou
When o time vencedor é registrado
Then o vencedor deve permanecer na quadra
And o perdedor deve ir para o final da fila
And o próximo da fila entra como desafianteRegras de Negócio:
- RN-031: Limite de 3 vitórias consecutivas
Dependências: RF-QUEUE-004
RF-QUEUE-007: Limite de Vitórias
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve aplicar limite de vitórias.
Critérios de Aceite:
Given o time atual venceu 3 partidas seguidas
When a partida termina
Then mesmo vencendo, eles devem sair da quadra
And devem ver mensagem "Limite de vitórias atingido"
And os 2 próximos da fila devem jogarDependências: RF-QUEUE-006
RF-QUEUE-008: Registro de Placar
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve permitir registrar placar.
Critérios de Aceite:
Given uma partida está em andamento
When um jogador registra o placar final
Then o outro jogador deve confirmar
When ambos confirmam
Then a partida é encerrada
And o vencedor é determinado
And estatísticas são atualizadasDependências: RF-QUEUE-006
RF-QUEUE-009: Fila por Grupo/Time
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve permitir fila em grupo.
Critérios de Aceite:
Given eu quero jogar com meu parceiro
When eu entro na fila
And eu adiciono meu parceiro (que fez check-in)
Then entramos juntos na fila como time
And somos chamados juntosDependências: RF-QUEUE-002
RF-QUEUE-010: Prioridade na Fila
Prioridade: Could | Status: Proposto
Descrição: O sistema pode implementar prioridades.
Critérios de Aceite:
Given configuração de prioridade está ativa
Then membros VIP têm prioridade
And quem jogou menos hoje tem prioridade
And a fila é ordenada por score de prioridadeDependências: RF-QUEUE-001
RF-QUEUE-011: Tempo Máximo de Jogo
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve limitar tempo por partida.
Critérios de Aceite:
Given a arena define tempo máximo de 30min
When uma partida passa de 30min
Then alerta deve ser enviado aos jogadores
And a recepção deve ser notificada
And após 5min extra, partida é encerrada automaticamenteDependências: RF-QUEUE-006
RF-QUEUE-012: Balanceamento de Times
Prioridade: Could | Status: Proposto
Descrição: O sistema pode sugerir times balanceados.
Critérios de Aceite:
Given 4 jogadores estão prontos para jogar
When o sistema sugere times
Then deve considerar skill rating de cada um
And times devem ter diferença máxima de 100 pontosDependências: RF-QUEUE-006, RF-PLAYER-003
RF-QUEUE-013: Histórico de Partidas
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve manter histórico.
Critérios de Aceite:
Given eu quero ver meu histórico
When eu acesso "Minhas Partidas"
Then devo ver todas as partidas jogadas
And cada uma mostra: data, adversários, placar, resultado
And posso filtrar por esporte/períodoDependências: RF-QUEUE-008
RF-QUEUE-014: Estatísticas de Fila
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve mostrar métricas de fila.
Critérios de Aceite:
Given eu sou ARENA_MANAGER
When eu acesso relatórios de fila
Then devo ver:
- Tempo médio de espera
- Pico de ocupação
- Taxa de desistência
- Jogos por horaDependências: RF-QUEUE-001
RF-QUEUE-015: Notificações de Fila
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve enviar notificações.
Critérios de Aceite:
Given eu estou na fila
Then devo receber notificação quando:
- Minha posição muda
- Estou próximo (2ª posição)
- É minha vez
- Fui removido por inatividadeDependências: RF-QUEUE-002, RF-NOTIF-001
5. Payment (RF-PAY)
RF-PAY-001: Pagamento via PIX
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve aceitar pagamento PIX.
Critérios de Aceite:
Given eu estou finalizando uma reserva
When eu seleciono PIX
Then devo ver QR Code e chave copia-cola
And o QR deve expirar em 30 minutos
When eu pago
Then a confirmação deve chegar em até 30 segundos
And a reserva deve ser confirmada automaticamenteDependências: Integração gateway
RF-PAY-002: Pagamento via Cartão
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve aceitar cartão de crédito/débito.
Critérios de Aceite:
Given eu estou finalizando pagamento
When eu seleciono cartão
And eu preencho dados válidos
And eu seleciono parcelamento (se crédito)
Then o pagamento deve ser processado
And a reserva confirmada em caso de aprovação
And mensagem de erro clara em caso de recusaRegras de Negócio:
- RN-040: Parcelamento até 12x sem juros (> R$100)
Dependências: Integração gateway
RF-PAY-003: Salvar Cartão
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve permitir salvar cartões.
Critérios de Aceite:
Given eu fiz um pagamento com cartão
When eu marco "Salvar para próximas compras"
Then o cartão deve ser tokenizado
And eu devo ver últimos 4 dígitos nas próximas compras
And eu devo poder remover cartões salvosRegras de Negócio:
- RN-041: Não armazenar dados completos (PCI-DSS)
Dependências: RF-PAY-002
RF-PAY-004: Reembolso
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve processar reembolsos.
Critérios de Aceite:
Given uma reserva foi cancelada com direito a reembolso
When o reembolso é solicitado
Then deve ser processado automaticamente
And crédito em PIX: até 24h
And crédito em cartão: até 2 faturas
And o usuário deve ser notificado do statusDependências: RF-PAY-001, RF-PAY-002
RF-PAY-005: Wallet (Carteira Digital)
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve suportar carteira digital.
Critérios de Aceite:
Given eu quero adicionar créditos
When eu seleciono valor e pago
Then os créditos devem aparecer no meu saldo
When eu faço uma reserva
Then posso pagar com saldo da carteira
And sobras ficam como créditoRegras de Negócio:
- RN-042: Créditos não expiram
- RN-043: Créditos não são reembolsáveis em dinheiro
Dependências: RF-PAY-001
RF-PAY-006: Split Payment
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve suportar divisão de pagamento.
Critérios de Aceite:
Given a arena trabalha com instrutores
When um aluno paga uma aula
Then o pagamento deve ser dividido:
- 70% para a arena
- 30% para o instrutor
And cada parte recebe seu repasseDependências: Integração gateway
RF-PAY-007: Cobrança Recorrente
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve suportar mensalidades.
Critérios de Aceite:
Given eu tenho mensalidade ativa
When chega o dia de cobrança
Then o cartão salvo deve ser cobrado
E eu devo receber recibo
Se falhar, devo receber aviso para atualizar cartãoDependências: RF-PAY-003
RF-PAY-008: Extrato Financeiro
Prioridade: Must | Status: Aprovado
Descrição: O usuário deve ver histórico de transações.
Critérios de Aceite:
Given eu acesso "Financeiro"
Then devo ver todas as transações
And cada uma mostra: data, descrição, valor, status
And posso filtrar por período
And posso exportar para PDF/ExcelDependências: RF-PAY-001
RF-PAY-009: Comprovante/Recibo
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve gerar comprovantes.
Critérios de Aceite:
Given um pagamento foi aprovado
Then um recibo deve ser gerado
And enviado por email automaticamente
And disponível para download no app
And deve conter: data, valor, descrição, arenaDependências: RF-PAY-001
RF-PAY-010: Nota Fiscal
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve gerar nota fiscal.
Critérios de Aceite:
Given a arena está configurada para NF
When um pagamento é confirmado
Then a NF deve ser emitida automaticamente
And enviada ao cliente por email
And deve constar CPF/CNPJ do clienteDependências: RF-PAY-001, Integração NF
RF-PAY-011: Pagamento no Local
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve suportar pagamento presencial.
Critérios de Aceite:
Given a arena aceita pagamento no local
When o RECEPTIONIST marca reserva como "Pagar no local"
Then a reserva fica pendente de pagamento
E na chegada, o pagamento é registrado manualmente
E o RECEPTIONIST informa método (dinheiro, cartão, PIX)Dependências: RF-SCHED-011
RF-PAY-012: Cupom de Desconto
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve suportar cupons.
Critérios de Aceite:
Given existe um cupom "PROMO10" de 10% de desconto
When eu aplico o cupom no checkout
Then o desconto deve ser calculado
E o valor final atualizado
Se cupom inválido/expirado, mostrar erroRegras de Negócio:
- RN-044: Cupons podem ter limite de uso
- RN-045: Cupons podem ter valor mínimo de compra
Dependências: RF-PAY-001
RF-PAY-013: Gift Card
Prioridade: Could | Status: Proposto
Descrição: O sistema deve suportar cartões presente.
Critérios de Aceite:
Given eu quero presentear alguém
When eu compro um gift card de R$100
Then devo receber código único
Quando o presenteado usa o código
Então R$100 são creditados na wallet deleDependências: RF-PAY-005
RF-PAY-014: Relatório Financeiro da Arena
Prioridade: Must | Status: Aprovado
Descrição: A arena deve ter relatórios financeiros.
Critérios de Aceite:
Given eu sou ARENA_OWNER
When eu acesso "Financeiro"
Then devo ver:
- Faturamento do período
- Breakdown por quadra/serviço
- Taxas cobradas
- Valor líquido
- Repasses pendentesDependências: RF-PAY-001
RF-PAY-015: Gestão de Repasses
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve gerenciar repasses para instrutores.
Critérios de Aceite:
Given eu sou INSTRUCTOR com splits pendentes
When acesso "Meus Ganhos"
Então vejo saldo disponível
E histórico de repasses
E posso solicitar saque (se > R$50)Dependências: RF-PAY-006
RF-PAY-016: Cobrança de No-Show
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve cobrar por no-shows.
Critérios de Aceite:
Given política de no-show está configurada
When ocorre um no-show
Then se pré-pago: valor é retido
Se pós-pago: cobrança é tentada no cartão salvo
Se falhar: usuário fica com débito pendenteDependências: RF-SCHED-007, RF-PAY-003
RF-PAY-017: Limite de Crédito
Prioridade: Could | Status: Proposto
Descrição: O sistema pode oferecer crédito a clientes frequentes.
Critérios de Aceite:
Given eu sou cliente há 6 meses sem inadimplência
When a arena ativa crédito para mim
Então posso fazer reservas sem pagar na hora
E recebo fatura consolidada semanal/mensalDependências: RF-PAY-001
RF-PAY-018: Integração Contábil
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve integrar com sistemas contábeis.
Critérios de Aceite:
Given a arena usa ContaAzul
When um pagamento é processado
Then a transação é sincronizada automaticamente
E aparece no dashboard contábilDependências: RF-PAY-001, Integração ERP
RF-PAY-019: Antecipação de Recebíveis
Prioridade: Could | Status: Proposto
Descrição: A arena pode antecipar recebíveis.
Critérios de Aceite:
Given a arena tem recebíveis futuros (cartão parcelado)
When solicita antecipação
Then vê taxa e valor líquido
Quando confirma, recebe em D+1Dependências: RF-PAY-002
RF-PAY-020: Boleto Bancário
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve suportar boleto.
Critérios de Aceite:
Given eu seleciono pagamento por boleto
Then um boleto com vencimento em 3 dias é gerado
E enviado por email
Quando pago, a compensação ocorre em D+1/D+2
E a reserva é confirmadaRegras de Negócio:
- RN-046: Boleto apenas para valores > R$50
Dependências: Integração gateway
6. Gamification (RF-GAME)
RF-GAME-001: Sistema de XP
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve atribuir XP por atividades.
Critérios de Aceite:
Given eu completo uma partida
Then devo ganhar XP baseado em:
- Duração do jogo
- Resultado (vitória = bônus)
- Primeiro jogo do dia (bônus)
And meu total de XP deve ser atualizado
And devo ver animação de XP ganhoTabela de XP:
| Atividade | XP |
|---|---|
| Partida jogada | 50 |
| Vitória | +25 |
| Check-in | 10 |
| Primeiro jogo do dia | +20 |
| Streak (sequência) | +10/dia |
Dependências: RF-QUEUE-008
RF-GAME-002: Sistema de Níveis
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve ter progressão por níveis.
Critérios de Aceite:
Given eu tenho XP suficiente para subir de nível
When meu XP ultrapassa o limiar
Then devo subir de nível
And ver animação de level up
And receber notificação
And desbloquear benefícios do nívelTabela de Níveis:
| Nível | XP Necessário | Benefício |
|---|---|---|
| 1-5 | 0-500 | Badge iniciante |
| 6-10 | 501-1500 | 5% desconto |
| 11-20 | 1501-5000 | 10% desconto |
| 21-50 | 5001-20000 | Prioridade na fila |
| 51+ | 20000+ | VIP |
Dependências: RF-GAME-001
RF-GAME-003: Conquistas (Achievements)
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve ter sistema de conquistas.
Critérios de Aceite:
Given eu atingi um marco (ex: 10 jogos)
Then a conquista deve ser desbloqueada
And devo ver popup de conquista
And ela deve aparecer no meu perfil
And devo ganhar XP bônusExemplos de Conquistas:
- Primeiro Jogo
- 10 Jogos
- 100 Jogos
- 5 Vitórias Seguidas
- Jogou nos 3 esportes
- Madrugador (jogo antes das 8h)
- Coruja (jogo após 22h)
Dependências: RF-GAME-001
RF-GAME-004: Streaks (Sequências)
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve rastrear atividade contínua.
Critérios de Aceite:
Given eu joguei ontem
When eu jogo hoje
Then meu streak aumenta em 1
And ganho XP bônus progressivo
Quando não jogo por 2 dias
Então meu streak é resetado para 0Regras de Negócio:
- RN-050: XP bônus = 10 × dias de streak (max 100)
Dependências: RF-GAME-001
RF-GAME-005: Leaderboards (Rankings)
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve exibir rankings.
Critérios de Aceite:
Given eu acesso "Rankings"
Then devo ver rankings por:
- XP total
- Vitórias
- Streak atual
- Por esporte
- Por arena
And devo ver minha posição
And top 10 devem ter destaqueDependências: RF-GAME-001
RF-GAME-006: Skill Rating
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve calcular rating de habilidade.
Critérios de Aceite:
Given eu completei uma partida
Then meu rating deve ser atualizado usando sistema ELO
And vitória contra melhor = mais pontos
And derrota para pior = menos pontos
And rating inicial = 1500Dependências: RF-QUEUE-008
RF-GAME-007: Perfil de Jogador Público
Prioridade: Should | Status: Aprovado
Descrição: Jogadores devem ter perfil público.
Critérios de Aceite:
Given eu acesso o perfil de outro jogador
Then devo ver (se público):
- Nível e XP
- Conquistas
- Estatísticas
- Skill rating por esporte
And devo poder adicionar como amigoDependências: RF-GAME-002, RF-IAM-013
RF-GAME-008: Desafios Diários/Semanais
Prioridade: Could | Status: Proposto
Descrição: O sistema pode ter desafios periódicos.
Critérios de Aceite:
Given existe um desafio "Jogue 3 partidas esta semana"
When eu completo o desafio
Then devo receber recompensa (XP bônus, badge)
And o desafio deve ser marcado como concluídoDependências: RF-GAME-001
RF-GAME-009: Recompensas por Nível
Prioridade: Should | Status: Aprovado
Descrição: Níveis devem dar benefícios reais.
Critérios de Aceite:
Given eu subi para nível 10
Then devo desbloquear:
- Cupom de 5% desconto
- Badge exclusiva
- Prioridade na lista de espera
And os benefícios devem ser aplicados automaticamenteDependências: RF-GAME-002
RF-GAME-010: Histórico de Confrontos
Prioridade: Could | Status: Proposto
Descrição: O sistema deve mostrar histórico de rivais.
Critérios de Aceite:
Given eu joguei várias vezes contra o mesmo jogador
When eu vejo o perfil dele
Then devo ver nosso histórico de confrontos
And estatísticas head-to-headDependências: RF-QUEUE-008
RF-GAME-011: Temporadas
Prioridade: Could | Status: Proposto
Descrição: O sistema pode ter temporadas com reset de rankings.
Critérios de Aceite:
Given uma temporada terminou
Then rankings são arquivados
And top jogadores recebem recompensas
And nova temporada começa com rankings zerados
And histórico fica disponívelDependências: RF-GAME-005
RF-GAME-012: Notificações de Gamificação
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve notificar progressos.
Critérios de Aceite:
Given eu estou ativo no app
Then devo receber notificação quando:
- Subo de nível
- Desbloqueo conquista
- Meu streak está em risco
- Alguém me ultrapassou no rankingDependências: RF-GAME-001, RF-NOTIF-001
RF-GAME-013: Compartilhamento Social
Prioridade: Could | Status: Proposto
Descrição: O sistema deve permitir compartilhar conquistas.
Critérios de Aceite:
Given eu desbloqueei uma conquista
When eu clico em "Compartilhar"
Then devo poder postar em Instagram/WhatsApp
And a imagem deve conter: conquista, meu nível, brandingDependências: RF-GAME-003
RF-GAME-014: Match MVP
Prioridade: Could | Status: Proposto
Descrição: O sistema pode eleger MVP da partida.
Critérios de Aceite:
Given uma partida terminou
Then jogadores podem votar no MVP
O mais votado recebe XP bônus
E aparece no histórico da partidaDependências: RF-QUEUE-008
RF-GAME-015: Badges Especiais
Prioridade: Could | Status: Proposto
Descrição: O sistema pode ter badges por eventos.
Critérios de Aceite:
Given é um evento especial (aniversário da arena, torneio)
When eu participo
Then recebo badge comemorativa exclusiva
E ela aparece no meu perfilDependências: RF-GAME-003
7. Notification (RF-NOTIF)
RF-NOTIF-001: Push Notifications
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve enviar notificações push.
Critérios de Aceite:
Given eu tenho o app instalado
And permiti notificações
Then devo receber push para:
- Confirmação de reserva
- Lembretes
- Chamada na fila
- Conquistas
And devo poder abrir o app diretamente da notificaçãoDependências: Firebase/APNs
RF-NOTIF-002: Email Transacional
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve enviar emails transacionais.
Critérios de Aceite:
Given uma ação importante ocorreu
Then email deve ser enviado para:
- Confirmação de cadastro
- Confirmação de reserva
- Recibos de pagamento
- Recuperação de senha
And emails devem usar template responsivo
And devem ter branding da arenaDependências: SendGrid/SES
RF-NOTIF-003: SMS
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve enviar SMS.
Critérios de Aceite:
Given o usuário tem telefone verificado
And a arena ativou SMS
Then SMS deve ser enviado para:
- Confirmação de reserva
- Lembretes (opcional)
- Códigos de verificação
And deve respeitar preferências do usuárioDependências: Twilio
RF-NOTIF-004: WhatsApp Business
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve integrar com WhatsApp.
Critérios de Aceite:
Given a arena tem WhatsApp Business
When eu faço uma reserva
Then posso optar por receber confirmação via WhatsApp
E receber lembretes
E interagir para cancelar/reagendarDependências: WhatsApp Business API
RF-NOTIF-005: Preferências de Notificação
Prioridade: Must | Status: Aprovado
Descrição: O usuário deve controlar suas notificações.
Critérios de Aceite:
Given eu acesso "Configurações" > "Notificações"
Then devo poder habilitar/desabilitar por:
- Canal (push, email, SMS, WhatsApp)
- Tipo (reservas, marketing, social)
And minhas preferências devem ser respeitadasDependências: RF-NOTIF-001
RF-NOTIF-006: In-App Notifications
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve ter central de notificações.
Critérios de Aceite:
Given eu acesso o ícone de sino
Then devo ver histórico de notificações
E poder marcar como lida
E clicar para ir à ação relacionada
E ver badge com contagem de não-lidasDependências: RF-NOTIF-001
RF-NOTIF-007: Notificações Agendadas
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve enviar lembretes agendados.
Critérios de Aceite:
Given eu tenho reserva amanhã
Then devo receber lembrete:
- 24h antes
- 2h antes
And o horário dos lembretes deve ser configurável pela arenaDependências: RF-NOTIF-001
RF-NOTIF-008: Broadcast para Arena
Prioridade: Should | Status: Aprovado
Descrição: A arena deve poder enviar comunicados.
Critérios de Aceite:
Given eu sou ARENA_MANAGER
When eu crio um comunicado
And seleciono destinatários (todos, com reserva, etc.)
Then o comunicado é enviado pelos canais escolhidos
E posso agendar envio futuroDependências: RF-NOTIF-001
RF-NOTIF-009: Templates Personalizáveis
Prioridade: Could | Status: Proposto
Descrição: A arena pode personalizar templates.
Critérios de Aceite:
Given eu sou ARENA_OWNER
When eu acesso "Templates"
Then posso editar texto de emails/SMS
E adicionar logo e cores da marca
E ver preview antes de salvarDependências: RF-NOTIF-002
RF-NOTIF-010: Histórico de Envios
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve registrar envios.
Critérios de Aceite:
Given eu sou ARENA_MANAGER
When eu acesso logs de notificação
Then devo ver:
- Todas as notificações enviadas
- Status (entregue, falha, lida)
- Taxas de aberturaDependências: RF-NOTIF-001
8. Reporting (RF-REP)
RF-REP-001: Dashboard em Tempo Real
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve ter dashboard ao vivo.
Critérios de Aceite:
Given eu sou ARENA_MANAGER
When eu acesso o dashboard
Then devo ver em tempo real:
- Quadras ocupadas/livres
- Fila atual
- Reservas do dia
- Faturamento do diaDependências: RF-ARENA-001
RF-REP-002: Relatório de Ocupação
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve gerar relatório de ocupação.
Critérios de Aceite:
Given eu acesso "Relatórios" > "Ocupação"
When eu seleciono período
Then devo ver:
- Taxa de ocupação por quadra
- Horários mais ocupados (heatmap)
- Comparativo com período anterior
- TendênciasDependências: RF-ARENA-003
RF-REP-003: Relatório Financeiro
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve gerar relatório financeiro.
Critérios de Aceite:
Given eu sou ARENA_OWNER
When eu acesso relatório financeiro
Then devo ver:
- Receita bruta e líquida
- Breakdown por produto/serviço
- Ticket médio
- Crescimento MoM/YoY
- ProjeçõesDependências: RF-PAY-001
RF-REP-004: Relatório de Clientes
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve analisar base de clientes.
Critérios de Aceite:
Given eu acesso relatório de clientes
Then devo ver:
- Novos vs recorrentes
- Frequência média
- LTV (lifetime value)
- Churn rate
- Top clientesDependências: RF-SCHED-002
RF-REP-005: Exportação de Dados
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve permitir exportar relatórios.
Critérios de Aceite:
Given eu estou visualizando um relatório
When eu clico em "Exportar"
Then devo poder escolher formato:
- PDF (formatado)
- Excel (dados brutos)
- CSV (compatibilidade)Dependências: RF-REP-001
RF-REP-006: Agendamento de Relatórios
Prioridade: Could | Status: Proposto
Descrição: O sistema pode enviar relatórios automaticamente.
Critérios de Aceite:
Given eu configuro um relatório agendado
And defino frequência (diário, semanal, mensal)
And defino destinatários
Then o relatório é gerado e enviado por emailDependências: RF-REP-001
RF-REP-007: Comparativo entre Períodos
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve comparar métricas.
Critérios de Aceite:
Given eu seleciono dois períodos
Then devo ver comparativo lado a lado
E variação percentual
E indicadores de melhora/pioraDependências: RF-REP-001
RF-REP-008: KPIs Personalizáveis
Prioridade: Could | Status: Proposto
Descrição: O usuário pode criar métricas customizadas.
Critérios de Aceite:
Given eu quero acompanhar uma métrica específica
When eu crio um KPI customizado
Then ele aparece no meu dashboard
E posso definir alertas de thresholdDependências: RF-REP-001
RF-REP-009: Relatório de Instrutores
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve analisar performance de instrutores.
Critérios de Aceite:
Given eu sou ARENA_OWNER
When eu acesso relatório de instrutores
Then devo ver por instrutor:
- Aulas ministradas
- Alunos atendidos
- Avaliação média
- Receita geradaDependências: RF-SCHED-019
RF-REP-010: Analytics de Engajamento
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve analisar engajamento.
Critérios de Aceite:
Given eu acesso analytics de engajamento
Then devo ver:
- DAU/MAU
- Tempo médio de sessão
- Features mais usadas
- Funil de conversãoDependências: Integração Analytics
9. Player Profile (RF-PLAYER)
RF-PLAYER-001: Perfil Esportivo
Prioridade: Must | Status: Aprovado
Descrição: O sistema deve manter perfil esportivo.
Critérios de Aceite:
Given eu acesso meu perfil esportivo
Then devo poder informar:
- Esportes praticados
- Mão dominante
- Nível auto-declarado
- Anos de experiência
- Horários preferidosDependências: RF-IAM-006
RF-PLAYER-002: Foto e Apelido
Prioridade: Should | Status: Aprovado
Descrição: O jogador pode ter foto e apelido.
Critérios de Aceite:
Given eu edito meu perfil
When eu adiciono foto e apelido
Then eles aparecem na fila e partidas
E outros jogadores podem me identificarDependências: RF-PLAYER-001
RF-PLAYER-003: Skill Rating por Esporte
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve manter rating por esporte.
Critérios de Aceite:
Given eu jogo diferentes esportes
Then devo ter rating separado para:
- Beach Tennis
- Vôlei de praia
- Futevôlei
E cada um evolui independentementeDependências: RF-GAME-006
RF-PLAYER-004: Estatísticas de Jogos
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve calcular estatísticas.
Critérios de Aceite:
Given eu acesso minhas estatísticas
Then devo ver:
- Total de jogos
- Vitórias/Derrotas
- Win rate
- Melhor sequência
- Horas jogadasDependências: RF-QUEUE-008
RF-PLAYER-005: Histórico de Partidas
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve manter histórico.
Critérios de Aceite:
Given eu acesso "Minhas Partidas"
Then devo ver todas as partidas
E cada uma mostra: data, local, adversários, resultado
E posso filtrar por esporte/resultado/períodoDependências: RF-QUEUE-008
RF-PLAYER-006: Parceiros Frequentes
Prioridade: Could | Status: Proposto
Descrição: O sistema deve identificar parceiros.
Critérios de Aceite:
Given eu jogo frequentemente com certas pessoas
Then o sistema sugere eles como parceiros
E mostra estatísticas de quando jogamos juntosDependências: RF-PLAYER-005
RF-PLAYER-007: Adversários Frequentes
Prioridade: Could | Status: Proposto
Descrição: O sistema deve identificar rivais.
Critérios de Aceite:
Given eu enfrento frequentemente certas pessoas
Then o sistema mostra histórico de confrontos
E estatísticas head-to-headDependências: RF-PLAYER-005
RF-PLAYER-008: Agenda Pessoal
Prioridade: Should | Status: Aprovado
Descrição: O jogador deve ver sua agenda.
Critérios de Aceite:
Given eu acesso "Minha Agenda"
Then devo ver todas minhas reservas futuras
E poder sincronizar com Google CalendarDependências: RF-SCHED-002
RF-PLAYER-009: Avaliação de Arenas
Prioridade: Should | Status: Aprovado
Descrição: Jogadores podem avaliar arenas.
Critérios de Aceite:
Given eu joguei em uma arena
When o jogo termina
Then posso avaliar de 1-5 estrelas
E escrever comentário
E a avaliação aparece no perfil da arenaDependências: RF-SCHED-006
RF-PLAYER-010: Busca de Jogadores
Prioridade: Could | Status: Proposto
Descrição: O sistema pode permitir buscar jogadores.
Critérios de Aceite:
Given eu quero encontrar parceiro para jogar
When eu busco jogadores
Then vejo jogadores com perfil público
E posso filtrar por nível/esporte/disponibilidade
E posso enviar convite para jogarDependências: RF-PLAYER-001
10. Tournament (RF-TOURN)
RF-TOURN-001: Criar Torneio
Prioridade: Should | Status: Aprovado
Descrição: A arena pode criar torneios.
Critérios de Aceite:
Given eu sou ARENA_MANAGER
When eu crio um torneio
Then devo informar:
- Nome e descrição
- Data e horários
- Formato (eliminatória, grupos, etc.)
- Número de vagas
- Valor de inscrição
- PremiaçãoDependências: RF-ARENA-001
RF-TOURN-002: Inscrição em Torneio
Prioridade: Should | Status: Aprovado
Descrição: Jogadores podem se inscrever.
Critérios de Aceite:
Given existe um torneio aberto
When eu clico em "Inscrever"
And eu informo meu parceiro (se duplas)
And eu pago a inscrição
Then minha inscrição é confirmada
E apareço na lista de participantesDependências: RF-TOURN-001, RF-PAY-001
RF-TOURN-003: Chaves/Brackets
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve gerar e exibir chaves.
Critérios de Aceite:
Given as inscrições encerraram
When o organizador gera as chaves
Then a chave é criada (sorteio ou seed)
E todos participantes são notificados
E a chave fica visível publicamenteDependências: RF-TOURN-002
RF-TOURN-004: Registro de Resultados
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve registrar resultados.
Critérios de Aceite:
Given uma partida do torneio terminou
When o organizador registra o resultado
Then a chave é atualizada
E os jogadores são notificados
E próximos confrontos são reveladosDependências: RF-TOURN-003
RF-TOURN-005: Classificação/Ranking
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve calcular classificação.
Critérios de Aceite:
Given o torneio está em andamento
Then devo ver classificação atualizada
E em fase de grupos: tabela com pontos
E em eliminatória: posição na chaveDependências: RF-TOURN-004
RF-TOURN-006: Premiação
Prioridade: Could | Status: Proposto
Descrição: O sistema pode registrar premiação.
Critérios de Aceite:
Given o torneio terminou
When o organizador registra premiação
Then vencedores recebem:
- Badge de campeão
- Créditos (se configurado)
- XP bônus
E aparecem no hall da famaDependências: RF-TOURN-004
RF-TOURN-007: Histórico de Torneios
Prioridade: Should | Status: Aprovado
Descrição: O sistema deve manter histórico.
Critérios de Aceite:
Given eu quero ver torneios passados
Then devo ver lista de torneios
E cada um mostra: campeões, resultados, fotos
E posso ver minha participaçãoDependências: RF-TOURN-001
RF-TOURN-008: Divulgação de Torneio
Prioridade: Could | Status: Proposto
Descrição: O sistema pode promover torneios.
Critérios de Aceite:
Given um torneio foi criado
Then ele aparece em destaque na home
E jogadores podem compartilhar
E notificações são enviadas para interessadosDependências: RF-TOURN-001
RF-TOURN-009: Check-in de Torneio
Prioridade: Should | Status: Aprovado
Descrição: Participantes devem confirmar presença.
Critérios de Aceite:
Given eu estou inscrito em um torneio
When chega o dia do torneio
Then devo fazer check-in no app
Se não fizer check-in até horário limite
Então sou desclassificado (WO)Dependências: RF-TOURN-002
RF-TOURN-010: Regulamento
Prioridade: Should | Status: Aprovado
Descrição: O torneio deve ter regulamento.
Critérios de Aceite:
Given eu acesso um torneio
Then devo ver regulamento com:
- Regras do esporte
- Formato de disputa
- Critérios de desempate
- Política de WO
E devo aceitar ao me inscreverDependências: RF-TOURN-001
Resumo
Contagem por Módulo
| Módulo | Must | Should | Could | Total |
|---|---|---|---|---|
| IAM | 12 | 5 | 3 | 20 |
| Arena | 10 | 3 | 2 | 15 |
| Scheduling | 15 | 7 | 3 | 25 |
| Queue | 8 | 5 | 2 | 15 |
| Payment | 10 | 6 | 4 | 20 |
| Gamification | 5 | 5 | 5 | 15 |
| Notification | 4 | 4 | 2 | 10 |
| Reporting | 4 | 4 | 2 | 10 |
| Player | 3 | 5 | 2 | 10 |
| Tournament | 2 | 6 | 2 | 10 |
| Total | 73 | 50 | 27 | 150 |
Distribuição MoSCoW
- Must: 73 (49%)
- Should: 50 (33%)
- Could: 27 (18%)
- Won't: 0 (0%)
Rastreabilidade
Todos os requisitos estão mapeados para:
- Casos de Uso (USE-CASES.md)
- Requisitos Não-Funcionais (NON-FUNCTIONAL-REQUIREMENTS.md)
- Critérios de Aceite (ACCEPTANCE-CRITERIA.md)
- Plano de Testes (TEST-PLAN.md)
Documento gerado em: Janeiro 2025Versão: 1.0Status: Aprovado