Skip to content

Organizações

Público

Este artigo é para operadores da plataforma GCM. Administradores de igreja devem ver Usuários e funções.

A aba Organizações em Administrador de plataforma -> Organizações (/platform/organizations) é a lista mestra de cada espaço de trabalho na plataforma. É a página em que você vive durante chamadas de suporte: busque por nome, mude um plano em linha, abra a ficha lateral para ver equipe e detalhe de faturamento, ou empurre uma mudança de plano em massa nas dez organizações que você acabou de promover após uma chamada telefônica.

Lista de organizações com faixa de KPI

A faixa de KPI

Os cinco blocos no topo espelham a aba Visão Geral para que os números sempre batam. Eles são computados no cliente a partir dos dados em cache de orgs/planos — sem ida e volta extra:

  • Total de organizações — cada linha em organizations, independentemente do status.
  • Ativassubscription_status = 'active'.
  • Em trialsubscription_status = 'trialing'.
  • Em atrasosubscription_status = 'past_due'. Acende em âmbar quando maior que zero.
  • MRR — soma de plans.price_monthly_usd para cada organização ativa. Exclui trials e em atraso. Centavos são convertidos em dólares no momento da exibição.

Se o MRR parece errado, o culpado usual é uma linha de plano faltando price_monthly_usd — conserte o plano em Planos e módulos em vez de tocar as organizações.

Buscando e filtrando

A caixa de busca executa um ilike no servidor contra nome, slug e domínio personalizado. A paginação usa 25 linhas por padrão; resultados são debounced por 300ms para que digitar rápido não inunde a rede.

Clique no botão Filtros para adicionar até quatro dimensões de restrição:

  • Plano — starter / growth / network / unlimited.
  • Status — trialing / active / past_due / canceled / paused.
  • Criado de / até — intervalo de datas contra created_at.

A pílula de filtro fica vermelha enquanto pelo menos um estiver ativo; clique em Limpar na barra de filtros para descartar todos.

Editando uma única linha

Plano e status renderizam como controles SearchableDropdown em linha. Escolher um novo valor dispara updateOrgPlan ou updateOrgStatus imediatamente — não há diálogo de confirmação. A query em cache é invalidada para que a faixa de KPI rebalanceie no mesmo render.

Quando você muda um plano, o limite de membros segue: starter -> 500, growth -> 2.500, network -> 10.000, unlimited -> 99.999.999 (o sentinela do banco para "sem limite"). Se precisa de um limite fora da lista, use o diálogo de editar assinatura de Operações de faturamento, que expõe memberLimit diretamente.

Clique no chevron no final de uma linha para abrir a ficha lateral. A ficha puxa uma carga de detalhe mais profunda — pagamentos recentes, lista de equipe, sobreposições de módulos, o interruptor por organização "permitir doações via gateway da plataforma" e o botão de exclusão na zona de perigo.

Criando uma organização

O botão Criar organização abre um diálogo pequeno. Você só precisa preencher o nome e o e-mail do admin; o slug deriva automaticamente do nome (First Church -> first-church) e o plano usa starter como padrão com um trial de 14 dias.

Pular pagamento

Ative Pular pagamento quando estiver semeando um espaço de trabalho de teste ou concedendo direito adquirido a uma igreja parceira. Burla totalmente a tentativa de cobrança ao fim do trial. Use com moderação — cada pagamento pulado aparece como uma flag na reconciliação mensal de faturamento.

O diálogo chama o auxiliar createOrganization, que provisiona:

  • Uma linha em organizations com o slug e plano escolhidos.
  • Os módulos starter para o plano.
  • Um e-mail de convite para o endereço do admin.
  • Uma entrada em platform_audit_log com action = 'org_created'.

Ações em massa

Marque a caixa em duas ou mais linhas e uma barra flutuante aparece no topo da tabela:

  • Mudar plano — aplica um plano a cada linha selecionada, atualizando cada limite de membros conforme avança.
  • Mudar status — aplica um status a cada linha selecionada. Útil para pausar uma coorte durante uma migração.
  • Excluir — abre uma confirmação de exclusão definitiva. O diálogo aceita uma string de motivo que é registrada contra cada exclusão em platform_audit_log.

Operações em massa rodam sequencialmente, não em uma transação. Um toast no fim relata sucessos e falhas separadamente ("Plano atualizado para 8 organização(ões) — 2 falharam"). Linhas com falha permanecem selecionadas para que você possa tentar de novo sem precisar reencontrá-las.

Aperte Esc a qualquer momento para limpar a seleção.

Log de exclusões

Abaixo da tabela principal, o cartão Log de exclusões lista as últimas exclusões definitivas de platform_organization_deletions. Cada linha mostra o nome da organização, slug, contagem de membros no momento da exclusão, quem fez e o motivo. Essa é a trilha de auditoria para "para onde foi a Springfield Bible?" — exclusão suave não é usada para organizações porque a exclusão em cascade precisa liberar o slug para reuso.

Sem desfazer

Excluir uma organização é irrecuperável. Todos os membros, presença, doações, campos personalizados e arquivos de storage daquela organização são descartados. Se o cliente pode voltar, ajuste o status para canceled em vez disso — preserva os dados e libera o assento nos cálculos de MRR.

Quando as edições em linha falham

A maioria das falhas aqui vem de violações de RLS ou restrições:

  • "new row violates row-level security policy" — sua conta perdeu a claim platform_admin ou superadmin. Saia e entre novamente.
  • "violates check constraint orgs_member_limit_positive" — você tentou definir um limite abaixo de 1 pelo editor de plano em massa com uma linha de plano personalizado. Conserte o plano ou use o diálogo de operações de faturamento.
  • "duplicate key value violates unique constraint organizations_slug_key" — o slug que você digitou em Criar organização está em uso. Slugs são globais; escolha um novo ou cheque o log de exclusões para confirmar que o dono anterior se foi de vez.

Para qualquer outra coisa, abra o Log de erros e filtre por source = vercel_api — é lá que as funções edge de criação / exclusão relatam.