Feature: Modo de Manutenção
Introdução ao documento
Este documento descreve a funcionalidade de controle de modo de manutenção do sistema.
Versionamento
- Versão do documento: 1.0.0
- Última atualização: 2026-03-09
- Responsável: Marivaldo Vinicius
Referencial teórico
Visão geral
A feature de modo de manutenção permite ativar/desativar diferentes modos de manutenção do sistema, exibindo páginas customizadas para usuários quando o sistema está em manutenção. Suporta múltiplos modos de manutenção identificados por slug, mas apenas um pode estar ativo por vez.
Atores envolvidos
- Administrador Geral: Cria, edita e gerencia modos de manutenção
- Usuários: Visualizam página de manutenção quando sistema está em modo de manutenção
- Sistema: Aplica middleware para redirecionar usuários durante manutenção
Pré-condições
- Permissão
Administração_Geralpara gerenciar modos de manutenção - Tabela
maintenance_modescriada e acessível - Middleware
RedirectIfMaintenanceModeActiveconfigurado nas rotas
Fluxo principal
Criação de Modo de Manutenção
-
Administrador acessa interface
- Acessa
/admin/manutencao(requer permissãoAdministração_Geral) - Visualiza lista de modos de manutenção existentes
- Acessa
-
Criação de novo modo
- Preenche formulário com título, mensagem e descrição
- Sistema valida dados (título único, tamanhos máximos)
- Gera slug automaticamente a partir do título (uppercase, caracteres especiais substituídos por
_)
-
Persistência
- Modo é criado com
active = false(inativo por padrão) - Slug deve ser único no sistema
- Dados são salvos na tabela
maintenance_modes
- Modo é criado com
Ativação de Modo de Manutenção
-
Seleção de modo
- Administrador seleciona modo de manutenção para ativar
- Sistema desativa todos os modos existentes
- Ativa apenas o modo selecionado
-
Aplicação do modo
- Middleware
RedirectIfMaintenanceModeActiveverifica se há modo ativo - Se ativo, redireciona usuários para
/manutencao - Página de manutenção exibe título, mensagem e descrição do modo ativo
- Middleware
-
Desativação
- Administrador pode desativar enviando
slug = "disabled" - Todos os modos são desativados
- Sistema volta ao funcionamento normal
- Administrador pode desativar enviando
Fluxos alternativos
Múltiplos modos (apenas um ativo)
- Sistema garante que apenas um modo pode estar ativo por vez
- Ao ativar um modo, todos os outros são automaticamente desativados
- Evita conflitos e confusão sobre qual mensagem exibir
Modo não encontrado
- Se slug fornecido não existe, sistema retorna erro
- Modo não é ativado
- Sistema permanece no estado anterior
Validação de título duplicado
- Título deve ser único na tabela
- Se duplicado, sistema retorna erro de validação
- Administrador deve escolher título diferente
Acesso durante manutenção
- Usuários são redirecionados para página de manutenção
- Apenas administradores com permissão adequada podem acessar sistema
- API pode continuar funcionando (dependendo da configuração do middleware)
Regras de negócio
- Apenas um modo ativo: Sistema permite apenas um modo de manutenção ativo por vez
- Slug único: Slug gerado automaticamente deve ser único
- Título único: Título deve ser único na tabela
- Geração de slug: Slug é gerado automaticamente: uppercase, caracteres especiais substituídos por
_ - Inativo por padrão: Novos modos são criados com
active = false - Middleware aplicado: Middleware verifica modo ativo em rotas web e API (quando configurado)
Estados possíveis
- Inativo: Nenhum modo de manutenção ativo, sistema operacional
- Ativo: Modo de manutenção ativo, usuários redirecionados
- Criado mas inativo: Modo existe mas não está ativo
- Erro: Falha na criação/ativação de modo
Endpoints envolvidos
Admin Panel (requer permissão)
- GET
/admin/manutencao- Lista modos de manutenção - POST
/admin/maintenance-mode/create- Cria novo modo - PUT
/admin/maintenance-mode/update/{id}- Atualiza modo existente - POST
/admin/maintenance-mode/toggle/{slug}- Ativa/desativa modo - DELETE
/admin/maintenance-mode/delete/{id}- Remove modo
Página pública
- GET
/manutencao- Página de manutenção exibida aos usuários
Dados afetados
- Tabela
maintenance_modes: Armazena modos de manutenção- Campos:
id,title,message,description,slug,active,created_at,updated_at - Relacionamento: Nenhum (tabela independente)
- Campos:
Middleware relacionado
- RedirectIfMaintenanceModeActive: Verifica se modo de manutenção está ativo
- Aplicado em rotas web e API (quando configurado)
- Redireciona para
/manutencaose modo ativo