Pular para o conteúdo principal

Feature: Maintenance Mode

Introdução ao documento

Este documento descreve a feature de modo manutenção, composta pelo middleware global e pela tela /maintenance, além do desvio por manutenção em nível de curso.

Evidências:

Versionamento

Atualizar este documento quando mudarem:

  • o timeout e a política do middleware;
  • os caminhos liberados durante manutenção;
  • os campos usados na tela de manutenção;
  • a distinção entre manutenção global e manutenção por curso.

Evidências:

Referencial teórico

O mapeamento desta feature foi derivado do middleware, da página dedicada de manutenção e do adapter getMaintenanceMode.

Evidências:

Visão geral

  • O middleware consulta getMaintenanceMode() e redireciona quase toda navegação web para /maintenance quando active = true (middleware.ts#L7-L29).
  • A página /maintenance também consulta getMaintenanceMode() e usa os campos remotos quando o modo estiver realmente ativo (maintenance/page.tsx#L24-L32).
  • A página de curso ainda pode renderizar manutenção específica de curso quando a customização tiver maintenance_mode_course_register_active (app/[slug]/page.tsx#L31-L40).

Atores

Pré-condições

  • O adapter getMaintenanceMode precisa responder antes do timeout do middleware para que o bloqueio global aconteça (middleware.ts#L7-L13).
  • A página dedicada depende de getMaintenanceMode() para saber se deve usar conteúdo remoto ou defaults locais (maintenance/page.tsx#L24-L32).

Fluxo principal

  1. O middleware chama getMaintenanceMode() e monta um timeout de 3 segundos (middleware.ts#L7-L13).
  2. Se active = true e a URL não estiver em allowedPaths, a requisição é redirecionada para /maintenance (middleware.ts#L15-L29).
  3. A página /maintenance busca o mesmo estado de manutenção e exibe título, mensagem e descrição (maintenance/page.tsx#L24-L43).

Fluxos alternativos

Regras de negócio

Estados possíveis

Endpoints envolvidos

Dados impactados

Pendências

  • O OpenAPI local não possui endpoint interno para manutenção.
  • Confirmar se a coexistência entre manutenção global e manutenção específica de curso é desenho definitivo.

Evidências: