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.

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. - Ativas —
subscription_status = 'active'. - Em trial —
subscription_status = 'trialing'. - Em atraso —
subscription_status = 'past_due'. Acende em âmbar quando maior que zero. - MRR — soma de
plans.price_monthly_usdpara 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
organizationscom 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_logcomaction = '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_adminousuperadmin. 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.
