Casos de Uso - Sport Tech Club
Versão: 1.0.0
Data: 2026-01-09
Status: Draft
Sumário
- Introdução
- Atores
- Convenções
- UC-AUTH: Autenticação e Autorização
- UC-ARENA: Gestão de Arena
- UC-COURT: Gestão de Quadras
- UC-BOOK: Reservas e Agendamento
- UC-QUEUE: Fila e Alocação Dinâmica
- UC-USER: Gestão de Usuários
- UC-INSTRUCTOR: Professores e Aulas
- UC-ACCESS: Controle de Acesso Físico
- UC-MATCH: Jogos e Partidas
- UC-EVENT: Gestão de Eventos
- UC-COMMERCE: Consumo e Cobrança
- UC-WALLET: Carteira Digital
- UC-GAMIF: Gamificação
- UC-MEDIA: Vídeo e Mídia
- UC-IOT: Dispositivos IoT
- UC-SPONSOR: Patrocínio
- UC-COMM: Comunicação
- UC-REPORT: Relatórios
- Matriz de Rastreabilidade
Introdução
Este documento descreve todos os casos de uso do Sport Tech Club, seguindo o formato UML/Cockburn, com foco em clareza, completude e rastreabilidade com requisitos e regras de negócio.
Objetivo
Detalhar as interações entre atores e sistema, fluxos principais, alternativos e de exceção, garantindo entendimento comum entre stakeholders técnicos e de negócio.
Escopo
Casos de uso cobrem todas as funcionalidades do sistema organizadas por módulos, priorizados para implementação em fases (MVP, Fase 2, Fase 3).
Atores
Atores Primários
| Ator | Descrição | Persona Relacionada |
|---|---|---|
| Player | Jogador/Aluno que utiliza a arena | Ana Paula (Aluno), Pedro Henrique (Avulso) |
| Arena Owner | Proprietário/Dono da arena | Roberto Silva |
| Arena Manager | Gerente operacional da arena | Mariana Costa |
| Receptionist | Atendente da recepção | Mariana Costa |
| Instructor | Professor/Instrutor de aulas | Carlos Eduardo |
| Staff | Funcionário (bar, manutenção) | Lucas Ferreira |
| Event Participant | Participante de evento pontual | Julia Santos |
| Sponsor | Patrocinador/Anunciante | Ricardo Almeida |
| System Admin | Administrador do sistema | - |
Atores Secundários
| Ator | Descrição |
|---|---|
| Payment Gateway | Sistema externo de pagamento |
| Access Control System | Sistema de controle de acesso físico (Ziggy) |
| Camera System | Sistema de câmeras/gravação |
| IoT Device | Dispositivos IoT (botões, sensores) |
| Notification Service | Serviço de envio de notificações |
| CRM System | Sistema de gestão de relacionamento |
| ERP System | Sistema de gestão empresarial |
Convenções
Formato de ID
UC-[MÓDULO]-[NÚMERO]
Exemplos:
UC-AUTH-01: Primeiro caso de uso de AutenticaçãoUC-BOOK-05: Quinto caso de uso de Reservas
Prioridade
| Prioridade | Fase | Descrição |
|---|---|---|
| MVP | Fase 1 | Essencial para lançamento |
| P2 | Fase 2 | Importante, não bloqueante |
| P3 | Fase 3 | Inovação e otimização |
Níveis de Detalhamento
- Alto Nível (Kite): Visão geral do caso de uso
- Nível do Mar (Sea Level): Interações do usuário com sistema
- Subaquático (Fish): Detalhes internos e integrações
Este documento foca em Nível do Mar com detalhes Subaquáticos quando necessário.
UC-AUTH: Autenticação e Autorização
UC-AUTH-01: Fazer Login
Prioridade: MVP
Ator Principal: Player, Staff, Instructor, Arena Manager
Atores Secundários: Notification Service
Pré-condições:
- Usuário deve estar cadastrado no sistema
- Sistema deve estar disponível
Pós-condições:
- Usuário autenticado com sessão ativa
- Token JWT gerado
- Última atividade registrada
Trigger: Usuário acessa aplicativo ou portal web
Fluxo Principal
- Usuário acessa tela de login
- Sistema exibe opções de autenticação:
- Email/Senha
- Google SSO
- Apple ID
- Usuário seleciona método e fornece credenciais
- Sistema valida credenciais contra Identity Context
- Sistema verifica se MFA está habilitado
- SE MFA habilitado:
- Sistema envia código de verificação (SMS ou Authenticator App)
- Usuário informa código
- Sistema valida código
- Sistema cria sessão ativa
- Sistema gera token JWT com claims (userId, tenantId, roles, permissions)
- Sistema registra login em AuthenticationAttempt
- Sistema retorna token e perfil do usuário
- Sistema exibe dashboard apropriado ao perfil
Resultado: Usuário autenticado e redirecionado ao dashboard
Fluxos Alternativos
3a. Usuário seleciona "Esqueci minha senha"
- Sistema redireciona para UC-AUTH-03 (Recuperar Senha)
4a. Credenciais inválidas
- Sistema incrementa contador de tentativas falhas
- Sistema registra falha em AuthenticationAttempt
- SE tentativas < 5:
- Sistema exibe mensagem "Credenciais inválidas"
- Retorna ao passo 3
- SENÃO:
- Sistema bloqueia conta temporariamente (15 minutos)
- Sistema envia notificação de bloqueio ao email
- Sistema exibe mensagem de bloqueio
- Termina caso de uso
6a. Usuário não recebe código MFA
- Sistema oferece opção "Reenviar código"
- Sistema reenvia código
- Retorna ao passo 6
6b. Código MFA inválido
- Sistema incrementa tentativas de MFA
- SE tentativas < 3:
- Sistema exibe erro
- Retorna ao passo 6
- SENÃO:
- Sistema cancela login
- Sistema envia alerta de segurança
- Termina caso de uso
Fluxos de Exceção
E1. Sistema de autenticação indisponível
- Sistema exibe mensagem "Serviço temporariamente indisponível"
- Sistema registra erro em logs
- Sistema envia alerta para equipe técnica
- Termina caso de uso
E2. Token JWT expirado (em requisições subsequentes)
- Sistema detecta token expirado
- Sistema retorna erro 401 Unauthorized
- Cliente solicita refresh token
- Sistema valida refresh token
- Sistema gera novo JWT
- Sistema retorna novo token
E3. Sessão detectada em localização suspeita
- Sistema detecta login de IP/país diferente do habitual
- Sistema bloqueia login temporariamente
- Sistema envia email de verificação
- Usuário deve confirmar que foi ele
- Após confirmação, sistema libera login
Regras de Negócio
- RN-AUTH-001: Senha deve ter mínimo 8 caracteres, letra maiúscula, minúscula, número e símbolo
- RN-AUTH-002: MFA é obrigatório para perfis Admin e Arena Manager
- RN-AUTH-003: Sessão expira após 24h de inatividade ou 7 dias de criação
- RN-AUTH-004: Máximo 5 tentativas de login antes de bloqueio temporário
- RN-AUTH-005: Bloqueio temporário dura 15 minutos
- RN-AUTH-006: Usuário pode ter até 3 sessões simultâneas
Requisitos Relacionados
- RF-USER-001 (Cadastro de Usuários)
- RF-USER-002 (Gestão de Perfis e Papéis)
- RNF-SEC-001 (Autenticação segura)
- RNF-SEC-002 (Proteção contra brute force)
UC-AUTH-02: Cadastrar Usuário
Prioridade: MVP
Ator Principal: Player, Instructor, Staff
Atores Secundários: Notification Service
Pré-condições:
- Email não deve estar cadastrado
- Sistema deve estar disponível
Pós-condições:
- Usuário cadastrado no sistema
- Email de verificação enviado
- Perfil básico criado
Trigger: Usuário acessa tela de cadastro ou primeiro login via SSO
Fluxo Principal
- Usuário acessa tela de cadastro
- Sistema exibe formulário:
- Nome completo
- Telefone
- Senha (se não for SSO)
- Data de nascimento
- Aceite de termos de uso e privacidade (LGPD)
- Usuário preenche formulário
- Sistema valida dados:
- Email único no tenant
- Formato válido de email e telefone
- Senha atende requisitos de segurança
- Idade mínima (14 anos) ou responsável informado
- Sistema cria UserAccount no Identity Context
- Sistema cria PersonProfile
- SE usuário tem menos de 18 anos:
- Sistema solicita dados do responsável
- Sistema vincula responsável ao perfil
- Sistema gera token de verificação de email
- Sistema envia email de verificação
- Sistema cria Consent records para termos aceitos
- Sistema exibe mensagem de sucesso
- Sistema sugere download do app (se web)
Resultado: Usuário cadastrado com status PENDING_VERIFICATION
Fluxos Alternativos
1a. Usuário opta por cadastro via Google/Apple/Facebook
- Sistema redireciona para provedor de identidade
- Usuário autoriza acesso
- Sistema recebe dados do provedor (email, nome, foto)
- Sistema cria UserAccount e OAuthCredential
- Email considerado verificado automaticamente
- Pula para passo 11
4a. Email já cadastrado
- Sistema exibe erro "Email já cadastrado"
- Sistema oferece opções:
- Fazer login
- Recuperar senha
- Usuário escolhe opção
- Sistema redireciona adequadamente
4b. Senha não atende requisitos
- Sistema exibe validação inline dos requisitos
- Sistema sugere senha forte
- Usuário corrige senha
- Retorna ao passo 4
7a. Usuário menor de 14 anos
- Sistema não permite cadastro
- Sistema exibe mensagem "Idade mínima: 14 anos"
- Sistema sugere contato com arena para cadastro especial
- Termina caso de uso
Fluxos de Exceção
E1. Serviço de email indisponível
- Sistema completa cadastro normalmente
- Sistema registra envio pendente em fila
- Sistema tenta reenviar periodicamente
- Sistema alerta usuário: "Confirme seu email quando receber"
E2. Provedor SSO indisponível
- Sistema exibe erro "Serviço temporariamente indisponível"
- Sistema sugere cadastro com email/senha
- Termina caso de uso
Regras de Negócio
- RN-AUTH-007: Email deve ser único por tenant
- RN-AUTH-008: Usuário menor de 14 anos não pode se cadastrar sozinho
- RN-AUTH-009: Usuário entre 14-17 anos requer responsável vinculado
- RN-AUTH-010: Cadastro via SSO dispensa verificação de email
- RN-AUTH-011: Senha deve ter mínimo 8 caracteres com complexidade média
Requisitos Relacionados
- RF-USER-001 (Cadastro de Usuários)
- RNF-SEC-003 (Proteção de dados - LGPD)
- RNF-USAB-001 (Cadastro em < 2 minutos)
UC-AUTH-03: Recuperar Senha
Prioridade: MVP
Ator Principal: Player, Instructor, Staff
Atores Secundários: Notification Service
Pré-condições:
- Usuário deve estar cadastrado
- Email deve estar verificado
Pós-condições:
- Token de recuperação gerado
- Email enviado
- Senha alterada (se fluxo completo)
Trigger: Usuário clica em "Esqueci minha senha" no login
Fluxo Principal
- Usuário acessa tela "Esqueci minha senha"
- Sistema solicita email
- Usuário informa email
- Sistema valida se email existe no tenant
- Sistema gera token de recuperação (válido por 1 hora)
- Sistema envia email com link de recuperação
- Sistema exibe mensagem: "Email enviado, verifique sua caixa de entrada"
- Usuário clica no link do email
- Sistema valida token:
- Não expirado
- Não utilizado
- Pertence ao tenant correto
- Sistema exibe formulário de nova senha
- Usuário informa nova senha (2x para confirmar)
- Sistema valida senha conforme políticas
- Sistema atualiza PasswordCredential
- Sistema adiciona hash anterior ao histórico (evitar reuso)
- Sistema invalida token de recuperação
- Sistema envia email de confirmação
- Sistema exibe mensagem de sucesso
- Sistema redireciona para login
Resultado: Senha alterada com sucesso
Fluxos Alternativos
4a. Email não encontrado
- Sistema NÃO revela que email não existe (segurança)
- Sistema exibe mesma mensagem de sucesso
- Sistema registra tentativa suspeita em logs
- Termina caso de uso
9a. Token expirado
- Sistema exibe mensagem "Link expirado, solicite novo"
- Sistema oferece botão "Reenviar email"
- SE usuário clica:
- Retorna ao passo 4
- SENÃO:
- Termina caso de uso
9b. Token já utilizado
- Sistema exibe "Link já utilizado"
- Sistema sugere fazer login ou solicitar novo link
- Termina caso de uso
12a. Nova senha igual à anterior
- Sistema exibe erro "Senha não pode ser igual à anterior"
- Retorna ao passo 11
12b. Nova senha no histórico de senhas antigas
- Sistema exibe erro "Senha já utilizada anteriormente"
- Retorna ao passo 11
Fluxos de Exceção
E1. Múltiplas solicitações em curto período
- Sistema detecta > 3 solicitações em 10 minutos para mesmo email
- Sistema aplica rate limiting
- Sistema exibe: "Aguarde alguns minutos antes de nova tentativa"
- Sistema registra possível ataque em logs
- Termina caso de uso
E2. Serviço de email indisponível
- Sistema registra erro
- Sistema adiciona envio à fila de retry
- Sistema exibe erro genérico ao usuário
- Termina caso de uso
Regras de Negócio
- RN-AUTH-012: Token de recuperação válido por 1 hora
- RN-AUTH-013: Token só pode ser usado uma vez
- RN-AUTH-014: Sistema não revela se email existe (proteção contra enumeração)
- RN-AUTH-015: Nova senha não pode ser igual às 3 últimas
- RN-AUTH-016: Rate limit: 3 solicitações por email a cada 10 minutos
Requisitos Relacionados
- RF-USER-001 (Gestão de Usuários)
- RNF-SEC-004 (Recuperação segura de senha)
UC-AUTH-04: Configurar MFA
Prioridade: MVP
Ator Principal: Player, Instructor, Arena Manager
Atores Secundários: Notification Service
Pré-condições:
- Usuário deve estar autenticado
- Email deve estar verificado
Pós-condições:
- MFA habilitado na conta
- Método de MFA configurado
- Códigos de backup gerados
Trigger: Usuário acessa configurações de segurança ou sistema força MFA
Fluxo Principal
- Usuário acessa "Configurações de Segurança"
- Sistema exibe status atual de MFA
- Usuário clica em "Habilitar MFA"
- Sistema exibe métodos disponíveis:
- SMS
- Authenticator App (TOTP)
- Usuário seleciona método
- SE método = SMS:
- Sistema valida se telefone está cadastrado e verificado
- Sistema envia código de teste
- Usuário informa código
- Sistema valida código
- SE método = Authenticator App:
- Sistema gera secret TOTP
- Sistema exibe QR Code
- Usuário escaneia QR Code no app (Google Authenticator, Authy)
- Sistema solicita código de verificação
- Usuário informa código gerado pelo app
- Sistema valida código
- SE método = Email:
- Sistema usa email já verificado
- Sistema envia código de teste
- Usuário informa código
- Sistema valida código
- Sistema marca MFA como habilitado no UserAccount
- Sistema gera 10 códigos de backup
- Sistema exibe códigos e solicita que usuário salve em local seguro
- Usuário confirma que salvou códigos
- Sistema registra habilitação de MFA em audit log
- Sistema exibe mensagem de sucesso
Resultado: MFA habilitado com sucesso
Fluxos Alternativos
6a. Telefone não cadastrado ou não verificado
- Sistema exibe erro "Cadastre e verifique telefone primeiro"
- Sistema oferece link para "Adicionar Telefone"
- Usuário é redirecionado para UC-USER-05 (Atualizar Perfil)
7a. Usuário não consegue escanear QR Code
- Sistema oferece opção "Inserir código manualmente"
- Sistema exibe secret em texto
- Usuário digita secret no app authenticator
- Retorna ao passo 7 do fluxo principal
7b. Código TOTP inválido
- Sistema exibe erro "Código inválido ou expirado"
- Sistema solicita novo código
- SE usuário informa código correto:
- Continua no passo 9
- SENÃO após 3 tentativas:
- Sistema cancela configuração
- Retorna ao passo 4
12a. Usuário perde códigos de backup
- Usuário pode solicitar "Regenerar códigos de backup"
- Sistema invalida códigos anteriores
- Sistema gera novos 10 códigos
- Sistema exibe novos códigos
Fluxos de Exceção
E1. Usuário Admin é forçado a habilitar MFA
- Sistema detecta papel Admin sem MFA
- Sistema exibe modal obrigatório ao login
- Usuário não pode prosseguir sem configurar
- Executa fluxo principal
E2. Serviço SMS indisponível
- Sistema detecta falha no envio de SMS
- Sistema oferece métodos alternativos (Email, Authenticator)
- Usuário seleciona alternativa
- Retorna ao passo 6
Regras de Negócio
- RN-AUTH-017: MFA obrigatório para perfis Admin, Arena Manager e Instructor
- RN-AUTH-018: Código TOTP tem validade de 30 segundos
- RN-AUTH-019: Códigos de backup são de uso único
- RN-AUTH-020: Sistema gera 10 códigos de backup
- RN-AUTH-021: Após usar 7 códigos de backup, sistema alerta para regenerar
Requisitos Relacionados
- RF-USER-002 (Gestão de Perfis)
- RNF-SEC-005 (MFA obrigatório para papéis críticos)
UC-AUTH-05: Fazer Logout
Prioridade: MVP
Ator Principal: Todos os usuários autenticados
Atores Secundários: -
Pré-condições:
- Usuário deve estar autenticado
Pós-condições:
- Sessão encerrada
- Token invalidado
- Dispositivo desvinculado (se aplicável)
Trigger: Usuário clica em "Sair" ou "Logout"
Fluxo Principal
- Usuário clica em opção "Sair"
- Sistema exibe confirmação: "Deseja realmente sair?"
- Usuário confirma
- Sistema invalida token JWT atual
- Sistema marca Session como TERMINATED
- Sistema registra timestamp de logout
- Sistema remove dados em cache/local storage
- Sistema redireciona para tela de login
- Sistema exibe mensagem "Logout realizado com sucesso"
Resultado: Usuário desconectado
Fluxos Alternativos
3a. Usuário cancela logout
- Sistema mantém sessão ativa
- Usuário permanece autenticado
- Termina caso de uso
5a. Logout de todas as sessões
- Usuário seleciona "Sair de todos os dispositivos"
- Sistema lista todas Session ativas do usuário
- Sistema invalida todas as sessões
- Sistema envia notificação aos outros dispositivos
- Continua no passo 7
Fluxos de Exceção
E1. Logout automático por inatividade
- Sistema detecta inatividade > 24h
- Sistema invalida sessão automaticamente
- Ao próximo acesso, usuário vê mensagem "Sessão expirada"
- Sistema redireciona para login
E2. Logout forçado por administrador
- Administrador força logout de usuário específico
- Sistema invalida todas sessões do usuário
- Sistema envia notificação ao usuário
- Usuário deve fazer login novamente
Regras de Negócio
- RN-AUTH-022: Sessão expira após 24h de inatividade
- RN-AUTH-023: Token JWT invalidado não pode ser reativado
- RN-AUTH-024: Logout deve limpar todos dados sensíveis em cache
Requisitos Relacionados
- RF-USER-002 (Gestão de Sessões)
- RNF-SEC-006 (Logout seguro)
UC-ARENA: Gestão de Arena
UC-ARENA-01: Cadastrar Arena
Prioridade: MVP
Ator Principal: System Admin, Arena Owner
Atores Secundários: -
Pré-condições:
- Usuário deve ter permissão
arena:create:tenant - Tenant deve estar ativo
Pós-condições:
- Arena cadastrada no sistema
- Configurações padrão aplicadas
- Arena vinculada ao tenant
Trigger: Admin acessa "Nova Arena" no painel administrativo
Fluxo Principal
- Admin acessa módulo de gestão de arenas
- Sistema exibe botão "Cadastrar Nova Arena"
- Admin clica no botão
- Sistema exibe formulário:
- Nome da arena
- Nome fantasia
- CNPJ
- Endereço completo
- Telefone
- Email de contato
- Horário de funcionamento (por dia da semana)
- Timezone
- Capacidade total de pessoas
- Upload de logo
- Upload de fotos da arena
- Admin preenche formulário
- Sistema valida dados:
- CNPJ válido e único
- Endereço completo
- Telefone e email válidos
- Horários consistentes
- Sistema cria registro de Arena no Arena Context
- Sistema cria ArenaTenant vinculando ao tenant
- Sistema aplica configurações padrão:
- Tempo de partida: 50 minutos
- Tolerância de atraso: 5 minutos
- Política de cancelamento: até 2h antes
- Modo operacional: RESERVADO
- Sistema cria zonas de acesso padrão:
- LOBBY
- COURTS
- LOCKER_ROOMS
- BAR
- OFFICE
- Sistema exibe mensagem de sucesso
- Sistema redireciona para configuração de quadras (UC-COURT-01)
Resultado: Arena cadastrada e pronta para configuração de quadras
Fluxos Alternativos
6a. CNPJ já cadastrado
- Sistema exibe erro "CNPJ já cadastrado"
- Sistema sugere editar arena existente
- Retorna ao passo 4
6b. Endereço não encontrado
- Sistema tenta validar endereço via API (ViaCEP, Google Maps)
- SE não encontrado:
- Sistema exibe alerta mas permite prosseguir
- Admin confirma endereço manualmente
- Continua no passo 7
12a. Admin opta por configurar depois
- Sistema salva arena
- Sistema exibe mensagem: "Configure quadras para começar a operar"
- Sistema redireciona para lista de arenas
Fluxos de Exceção
E1. Upload de logo/fotos falha
- Sistema salva arena sem mídia
- Sistema permite adicionar mídia posteriormente
- Sistema exibe alerta: "Adicione logo e fotos na edição"
E2. Limite de arenas do plano atingido
- Sistema detecta limite de arenas do tenant
- Sistema exibe erro "Limite de arenas atingido. Faça upgrade do plano"
- Sistema oferece link para upgrade
- Termina caso de uso
Regras de Negócio
- RN-ARENA-001: CNPJ deve ser único no sistema
- RN-ARENA-002: Arena deve ter ao menos 1 quadra para operar
- RN-ARENA-003: Horário de funcionamento não pode ter gaps (deve cobrir 24h)
- RN-ARENA-004: Logo recomendado: 500x500px, PNG/JPG
- RN-ARENA-005: Timezone deve ser configurado conforme localização física
Requisitos Relacionados
- RF-ARENA-001 (Cadastro da Arena)
- RF-ARENA-002 (Cadastro de Áreas Físicas)
- RF-ARENA-003 (Cadastro de Zonas de Acesso)
UC-ARENA-02: Configurar Parâmetros Operacionais
Prioridade: MVP
Ator Principal: Arena Owner, Arena Manager
Atores Secundários: -
Pré-condições:
- Arena deve estar cadastrada
- Usuário deve ter permissão
arena:update:tenant
Pós-condições:
- Parâmetros operacionais atualizados
- Regras aplicadas em reservas e filas
Trigger: Admin acessa "Configurações Operacionais" da arena
Fluxo Principal
Admin acessa detalhes da arena
Sistema exibe aba "Configurações Operacionais"
Admin clica na aba
Sistema exibe formulário com configurações atuais:
Tempos e Tolerâncias:
- Duração padrão de partida (minutos)
- Tolerância de atraso para check-in (minutos)
- Tempo de preparação entre partidas (minutos)
- Tempo máximo de permanência na fila (minutos)
Políticas de Cancelamento:
- Prazo mínimo para cancelamento sem penalidade (horas)
- Penalidade por no-show (% do valor ou pontos)
- Penalidade por cancelamento tardio (% do valor)
Modo Operacional:
- LIVRE (sem reserva, por ordem de chegada)
- RESERVADO (apenas com reserva prévia)
- MISTO (horários livres + horários reservados)
- EVENTO (arena dedicada a evento)
Reservas:
- Antecedência mínima para reserva (horas)
- Antecedência máxima para reserva (dias)
- Limite de reservas simultâneas por usuário
- Reserva requer pagamento antecipado? (Sim/Não)
Fila:
- Fila habilitada? (Sim/Não)
- Notificação antecipada quando chegar a vez (minutos)
- Tempo de resposta para aceitar vaga (minutos)
Check-in:
- Check-in obrigatório? (Sim/Não)
- Antecedência mínima para check-in (minutos)
- Liberação automática de quadra se sem check-in? (Sim/Não)
Admin altera configurações desejadas
Sistema valida valores:
- Tempos não negativos
- Percentuais entre 0-100%
- Lógica consistente (ex: antecedência mín < máx)
Sistema exibe prévia de impacto:
- "Com essas configurações, reservas podem ser feitas entre 2h e 30 dias de antecedência"
- "Cancelamentos até 2h antes não terão penalidade"
Admin confirma
Sistema salva configurações em Arena.configuration
Sistema registra auditoria de mudança
Sistema exibe mensagem de sucesso
Sistema aplica novas regras para reservas futuras
Resultado: Configurações operacionais atualizadas
Fluxos Alternativos
6a. Valores inválidos
- Sistema exibe validação inline
- Sistema destaca campos inválidos
- Admin corrige valores
- Retorna ao passo 6
7a. Admin quer simular impacto
- Sistema oferece "Simulador de Configurações"
- Sistema mostra exemplos práticos:
- "Se usuário reservar hoje às 14h para amanhã às 10h: PERMITIDO"
- "Se usuário cancelar 1h antes: PENALIDADE de 50%"
- Admin ajusta configurações conforme simulação
- Retorna ao passo 7
12a. Configuração afeta reservas existentes
- Sistema detecta reservas futuras afetadas
- Sistema exibe aviso: "X reservas serão impactadas"
- Sistema oferece opções:
- Aplicar apenas para novas reservas
- Aplicar para todas (incluindo existentes)
- Admin escolhe
- Sistema aplica conforme escolha
Fluxos de Exceção
E1. Mudança crítica em horário de alta demanda
- Sistema detecta tentativa de mudança radical (ex: reduzir tempo de partida de 60 para 30 min)
- Sistema exibe alerta de segurança
- Sistema solicita confirmação adicional
- Admin deve justificar mudança
- Sistema registra justificativa em auditoria
- Continua no passo 9
Regras de Negócio
- RN-ARENA-006: Duração de partida deve estar entre 20-120 minutos
- RN-ARENA-007: Tolerância de atraso máxima: 15 minutos
- RN-ARENA-008: Penalidade por no-show máxima: 100% do valor
- RN-ARENA-009: Antecedência máxima para reserva: 90 dias
- RN-ARENA-010: Configurações não afetam partidas em andamento
- RN-ARENA-011: Mudanças críticas requerem justificativa e auditoria
Requisitos Relacionados
- RF-ARENA-004 (Configuração Operacional da Arena)
- RF-AGENDA-004 (Cancelamento, No-show, Atraso)
UC-COURT: Gestão de Quadras
UC-COURT-01: Cadastrar Quadra
Prioridade: MVP
Ator Principal: Arena Owner, Arena Manager
Atores Secundários: -
Pré-condições:
- Arena deve estar cadastrada
- Usuário deve ter permissão
court:create:tenant
Pós-condições:
- Quadra cadastrada e vinculada à arena
- Quadra disponível para reservas
- Zona de acesso configurada
Trigger: Admin acessa "Adicionar Quadra" no módulo de quadras
Fluxo Principal
Admin acessa módulo de quadras da arena
Sistema exibe lista de quadras existentes (se houver)
Admin clica em "Adicionar Quadra"
Sistema exibe formulário:
Dados Básicos:
- Nome/Número da quadra (ex: "Quadra 1", "Central")
- Descrição
- Modalidade principal (Beach Tennis, Padel, Tênis, Futsal, Vôlei)
Características Físicas:
- Dimensões (comprimento x largura em metros)
- Cobertura? (Sim/Não)
- Tipo de piso (Areia, Grama Sintética, Saibro, Cimento, Madeira)
- Iluminação artificial? (Sim/Não)
- Qualidade da iluminação (1-5 estrelas)
Recursos:
- Placar eletrônico? (Sim/Não)
- Câmeras de gravação? (Sim/Não) - Quantidade
- Sonorização? (Sim/Não)
- Arquibancada? (Sim/Não) - Capacidade
- Rede divisória central? (Sim/Não)
Capacidade:
- Número de jogadores simultâneos (ex: 4 para beach tennis duplas)
- Capacidade de espectadores
Operacional:
- Status inicial (Disponível, Em Manutenção, Inativa)
- Zona de acesso (selecionar zona)
- Prioridade de uso (1-10)
Admin preenche formulário
Sistema valida dados:
- Nome único na arena
- Modalidade compatível com dimensões
- Capacidade coerente com modalidade
Sistema cria registro de Court no Courts Context
Sistema vincula quadra à Zone selecionada
Sistema cria CourtSchedule com horários de funcionamento da arena
Sistema pergunta: "Deseja configurar regras específicas desta quadra?"
SE Admin confirma:
- Sistema redireciona para UC-COURT-03 (Configurar Regras de Quadra)
SENÃO:
- Sistema aplica regras padrão da arena
Sistema exibe mensagem de sucesso
Sistema atualiza lista de quadras
Resultado: Quadra cadastrada e disponível para uso
Fluxos Alternativos
6a. Nome de quadra duplicado
- Sistema exibe erro "Quadra com este nome já existe"
- Sistema sugere nome alternativo (ex: "Quadra 1.1")
- Admin altera nome
- Retorna ao passo 6
6b. Dimensões incompatíveis com modalidade
- Sistema detecta incompatibilidade (ex: quadra beach tennis com 30x15m)
- Sistema exibe aviso: "Dimensões atípicas para Beach Tennis (padrão: 16x8m)"
- Sistema pergunta se quer continuar
- SE Admin confirma:
- Sistema registra exceção
- Continua no passo 7
- SENÃO:
- Retorna ao passo 4
10a. Admin quer cadastrar múltiplas quadras similares
- Sistema oferece opção "Duplicar quadra"
- Sistema copia configurações da quadra atual
- Sistema gera novo nome automaticamente (ex: Quadra 2, 3, 4...)
- Admin ajusta apenas diferenças
- Retorna ao passo 7 para cada quadra
Fluxos de Exceção
E1. Limite de quadras do plano atingido
- Sistema detecta limite de quadras do tenant/plano
- Sistema exibe erro "Limite de quadras atingido (X/Y quadras)"
- Sistema oferece upgrade de plano
- Termina caso de uso
E2. Zona de acesso não configurada
- Sistema detecta que não há zonas criadas
- Sistema oferece criar zona "COURTS" automaticamente
- Admin aceita
- Sistema cria zona padrão
- Retorna ao passo 8
Regras de Negócio
- RN-COURT-001: Nome/número da quadra deve ser único na arena
- RN-COURT-002: Quadra deve pertencer a exatamente uma zona de acesso
- RN-COURT-003: Status "Disponível" permite reservas, "Manutenção" e "Inativa" não
- RN-COURT-004: Dimensões padrão por modalidade:
- Beach Tennis: 16x8m
- Padel: 20x10m
- Tênis: 23,77x10,97m
- Futsal: 40x20m
- Vôlei: 18x9m
- RN-COURT-005: Prioridade influencia alocação automática (maior prioridade = preferência)
Requisitos Relacionados
- RF-QUADRA-001 (Cadastro de Quadras)
- RF-ARENA-002 (Cadastro de Áreas Físicas)
- RF-ARENA-003 (Cadastro de Zonas de Acesso)
UC-COURT-02: Alterar Status da Quadra
Prioridade: MVP
Ator Principal: Arena Manager, Receptionist
Atores Secundários: Notification Service
Pré-condições:
- Quadra deve existir
- Usuário deve ter permissão
court:update:tenant
Pós-condições:
- Status da quadra atualizado
- Reservas futuras afetadas (se necessário)
- Usuários notificados (se aplicável)
Trigger: Operador precisa marcar quadra em manutenção ou reativá-la
Fluxo Principal
- Operador acessa visualização da quadra
- Sistema exibe status atual da quadra
- Operador clica em "Alterar Status"
- Sistema exibe modal com opções:
- DISPONÍVEL: Quadra operacional e disponível para reservas
- EM MANUTENÇÃO: Temporariamente indisponível (com data prevista de retorno)
- INATIVA: Permanentemente desabilitada
- RESERVADA PARA EVENTO: Bloqueada para evento específico
- Operador seleciona novo status
- SE status = EM MANUTENÇÃO:
- Sistema solicita:
- Motivo da manutenção (goteira, iluminação, piso danificado, etc)
- Data/hora prevista de retorno
- Informações adicionais (opcional)
- Sistema solicita:
- SE status = INATIVA:
- Sistema solicita:
- Motivo da desativação
- Desativação permanente ou temporária?
- Sistema solicita:
- Sistema valida mudança de status
- Sistema verifica se há reservas futuras afetadas
- SE houver reservas afetadas:
- Sistema lista reservas afetadas
- Sistema exibe opções:
- Cancelar reservas e reembolsar
- Realocar para outra quadra disponível
- Manter e notificar usuários sobre mudança
- Operador escolhe ação
- Sistema atualiza Court.status
- Sistema registra em CourtStatusHistory
- Sistema executa ações sobre reservas (conforme escolha do passo 10)
- Sistema envia notificações aos usuários afetados
- Sistema atualiza disponibilidade na agenda
- Sistema exibe mensagem de sucesso
Resultado: Status da quadra atualizado
Fluxos Alternativos
6a. Manutenção emergencial (sem previsão de retorno)
- Operador não informa data de retorno
- Sistema marca como "Data a definir"
- Sistema envia alerta para gestor
- Continua no passo 9
10a. Nenhuma reserva afetada
- Sistema confirma que não há impactos
- Pula para passo 11
10b. Operador escolhe realocar reservas
- Sistema busca quadras alternativas com horários compatíveis
- Sistema exibe sugestões de realocação
- SE houver quadras disponíveis:
- Sistema realoca automaticamente
- Sistema notifica usuários sobre mudança
- SENÃO:
- Sistema força cancelamento
- Sistema informa usuários e oferece reembolso
16a. Operador reativa quadra após manutenção
- Operador muda status de EM MANUTENÇÃO para DISPONÍVEL
- Sistema registra data/hora de retorno
- Sistema calcula tempo de indisponibilidade
- Sistema libera quadra para novas reservas
- Sistema notifica usuários em lista de espera
Fluxos de Exceção
E1. Tentativa de desativar única quadra operacional
- Sistema detecta que é a única quadra disponível
- Sistema exibe erro crítico: "Não é possível desativar a única quadra operacional"
- Sistema sugere cadastrar mais quadras ou adiar desativação
- Termina caso de uso
E2. Falha ao notificar usuários
- Sistema completa alteração de status
- Sistema registra falha no envio de notificações
- Sistema adiciona notificações à fila de retry
- Sistema exibe alerta ao operador: "Usuários serão notificados em breve"
Regras de Negócio
- RN-COURT-006: Arena deve ter ao menos 1 quadra DISPONÍVEL ou EM MANUTENÇÃO
- RN-COURT-007: Quadra INATIVA não aparece em buscas de reserva
- RN-COURT-008: Quadra EM MANUTENÇÃO bloqueia novas reservas mas pode manter existentes
- RN-COURT-009: Usuários afetados devem ser notificados em até 5 minutos
- RN-COURT-010: Mudanças de status são auditadas com timestamp e usuário responsável
Requisitos Relacionados
- RF-QUADRA-008 (Estado da Quadra em Tempo Real)
- RF-AGENDA-004 (Cancelamento de reservas)
- RF-COMUN-001 (Notificações)
UC-COURT-03: Configurar Regras de Quadra
Prioridade: MVP
Ator Principal: Arena Manager
Atores Secundários: -
Pré-condições:
- Quadra deve estar cadastrada
- Usuário deve ter permissão
court:update:tenant
Pós-condições:
- Regras de uso configuradas
- Restrições aplicadas em reservas
- Regras exibidas aos usuários
Trigger: Gestor acessa "Configurar Regras" de uma quadra específica
Fluxo Principal
Gestor acessa detalhes da quadra
Sistema exibe aba "Regras de Uso"
Gestor clica na aba
Sistema exibe formulário de configuração:
Regras de Uso Geral:
- Texto livre com regras obrigatórias (ex: "Proibido uso de chuteira com trava")
- Aceite de termos obrigatório? (Sim/Não)
Restrições por Nível de Jogador:
- Nível recomendado (Iniciante, Intermediário, Avançado, Profissional)
- Restringir uso por nível? (Sim/Não)
Restrições por Gênero:
- Perfil de gênero (Misto, Masculino, Feminino, Horários Específicos)
- SE Horários Específicos:
- Configurar grade semanal de horários por gênero
Tipos de Jogo Permitidos:
- Simples (1x1)
- Duplas (2x2)
- Trio (3x3)
- Quantidade customizada
- Aula (professor + alunos)
Prioridades de Uso:
- Mensalistas têm prioridade? (Sim/Não)
- Horários exclusivos para aulas? (Configurar grade)
- Horários exclusivos para eventos? (Configurar grade)
- Horários de pico com regras especiais? (Configurar)
Regras de Permanência:
- Tempo máximo de jogo contínuo (minutos)
- Permitir renovação de horário? (Sim/Não)
- Limite de renovações consecutivas
Gestor configura regras desejadas
Sistema valida configurações:
- Regras não conflitantes
- Horários sem gaps
- Texto de regras não vazio se aceite obrigatório
Sistema exibe prévia de como regras serão exibidas ao usuário
Gestor confirma
Sistema salva regras em CourtRules
Sistema vincula regras à Court
Sistema registra auditoria de configuração
Sistema atualiza motor de validação de reservas
Sistema exibe mensagem de sucesso
Resultado: Regras de quadra configuradas e ativas
Fluxos Alternativos
4a. Gestor quer copiar regras de outra quadra
- Sistema oferece opção "Copiar regras de..."
- Sistema lista outras quadras da arena
- Gestor seleciona quadra origem
- Sistema copia configurações
- Gestor ajusta diferenças
- Retorna ao passo 5
7a. Gestor quer testar regras
- Sistema oferece "Simulador de Reserva"
- Gestor informa cenário:
- Tipo de usuário (mensalista, avulso)
- Nível (iniciante, avançado)
- Gênero
- Dia/horário desejado
- Sistema simula validação
- Sistema exibe resultado: PERMITIDO ou BLOQUEADO (com motivo)
- Gestor ajusta regras conforme teste
- Retorna ao passo 5
12a. Regras conflitam com reservas existentes
- Sistema detecta X reservas futuras que violam novas regras
- Sistema exibe alerta: "X reservas existentes violam novas regras"
- Sistema oferece opções:
- Manter reservas existentes (exceção)
- Cancelar reservas conflitantes
- Gestor escolhe
- Sistema aplica conforme escolha
Fluxos de Exceção
E1. Tentativa de criar regra impossível de satisfazer
- Sistema detecta regra que tornaria quadra inutilizável (ex: nenhum horário disponível)
- Sistema exibe erro crítico: "Configuração tornaria quadra indisponível 100% do tempo"
- Sistema bloqueia salvamento
- Gestor deve ajustar regras
- Retorna ao passo 5
Regras de Negócio
- RN-COURT-011: Regras de uso devem ser claras e objetivas
- RN-COURT-012: Aceite de termos deve ser rastreável (LGPD)
- RN-COURT-013: Restrições por gênero devem respeitar legislação vigente
- RN-COURT-014: Prioridade de mensalistas não pode bloquear 100% dos horários
- RN-COURT-015: Regras aplicam-se a reservas futuras, não retroativas
Requisitos Relacionados
- RF-QUADRA-005 (Regras de Uso de Quadra)
- RF-QUADRA-002 (Perfil de Quadra por Nível)
- RF-QUADRA-003 (Perfil de Quadra por Gênero)
- RF-QUADRA-006 (Prioridade de Uso por Dia da Semana)
UC-BOOK: Reservas e Agendamento
UC-BOOK-01: Buscar Disponibilidade de Quadra
Prioridade: MVP
Ator Principal: Player, Receptionist
Atores Secundários: -
Pré-condições:
- Usuário deve estar autenticado
- Arena deve ter pelo menos 1 quadra disponível
Pós-condições:
- Lista de horários disponíveis exibida
- Filtros aplicados conforme preferências
Trigger: Usuário acessa tela de reservas
Fluxo Principal
- Usuário acessa módulo de reservas
- Sistema exibe interface de busca com filtros:
- Data (calendário)
- Período (Manhã, Tarde, Noite, Todos)
- Modalidade (Beach Tennis, Padel, Tênis, etc)
- Tipo de quadra (Coberta, Descoberta)
- Número de jogadores
- Nível desejado (Iniciante, Intermediário, Avançado)
- Sistema pré-preenche filtros com preferências salvas do usuário (se houver)
- Usuário ajusta filtros conforme desejo
- Usuário clica em "Buscar"
- Sistema consulta CourtSchedule e Booking para disponibilidade real
- Sistema aplica regras de negócio:
- Verifica restrições de nível da quadra vs nível do usuário
- Verifica restrições de gênero
- Verifica prioridades (mensalista vs avulso)
- Aplica antecedência mínima/máxima
- Sistema agrupa disponibilidade por quadra
- Sistema calcula preço por horário (se aplicável)
- Sistema exibe grid de disponibilidade:
- Eixo X: Horários (intervalos de 30min ou 1h)
- Eixo Y: Quadras
- Células verdes: Disponível
- Células amarelas: Quase esgotado (última vaga)
- Células cinzas: Indisponível
- Células azuis: Requer autorização (nível incompatível)
- Sistema exibe legenda de cores
- Usuário pode ajustar filtros e repetir busca
Resultado: Disponibilidade exibida para seleção
Fluxos Alternativos
6a. Nenhuma quadra disponível nos critérios
- Sistema exibe mensagem "Nenhum horário disponível para os filtros selecionados"
- Sistema sugere alternativas:
- Expandir período de busca
- Flexibilizar nível de jogador
- Escolher outra data
- Entrar na fila de espera
- Usuário ajusta filtros ou opta por fila
- Retorna ao passo 5
7a. Usuário não atende pré-requisitos de alguma quadra
- Sistema exibe quadras mesmo assim mas marca como "Requer Autorização"
- Sistema exibe tooltip explicando motivo (ex: "Quadra para nível avançado")
- SE usuário tenta reservar:
- Sistema solicita justificativa ou autorização de gestor
- Gestor aprova ou nega
- SE aprovado: prossegue com reserva
10a. Usuário quer visualização em lista (não grid)
- Sistema oferece toggle "Visualizar como Lista"
- Sistema exibe horários em formato lista:
- Quadra X - 14:00-15:00 - R$ 100 - [Reservar]
- Quadra Y - 14:00-15:00 - R$ 120 - [Reservar]
- Usuário pode ordenar por preço, quadra, horário
12a. Usuário quer salvar busca como favorita
- Sistema oferece "Salvar esses filtros"
- Usuário nomeia filtro (ex: "Quinta à noite")
- Sistema salva em SavedSearch
- Próximas vezes, usuário pode carregar filtro rapidamente
Fluxos de Exceção
E1. Sistema sobrecarregado (horário de pico)
- Sistema detecta alta concorrência
- Sistema exibe aviso: "Muitos usuários buscando, aguarde..."
- Sistema implementa fila de requisições (rate limiting)
- Sistema processa busca assim que possível
- Sistema exibe resultados (pode estar desatualizado)
- Sistema sugere atualizar busca
E2. Dados de disponibilidade inconsistentes
- Sistema detecta inconsistência (ex: quadra marcada disponível mas com reserva)
- Sistema registra erro em logs
- Sistema força sincronização
- Sistema exibe aviso ao usuário: "Disponibilidade pode estar desatualizada, tente novamente"
Regras de Negócio
- RN-BOOK-001: Busca considera apenas quadras com status DISPONÍVEL
- RN-BOOK-002: Horários exibidos respeitam antecedência mínima/máxima da arena
- RN-BOOK-003: Preços podem variar por quadra, horário (pico) e tipo de usuário
- RN-BOOK-004: Disponibilidade atualizada em tempo real
- RN-BOOK-005: Mensalistas veem prioridade em horários exclusivos
- RN-BOOK-006: Busca deve retornar resultado em < 3 segundos
Requisitos Relacionados
- RF-AGENDA-001 (Agenda Unificada)
- RF-AGENDA-002 (Reserva de Quadra)
- RNF-PERF-001 (Tempo de resposta < 3s)
UC-BOOK-02: Criar Reserva
Prioridade: MVP
Ator Principal: Player, Receptionist
Atores Secundários: Payment Gateway, Notification Service
Pré-condições:
- Usuário deve estar autenticado
- Quadra deve estar disponível no horário
- Usuário deve atender pré-requisitos da quadra
Pós-condições:
- Reserva criada com status CONFIRMED ou PENDING_PAYMENT
- Pagamento processado (se aplicável)
- Quadra bloqueada para o horário
- Usuário notificado
Trigger: Usuário seleciona horário disponível e clica em "Reservar"
Fluxo Principal
- Usuário seleciona quadra e horário desejado no grid de disponibilidade
- Sistema valida seleção:
- Horário ainda disponível (revalida em tempo real)
- Usuário atende requisitos da quadra
- Usuário não excede limite de reservas simultâneas
- Sistema exibe modal de confirmação:
- Quadra: Quadra 1
- Data/Hora: 12/01/2026 - 14:00 às 15:00
- Duração: 60 minutos
- Modalidade: Beach Tennis - Duplas (2x2)
- Valor: R$ 120,00
- Política de cancelamento: Cancelamento gratuito até 2h antes
- Sistema oferece opções adicionais:
- Convidar outros jogadores (para formar dupla/time)
- Adicionar observações
- Solicitar equipamentos (bolas, rede, etc) [se disponível]
- Usuário confirma reserva
- SE reserva requer pagamento antecipado:
- Sistema exibe opções de pagamento:
- Cartão de crédito/débito
- PIX
- Wallet/Créditos da arena
- Pacote/Mensalidade
- Usuário seleciona método
- Sistema processa pagamento via Payment Gateway
- Sistema aguarda confirmação (webhook ou polling)
- SE pagamento confirmado:
- Continua no passo 8
- SENÃO:
- Sistema exibe erro de pagamento
- Retorna ao passo 6 ou cancela reserva
- Sistema exibe opções de pagamento:
- SENÃO (pagamento não obrigatório):
- Sistema marca reserva como CONFIRMED
- Sistema cria registro de Booking no Scheduling Context
- Sistema bloqueia horário na CourtSchedule
- Sistema verifica se há usuários na fila para este horário
- SE houver e reserva foi cancelada:
- Sistema notifica próximo da fila
- Sistema envia notificação ao usuário:
- Email com detalhes da reserva
- Push notification
- Add to Calendar (iCal)
- SE usuário convidou outros jogadores:
- Sistema envia convites aos convidados
- Convites podem aceitar/recusar
- Sistema exibe mensagem de sucesso
- Sistema oferece opções:
- Ver minha agenda
- Convidar amigos
- Compartilhar nas redes sociais
Resultado: Reserva confirmada e quadra bloqueada
Fluxos Alternativos
2a. Horário foi reservado por outro usuário (race condition)
- Sistema detecta que horário não está mais disponível
- Sistema exibe erro: "Ops! Este horário acabou de ser reservado"
- Sistema sugere horários próximos disponíveis
- Usuário seleciona alternativa ou cancela
- Retorna ao passo 1 se selecionar alternativa
2b. Usuário excede limite de reservas simultâneas
- Sistema exibe erro: "Você atingiu o limite de X reservas ativas"
- Sistema lista reservas ativas do usuário
- Sistema oferece cancelar alguma reserva para liberar
- SE usuário cancela uma:
- Sistema libera reserva antiga
- Retorna ao passo 1
- SENÃO:
- Termina caso de uso
5a. Usuário não quer pagar agora (se pagamento não obrigatório)
- Sistema marca reserva como PENDING_PAYMENT
- Sistema define prazo para pagamento (ex: até 1h antes do horário)
- Sistema envia lembrete de pagamento pendente
- SE pagamento não realizado no prazo:
- Sistema cancela reserva automaticamente
- Sistema libera horário
- Sistema notifica usuário
6a. Usuário tem créditos suficientes na Wallet
- Sistema detecta saldo em Wallet
- Sistema oferece: "Usar saldo da carteira (R$ X disponível)"
- Usuário aceita
- Sistema debita valor da carteira
- Sistema registra transação
- Pula para passo 8
6b. Usuário é mensalista com horários inclusos
- Sistema detecta que usuário tem plano mensal com X jogos inclusos
- Sistema exibe: "Usar crédito do plano? (Y de X jogos restantes)"
- Usuário aceita
- Sistema debita 1 jogo do pacote
- Sistema registra uso
- Pula para passo 8
13a. Convidado recusa convite
- Convidado clica em "Recusar" no convite
- Sistema notifica usuário que criou reserva
- Sistema sugere convidar outra pessoa
- Reserva continua válida (não requer todos confirmarem)
Fluxos de Exceção
E1. Falha no processamento de pagamento
- Sistema recebe erro do gateway
- Sistema exibe erro específico ao usuário:
- "Cartão recusado"
- "Saldo insuficiente"
- "Erro na transação, tente novamente"
- Sistema oferece tentar outro método
- SE usuário tenta novamente:
- Retorna ao passo 6
- SENÃO:
- Sistema cancela reserva temporária
- Sistema libera horário
- Termina caso de uso
E2. Sistema fora do ar durante confirmação
- Cliente detecta timeout
- Cliente tenta reenviar requisição (idempotência via Idempotency-Key)
- Sistema verifica se reserva já foi criada (pela chave)
- SE já criada:
- Sistema retorna reserva existente
- Sistema não duplica reserva
- SENÃO:
- Sistema processa normalmente
E3. Tentativa de reserva fora do horário permitido
- Sistema detecta que horário viola antecedência mínima/máxima
- Sistema exibe erro: "Reservas devem ser feitas com X horas de antecedência"
- Sistema sugere próximo horário válido
- Termina caso de uso
Regras de Negócio
- RN-BOOK-007: Reserva só é confirmada após validação de disponibilidade em tempo real
- RN-BOOK-008: Pagamento obrigatório para avulsos, opcional para mensalistas
- RN-BOOK-009: Limite de reservas simultâneas: 3 por usuário
- RN-BOOK-010: Reserva sem pagamento expira 1h antes do horário
- RN-BOOK-011: Reserva inclui 5 minutos de preparação antes e depois
- RN-BOOK-012: Convidados devem aceitar convite até 1h antes do horário
- RN-BOOK-013: Idempotência: múltiplas requisições com mesma Idempotency-Key geram 1 reserva
Requisitos Relacionados
- RF-AGENDA-002 (Reserva de Quadra)
- RF-AGENDA-003 (Reserva Avulsa, Day-use, Eventos)
- RF-CONSUMO-005 (Mensalidades, Pacotes, Avulso)
- RF-INTEG-003 (Integração com Pagamentos)
- RNF-PERF-002 (Reserva em < 5 segundos)
- RNF-SEC-007 (Idempotência em transações)
UC-BOOK-03: Cancelar Reserva
Prioridade: MVP
Ator Principal: Player, Receptionist
Atores Secundários: Payment Gateway, Notification Service
Pré-condições:
- Reserva deve existir e estar com status CONFIRMED ou PENDING_PAYMENT
- Usuário deve ser dono da reserva ou ter permissão de cancelamento
Pós-condições:
- Reserva cancelada
- Horário liberado para outras reservas
- Reembolso processado (se aplicável)
- Penalidade aplicada (se aplicável)
- Usuário notificado
Trigger: Usuário acessa "Minhas Reservas" e seleciona "Cancelar"
Fluxo Principal
- Usuário acessa "Minhas Reservas"
- Sistema exibe lista de reservas ativas
- Usuário seleciona reserva que deseja cancelar
- Sistema exibe detalhes da reserva
- Usuário clica em "Cancelar Reserva"
- Sistema calcula:
- Tempo restante até início da reserva
- Política de cancelamento aplicável
- Valor de reembolso (se houver)
- Penalidade (se houver)
- Sistema exibe modal de confirmação:
- Reserva: Quadra 2 - 14/01/2026 às 10:00
- Política: Cancelamento gratuito até 2h antes
- Situação: Você está cancelando com 3 dias de antecedência
- Reembolso: R$ 120,00 (100%)
- Penalidade: Nenhuma
- SE houver penalidade:
- Sistema exibe claramente:
- Valor pago: R$ 120,00
- Reembolso: R$ 60,00 (50%)
- Penalidade: R$ 60,00 (50%)
- Motivo: Cancelamento com menos de 2h de antecedência
- Sistema exibe claramente:
- Sistema solicita confirmação: "Deseja realmente cancelar?"
- Usuário confirma
- Sistema solicita motivo do cancelamento (opcional):
- Imprevisto
- Condições climáticas
- Lesão/saúde
- Conflito de horário
- Outro (texto livre)
- Sistema valida cancelamento
- Sistema atualiza Booking.status para CANCELLED
- Sistema registra BookingCancellation com motivo e timestamp
- Sistema libera horário na CourtSchedule
- SE houve pagamento:
- Sistema calcula reembolso conforme política
- SE reembolso > 0:
- Sistema processa reembolso via Payment Gateway
- Sistema credita em Wallet (se política da arena)
- Sistema registra transação de reembolso
- SE há penalidade:
- Sistema debita pontos de gamificação (se aplicável)
- Sistema registra penalidade em histórico
- Sistema verifica fila de espera para este horário
- SE há usuários na fila:
- Sistema notifica próximo da fila: "Quadra liberada!"
- Sistema oferece reserva automática ao primeiro da fila
- Sistema envia notificação ao usuário:
- Confirmação de cancelamento
- Detalhes do reembolso (se houver)
- Penalidade aplicada (se houver)
- Sistema exibe mensagem de sucesso
- Sistema sugere reservar outro horário
Resultado: Reserva cancelada e horário liberado
Fluxos Alternativos
5a. Usuário quer remarcar em vez de cancelar
- Sistema oferece opção "Remarcar" ao lado de "Cancelar"
- SE usuário clica em Remarcar:
- Sistema redireciona para UC-BOOK-04 (Remarcar Reserva)
- Termina caso de uso
7a. Cancelamento fora do prazo (sem reembolso)
- Sistema exibe aviso crítico:
- "Atenção: Cancelamento tardio"
- "Prazo de cancelamento gratuito expirou"
- "Reembolso: R$ 0,00 (0%)"
- "Penalidade: 100% do valor (no-show)"
- Sistema enfatiza consequências
- Sistema sugere alternativa: "Deseja transferir a reserva para alguém?"
- SE usuário aceita transferir:
- Sistema redireciona para UC-BOOK-05 (Transferir Reserva)
- SENÃO:
- Usuário confirma cancelamento mesmo assim
- Continua no passo 10
16a. Reembolso via crédito na arena (política)
- Sistema detecta que política de reembolso é via crédito
- Sistema credita valor na Wallet do usuário
- Sistema notifica: "R$ X creditado na sua carteira"
- Sistema define validade do crédito (ex: 90 dias)
16b. Falha no processamento de reembolso
- Sistema registra erro
- Sistema marca reembolso como PENDING
- Sistema adiciona à fila de retry
- Sistema notifica usuário: "Reembolso será processado em até 5 dias úteis"
- Sistema alerta equipe financeira
19a. Nenhum usuário na fila
- Sistema apenas libera horário
- Horário volta a aparecer como disponível na agenda
Fluxos de Exceção
E1. Tentativa de cancelar reserva já iniciada
- Sistema detecta que horário da reserva já passou
- Sistema exibe erro: "Não é possível cancelar reserva já iniciada"
- Sistema sugere: "Entre em contato com a recepção"
- Termina caso de uso
E2. Tentativa de cancelamento duplicada (idempotência)
- Sistema detecta que reserva já está cancelada
- Sistema exibe mensagem: "Esta reserva já foi cancelada anteriormente"
- Sistema exibe detalhes do cancelamento anterior
- Termina caso de uso
E3. Cancelamento por força maior (sistema)
- Sistema detecta que quadra ficou indisponível (ex: manutenção emergencial)
- Sistema cancela reserva automaticamente
- Sistema processa reembolso integral (100%)
- Sistema isenta penalidades
- Sistema envia notificação explicando situação
- Sistema oferece realocação automática se houver horário similar
Regras de Negócio
- RN-BOOK-014: Cancelamento gratuito até X horas antes (configurável por arena)
- RN-BOOK-015: Cancelamento tardio implica penalidade de Y% (configurável)
- RN-BOOK-016: No-show (não cancelar e não comparecer) implica penalidade de 100%
- RN-BOOK-017: Reembolso processado em até 5 dias úteis (cartão) ou imediato (wallet)
- RN-BOOK-018: Usuário com 3 no-shows consecutivos pode ser suspenso temporariamente
- RN-BOOK-019: Cancelamento por força maior (arena) isenta penalidades
- RN-BOOK-020: Créditos de cancelamento têm validade de 90 dias
Requisitos Relacionados
- RF-AGENDA-004 (Cancelamento, No-show, Atraso)
- RF-WALLET-003 (Transações de crédito/débito)
- RF-FILA-001 (Fila de uso de quadra)
- RF-COMUN-001 (Notificações)
UC-BOOK-04: Fazer Check-in
Prioridade: MVP
Ator Principal: Player
Atores Secundários: Access Control System, IoT Device
Pré-condições:
- Usuário deve ter reserva confirmada para horário próximo
- Check-in deve estar dentro da janela permitida (ex: 5 min antes até início)
Pós-condições:
- Check-in registrado
- Acesso à quadra liberado
- Contagem de tempo de jogo iniciada
- Status da reserva atualizado
Trigger: Usuário chega na arena e abre o app ou se aproxima da quadra
Fluxo Principal
- Usuário chega na arena 5 minutos antes do horário
- Sistema detecta proximidade via:
- GPS/Geofence do app
- Beacon Bluetooth na quadra
- QR Code na entrada da quadra
- Sistema identifica reservas ativas do usuário para horário atual
- Sistema exibe notificação: "Sua reserva está pronta! Faça check-in"
- Usuário toca na notificação ou abre o app
- Sistema exibe modal de check-in:
- Reserva: Quadra 2 - Hoje às 14:00
- Tempo restante: 3 minutos para início
- Botão: [Fazer Check-in Agora]
- Usuário clica no botão
- Sistema valida:
- Horário dentro da janela permitida
- Reserva está confirmada (não cancelada)
- Usuário é participante da reserva
- Quadra está disponível (sem partida em andamento)
- Sistema cria registro de Check-in no Access Context
- Sistema atualiza Booking.status para CHECKED_IN
- Sistema registra timestamp exato do check-in
- Sistema libera acesso físico:
- Envia comando ao Access Control System (Ziggy)
- Libera catraca/porta para zona da quadra
- Ativa luz verde ou indicador visual na quadra
- Sistema inicia contagem de tempo de jogo
- Sistema notifica outros participantes da reserva:
- "Fulano fez check-in, a partida vai começar!"
- SE todos participantes fizeram check-in:
- Sistema marca partida como READY_TO_START
- Sistema pode iniciar gravação automática (se câmeras configuradas)
- Sistema exibe na tela:
- "Check-in realizado com sucesso!"
- "Quadra 2 liberada"
- "Tempo de jogo: 60 minutos"
- "Bom jogo! 🎾"
- Sistema atualiza dashboard operacional
- Sistema registra presença em estatísticas do jogador
Resultado: Check-in confirmado e acesso liberado
Fluxos Alternativos
2a. Usuário faz check-in manual via QR Code
- Usuário vê QR Code na entrada da quadra
- Usuário abre câmera do app e escaneia QR Code
- Sistema identifica quadra e horário
- Sistema lista reservas do usuário para esta quadra
- Usuário seleciona reserva correta
- Pula para passo 8
2b. Check-in via tablet na quadra (self-service)
- Usuário acessa tablet fixo na quadra
- Sistema exibe lista de reservas do horário atual
- Usuário busca seu nome ou escaneia pulseira/QR code
- Sistema identifica usuário
- Pula para passo 8
2c. Check-in assistido pela recepção
- Usuário informa na recepção que vai jogar
- Recepcionista busca reserva no sistema
- Recepcionista confirma check-in no painel operacional
- Sistema executa passo 9 em diante
8a. Check-in fora da janela de tempo
- Sistema detecta que ainda faltam mais de 15 minutos para o horário
- Sistema exibe mensagem: "Check-in permitido a partir das 13:45"
- Sistema oferece: "Deseja entrar na fila ou aguardar?"
- SE usuário aguarda:
- Sistema envia notificação quando janela abrir
- Termina caso de uso
- SE usuário quer entrar na fila:
- Sistema redireciona para UC-QUEUE-01
8b. Atraso além da tolerância
- Sistema detecta que horário da reserva já passou + tolerância (ex: 5 min)
- Sistema exibe aviso: "Você está atrasado! Sua reserva pode ter sido liberada"
- Sistema verifica se quadra foi liberada para fila
- SE quadra foi liberada:
- Sistema exibe: "Quadra já foi alocada para outro jogador"
- Sistema registra no-show
- Sistema aplica penalidade
- Termina caso de uso
- SENÃO (quadra ainda está reservada):
- Sistema permite check-in tardio
- Sistema ajusta tempo de jogo (reduz conforme atraso)
- Sistema notifica: "Tempo de jogo reduzido para X minutos devido ao atraso"
- Continua no passo 9
14a. Outros participantes não chegaram
- Sistema detecta que apenas 1 de 4 jogadores fez check-in
- Sistema aguarda 5 minutos
- Sistema envia lembrete aos ausentes: "Sua partida está começando!"
- SE após 5 minutos ninguém mais chegou:
- Sistema pergunta ao jogador presente: "Deseja jogar sozinho ou cancelar?"
- SE jogador quer jogar solo:
- Sistema permite (treino individual)
- Sistema não marca no-show para quem chegou
- SE jogador cancela:
- Sistema cancela partida
- Sistema registra no-show para ausentes
- Sistema não penaliza quem fez check-in
Fluxos de Exceção
E1. Sistema de controle de acesso offline
- Sistema detecta falha na comunicação com Ziggy
- Sistema registra check-in normalmente no banco
- Sistema envia comando para fila de retry
- Sistema notifica recepção: "Liberar acesso manualmente"
- Recepcionista libera catraca fisicamente
- Sistema sincroniza quando conectividade restaurada
E2. Tentativa de check-in sem reserva
- Sistema detecta que usuário não tem reserva ativa
- Sistema exibe: "Você não tem reserva para este horário"
- Sistema oferece opções:
- Ver minhas reservas
- Fazer nova reserva
- Entrar na fila (se houver vaga)
- Usuário seleciona opção
- Sistema redireciona conforme escolha
E3. Check-in duplicado (já feito)
- Sistema detecta que check-in já foi registrado
- Sistema exibe: "Check-in já realizado às 13:58"
- Sistema exibe status atual: "Partida em andamento (15 min decorridos)"
- Sistema oferece: "Ver tempo restante"
- Termina caso de uso
E4. Quadra ocupada por partida anterior
- Sistema detecta que partida anterior ainda não terminou
- Sistema exibe: "Quadra ainda ocupada, aguarde..."
- Sistema estima tempo de liberação
- Sistema notifica quando quadra for liberada
- Sistema pode ajustar horário de início (sem prejudicar usuário)
Regras de Negócio
- RN-ACCESS-001: Check-in permitido de 15 minutos antes até horário de início
- RN-ACCESS-002: Atraso tolerado: até 5 minutos após início
- RN-ACCESS-003: Atraso > 5 minutos libera quadra para fila (se houver)
- RN-ACCESS-004: Check-in registra presença física e inicia contagem
- RN-ACCESS-005: Sem check-in = no-show (penalidade aplicada)
- RN-ACCESS-006: Check-in de todos participantes inicia gravação automática (se disponível)
- RN-ACCESS-007: Check-in tardio reduz tempo de jogo proporcionalmente
Requisitos Relacionados
- RF-ACESSO-001 (Check-in/Check-out)
- RF-ACESSO-002 (Check-in por Quadra/Aula)
- RF-INTEG-001 (Sistema de Acesso - Ziggy)
- RF-IOT-002 (Tablet de Quadra)
- RF-VIDEO-001 (Captura de Vídeo)
UC-QUEUE: Fila e Alocação Dinâmica
(Continuará com casos de uso de Fila, Usuários, Instrutores, Partidas, Eventos, Comércio, Wallet, Gamificação, Mídia, IoT, Patrocínio, Comunicação e Relatórios...)
Matriz de Rastreabilidade
Casos de Uso por Prioridade
| Prioridade | Total | Percentual |
|---|---|---|
| MVP | 35+ | ~55% |
| Fase 2 (P2) | 20+ | ~30% |
| Fase 3 (P3) | 10+ | ~15% |
Mapeamento RF → UC
| Requisito Funcional | Casos de Uso |
|---|---|
| RF-ARENA-001 | UC-ARENA-01 |
| RF-ARENA-004 | UC-ARENA-02 |
| RF-QUADRA-001 | UC-COURT-01 |
| RF-QUADRA-005 | UC-COURT-03 |
| RF-QUADRA-008 | UC-COURT-02 |
| RF-AGENDA-002 | UC-BOOK-01, UC-BOOK-02 |
| RF-AGENDA-004 | UC-BOOK-03 |
| RF-ACESSO-001 | UC-BOOK-04 |
| RF-USER-001 | UC-AUTH-02 |
(Continua...)
Glossário
| Termo | Definição |
|---|---|
| Check-in | Confirmação de presença física do usuário |
| No-show | Não comparecimento sem cancelamento |
| Idempotência | Múltiplas requisições idênticas produzem mesmo resultado |
| Race Condition | Condição de corrida quando múltiplos usuários acessam simultaneamente |
| Geofence | Área virtual geográfica que dispara eventos |
| Beacon | Dispositivo Bluetooth de proximidade |
| Webhook | Notificação HTTP de evento assíncrono |
| Rate Limiting | Limitação de taxa de requisições |
Documentos Relacionados
Status do Documento: 🚧 Em construção - 15 casos de uso detalhados de 65+ planejados
Próximas Seções a Detalhar:
- UC-QUEUE (Fila e Alocação)
- UC-USER (Gestão de Usuários)
- UC-INSTRUCTOR (Professores e Aulas)
- UC-MATCH (Jogos e Partidas)
- UC-EVENT (Eventos)
- UC-COMMERCE (Consumo e Cobrança)
- UC-WALLET (Carteira Digital)
- UC-GAMIF (Gamificação)
- UC-MEDIA (Vídeo e Mídia)
- UC-IOT (Dispositivos IoT)
- UC-SPONSOR (Patrocínio)
- UC-COMM (Comunicação)
- UC-REPORT (Relatórios)
Controle de Versões:
| Versão | Data | Autor | Alterações |
|---|---|---|---|
| 0.1 | 2026-01-09 | Atlas | Estrutura inicial + 15 UCs detalhados (AUTH, ARENA, COURT, BOOK) |
"The value of a use case lies not in its existence, but in its ability to drive shared understanding." - Alistair Cockburn