Skip to content

fix: desativacao temporaria do WhatsApp (kill-switch + plano ProPlus) - #355

Merged
arthuurw merged 9 commits into
homologfrom
feat/pre-prod
Aug 6, 2026
Merged

fix: desativacao temporaria do WhatsApp (kill-switch + plano ProPlus)#355
arthuurw merged 9 commits into
homologfrom
feat/pre-prod

Conversation

@arthuurw

@arthuurw arthuurw commented Aug 1, 2026

Copy link
Copy Markdown
Owner

Summary

  • Kill-switch explícito WhatsApp:Habilitado (default false) — DI gate força NullWhatsAppNotifier mesmo com credenciais válidas configuradas.
  • Webhook POST /webhooks/whatsapp vira no-op (200) quando desligado, checado ANTES de ler/validar payload (HMAC). GET (handshake) inalterado.
  • WhatsAppHealthCheck retorna Healthy sem bater na Graph API quando desligado.
  • Migration inativa o plano ProPlus (is_ativo=false) — propaga automaticamente pra landing/contratar/trocar/guard de backend.
  • Frontend: chip "WhatsApp" em Meu Plano sinaliza indisponibilidade temporária independente do tier.
  • specs/specification-whatsapp.md atualizada (gate, config, estado de desativação temporária, procedimento de reativação).

Known gap

Migration InativarPlanoProPlus não foi aplicada a um banco real nesta branch — sem Docker no ambiente de implementação, e a credencial do Supabase remoto (schema develop) em User Secrets falhou autenticação. SQL validado offline via dotnet ef migrations script --idempotent; dotnet ef database update deve ser rodado manualmente (ou no deploy) antes/durante a promoção.

Verificação independente (Verifier, author≠verifier): PASS — .specs/features/desativar-whatsapp-temporario/validation.md (local, gitignored).

Test plan

  • dotnet build forzion.tech.slnx
  • dotnet test forzion.tech.Tests --filter "Category!=Integration" — 3391 passed
  • npm run build + npm run test (frontend) — verde
  • CI (Testcontainers/E2E) — verificar ao ficar verde
  • Aplicar dotnet ef database update manualmente antes de considerar o kill-switch efetivo em homolog

🤖 Generated with Claude Code

Kill-switch explicito (default false) para desativacao temporaria
do WhatsApp, independente de credencial configurada.
…alse

Gate DI unico em InfrastructureExtensions passa a checar a flag antes
de checar credenciais, cobrindo as 4 combinacoes flag x credencial.
…false

Checa a flag antes de ler/validar payload (HMAC) no POST, evitando
oraculo de assinatura enquanto desativado. GET (handshake) inalterado.
Checa WhatsApp:Habilitado antes de credencial, sem bater na Graph API
enquanto a integracao esta desligada de proposito.
…hatsapp

Migration EF Core (SQL puro, mesmo padrao da que ja inativou o Elite)
propaga automaticamente pra landing/contratar/trocar/guard de backend,
que ja leem is_ativo. DataSeeder atualizado p/ refletir o estado local.

Aplicacao local (dotnet ef database update) nao pode ser verificada
nesta sessao: sem Docker e credencial do Supabase remoto (schema
develop) invalida (password authentication failed). SQL validado
offline via dotnet ef migrations script --idempotent.
…p do plano

Constante WHATSAPP_TEMPORARIAMENTE_INDISPONIVEL sobrepoe label/tooltip
do chip em Meu Plano independente do tierEfetivo, cobrindo o caso raro
de tier legado (ProPlus/Elite) que ja permitiria WhatsApp.
…ao temporaria

Cobre gate DI/webhook/health-check, migration do plano ProPlus, flag
do chip frontend e procedimento de reativacao (specs/specification-whatsapp.md).
@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown

Coverage Report for frontend

Status Category Percentage Covered / Total
🔴 Lines 88.12% (🎯 95%) 3628 / 4117
🔴 Statements 86.12% (🎯 95%) 3960 / 4598
🔴 Functions 78.33% (🎯 95%) 1034 / 1320
🔴 Branches 82.75% (🎯 90%) 2323 / 2807
File Coverage
File Stmts Branches Functions Lines Uncovered Lines
Changed Files
frontend/src/app/(treinador)/treinador/plano/page.tsx 88.54% 87.29% 92.85% 92.73% 136, 153, 160, 183, 194, 203, 212-218, 227, 246, 254-256, 281, 291, 301
frontend/src/lib/config/feature-flags.ts 100% 100% 100% 100%
Generated in workflow #594 for commit a950bc6 by the Vitest Coverage Report Action

arthuurw and others added 2 commits August 5, 2026 21:24
SeedAsync_PlanosNaoElite_PermanecemAtivos ficou desatualizado apos o seed
marcar ProPlus inativo (kill-switch WhatsApp); split em teste dedicado
pra ProPlus + teste de planos vendaveis (Free/Basic/Pro) excluindo
Elite e ProPlus.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@arthuurw
arthuurw merged commit dff43b1 into homolog Aug 6, 2026
21 checks passed
@arthuurw
arthuurw deleted the feat/pre-prod branch August 6, 2026 00:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant