Migrando de uma estrutura plana para uma estrutura N-níveis
A maioria das igrejas começa com uma estrutura plana — todo mundo é só "membro", há um site e o organograma está na cabeça de alguém. Isso funciona até o segundo campus abrir, o primeiro líder de pequeno grupo precisar de um escopo, ou os anciãos quererem recortes demográficos por região.
Esta página passa pela migração: de uma organização de um único patamar (ou de uma configuração legada de três níveis filial/centro/bascenta) para o modelo N-níveis que o GCM usa hoje.
Dois pontos de partida
Você provavelmente está em uma destas posições:
- Nova organização GCM com um nível definido. Você adicionou algumas unidades no nível 1 (ou só deixou o nível Filial padrão semeado) e agora quer adicionar os níveis 2 e 3 sem perturbar os membros já no nível 1.
- Organização GCM existente de antes do N-nível ser lançado. Seus dados já estão em
org_units— o modelo legado de três níveis foi migrado pelo GCM durante uma atualização da plataforma. Você não precisa migrar os dados; talvez queira renomear ou reestruturar.
Ambas seguem o mesmo formato. As diferenças são apontadas onde importam.
O formato da migração
- Audite o que você tem. Liste cada unidade existente e a contagem de membros atribuídos.
- Projete a árvore-alvo no papel. Decida os nomes de nível, quais unidades existentes viram quais novas unidades, e onde os membros aterrissam.
- Adicione novos níveis em Configurações. Níveis primeiro, unidades segundo.
- Crie as novas unidades. Comece no nível de topo e desça.
- Reatribua membros. Mova-os do nível 1 para o nível folha apropriado.
- Arquive as unidades antigas se elas não forem mais necessárias.
- Re-restrinja usuários para que pastores vejam a fatia certa.
- Faça uma verificação de sanidade dos relatórios antes de anunciar.
Você pode fazer isso de forma incremental — não existe "modo migração". A organização continua rodando o tempo todo.
Passo 1: auditar
Abra a página Estrutura organizacional e anote cada unidade ativa. Anote o badge de contagem de membros em cada uma. Exporte a lista de membros filtrada por unidade (/members?org_unit=<id>) para CSV se quiser uma trilha em papel.
Coisas para sinalizar:
- Unidades com zero membros — candidatas a exclusão antes de começar.
- Unidades sem líder — candidatas a consertar já que você está nelas.
- Unidades com nomes duplicados sob pais diferentes — fáceis de confundir durante a reatribuição.
Passo 2: projetar o alvo
Esboce a nova árvore antes de tocar a UI. Um alvo comum:
Filial (nível 1)
└── Centro (nível 2)
└── Célula (nível 3)Para cada unidade existente, decida em qual unidade de nível folha seus membros vão acabar. Se todo mundo está atualmente no nível 1 ("Filial Acácia") e você está adicionando células, você precisa saber em qual célula cada membro entra. Essa é uma decisão para sua equipe, não para o GCM.
Documente o mapeamento em uma planilha:
| Unidade atual (nível 1) | Nova unidade (nível 3) | Contagem de membros |
|---|---|---|
| Filial Acácia | Célula Acácia A | 45 |
| Filial Acácia | Célula Acácia B | 38 |
| Filial Acácia | Célula Acácia C | 22 |
Passo 3: adicionar novos níveis em Configurações
Vá em Configurações → Hierarquia organizacional e adicione os níveis que ainda não tem. Veja Definindo níveis para o passo a passo de campo por campo.
Nomeie-os como sua igreja fala. Salve. Não se preocupe com criação de unidade ainda — os níveis só precisam existir.
Passo 4: criar as novas unidades
Abra a árvore organizacional. Expanda a unidade de nível 1 sob a qual você quer aninhar. Use o menu de três pontos para adicionar unidades filhas um nível abaixo. Repita para o nível 3.
Para muitas unidades de uma vez, entre na página de nível (/hierarchy/2) e adicione-as cartão por cartão. É mais rápido do que a dança do diálogo na árvore.
Defina endereços e localizações de mapa conforme avança — o módulo de mapa vai popular assim que o geocoder alcançar.
Passo 5: reatribuir membros
Essa é a parte em que a maioria das igrejas perde a paciência. Duas opções:
Opção A — uma unidade de cada vez, na UI
- Abra a página de detalhes da nova célula.
- Clique em Adicionar membro, busque, escolha, confirme.
- Repita para cada membro que pertence à célula.
Lento, mas visível. Bom para organizações pequenas (< 100 membros).
Opção B — em massa pela lista de membros
- Vá em Membros e filtre para os membros pretendidos para a célula (por nome, por status de visitante, pelo que for).
- Selecione todas as linhas.
- Ações em massa → Atribuir a unidade → escolha a célula.
O GCM upsert as atribuições. Linhas existentes de nível 3 são substituídas; se o nível 1 já estava definido, essa linha fica intacta. (Para limpar o nível 1 em massa também, rode Desatribuir do nível 1 primeiro.)
Para migrações grandes, você também pode embutir a atribuição de unidade em um import CSV pontual, mas estaria reimportando dados que já estão no sistema — geralmente mais trabalho do que a ação em massa.
Reatribuição é um-por-nível, não vários-por-unidade
Um membro no nível 1 sem atribuição de nível 3 recebe uma nova linha de nível 3 adicionada — nada é substituído. Mas um membro já no nível 3 Célula Acácia A que você reatribui para Célula Acácia B substitui a linha. O índice único garante que não há duplos.
Passo 6: arquivar as unidades antigas
Se sua antiga Filial Acácia de nível 1 ainda tem membros diretamente atribuídos depois da migração, você tem dois caminhos:
- Deixe-os lá. Membros no nível da filial ainda cascateiam para cima corretamente. Seus relatórios consolidados continuam funcionando.
- Mova-os para fora com Ações em massa → Desatribuir do nível 1 e deixe-os sentados só no nível folha.
Você provavelmente não quer arquivar a Filial Acácia de nível 1 — ainda é sua unidade de topo, agora com descendentes. Mas se você está realmente reestruturando (por exemplo, Filial Acácia e Filial Bordo se mesclam em Filial Árvore), veja Arquivar e restaurar para as regras de cascade.
Passo 7: re-restringir usuários
Pastores que você havia restringido a Filial Acácia agora veem toda a subárvore Acácia por padrão. Se é isso que você quer, sem ação.
Se quer que um líder de célula seja restringido só à sua célula:
- Vá em Usuários e funções → Usuários e abra o usuário.
- Clique em Editar atribuições.
- Desmarque a atribuição de nível de filial e marque a de nível de célula.
- Salve.
O próximo carregamento de página pega o novo escopo. Veja Atribuindo líderes e pastores de unidade para o modelo completo.
Passo 8: verificação de sanidade
Antes de anunciar a mudança à sua equipe, verifique:
- A contagem total de membros no painel bate com o que você tinha antes.
- A contagem de membros por filial bate com a soma dos descendentes dela.
- O login de um pastor mostra só os membros da célula dele.
- O relatório de presença da semana passada ainda resolve — eventos históricos usam o id de unidade, que não mudou.
- O mapa mostra as novas unidades fixadas nos seus endereços.
Divergências geralmente vêm de atribuições de nível 1 sobrando que você não notou. Re-exporte a lista de membros, ordene por unidade, procure brancos.
O que você não precisa migrar
O modelo de colunas legado de três níveis filial/centro/bascenta foi totalmente removido do código do app desde a última atualização da plataforma. Se seus dados antigos referenciam essas colunas, o GCM já migrou as linhas para org_units durante a atualização. Os rótulos foram preservados como nível 1, 2, 3 com os nomes originais. Você não precisa fazer nada para "completar" a migração — o novo modelo é o único modelo.
Referências do sistema de tipos para as colunas legadas sobrevivem em src/integrations/supabase/types.ts porque esse arquivo é autogerado do banco e as colunas não foram dropadas. O app as ignora.
Perguntas comuns
Posso fazer essa migração em estágios ao longo de semanas? Sim. Não há "interruptor". Você pode adicionar o nível 2 hoje, o nível 3 no próximo mês. Apenas garanta que os membros estejam colocados antes que qualquer relatório dependa da nova estrutura.
O que acontece com linhas existentes de presença e doação que referenciam as unidades antigas? Elas são chaveadas por id de unidade, não por nível. Enquanto o id da unidade existir (seja no nível 1 ou como uma entidade renomeada), a linha ainda resolve. Arquivar ou excluir a unidade antiga é o que quebraria relatórios históricos — então faça isso com cuidado.
Devo excluir ou arquivar depois da migração? Arquive. Sempre arquive. Você sempre pode mudar de ideia e desarquivar; a exclusão é final pela UI.
Próximos passos
- Definir níveis — configure os nomes de patamar alvo.
- Criar unidades — popule os novos níveis.
- Atribuir membros — reanexar pessoas às folhas certas.
