R-003 — Flag scheduling_suspension suspende o agendamento na interface
TLDR: com a flag
scheduling_suspensionligada, oHeaderexibe o aviso de suspensão e todo agendador do front se comporta como se o terapeuta não tivesse horários disponíveis — para clientes, terapeutas e visitantes deslogados.
Given / When / Then
Dado que a flag scheduling_suspension está ligada para o usuário ou visitante
Quando ele acessa uma rota fora das exclusões do useTopBanner, logado ou não
Então o TopBanner exibe “Novos agendamentos estão temporariamente indisponíveis devido a uma manutenção. Agradecemos a compreensão.”, sem link, até ser dispensado
Dado que a flag scheduling_suspension está ligada
Quando qualquer agendador é aberto — perfil público do terapeuta, modal do card de terapeuta, “Agendar Nova Sessão” em Meus Terapeutas, “Reagendar Sessão” (painel, Minhas Sessões, Minha Agenda) ou “Agendar sessão” do voucher
Então a disponibilidade não é buscada, todos os dias do calendário ficam desabilitados, aparece “Sem horários disponíveis para estas datas.” e “Confirmar Agendamento” fica desabilitado
Dado que um visitante não está logado
Quando o front busca flags
Então consulta /features/anonymous e recebe apenas as features ligadas globalmente no Flipper
Restrições
- A mesma flag controla banner e suspensão; não há flag separada para o aviso.
- Para valer para deslogados, a flag precisa estar “Fully enabled” no Flipper; habilitar por ator não afeta visitantes (regra correspondente no
trgclub-api). - Menus, páginas (Minha Agenda, Minha Disponibilidade, carteira, checkout) e a configuração de disponibilidade do terapeuta continuam visíveis — só os horários somem.
- A suspensão é apenas de interface: o backend não bloqueia criação, reagendamento nem checkout por URL já montada.
- A dispensa do banner é persistida em
top-banner-storage-v2por navegador e não é resetada no logout; trocar a chave faz o banner reaparecer para todos.
Teste vinculado
src/hooks/__tests__/useScheduler.test.ts (flag ligada → sem fetch e sem dias), src/infra/FeatureManager/test/useFeature.test.ts (ator anonymous), src/components/TopBanner/TopBanner.test.tsx (banner sem link), src/stores/topBanner/topBanner.test.ts (chave v2).