L'arbre organisationnel et les relations parent-enfant
La page Structure organisationnelle (/org-structure) est le meilleur endroit dans GCM pour voir la forme de votre église. C'est un arbre littéral — chaque unité de niveau 1 est une racine, chaque niveau 2 s'imbrique en dessous, et ainsi de suite jusqu'aux feuilles.
Cette page concerne la lecture et la navigation de l'arbre. La création d'unités vit dans Créer des unités ; la gestion des noms de palier vit dans Définir des niveaux.
Anatomie d'une ligne
Chaque unité se rend comme une ligne dans l'arbre avec ces éléments, de gauche à droite :
- Un chevron étendre/réduire si l'unité a des enfants. Désactivé quand il n'y a pas de descendants.
- Une icône — bâtiment pour actif, archive pour archivé.
- Le nom. Les noms longs s'enroulent sur une deuxième ligne au lieu de tronquer en "Dow…".
- Un badge de niveau ("Branche", "Centre") — l'étiquette singulière du palier.
- Une puce de comptage de membres avec une icône
Users. Survolez pour l'info-bulle exacte. - Le nom du responsable si un est affecté, sur une ligne plus petite en dessous. Les responsables non affectés affichent un indice ambre atténué "Aucun responsable affecté" lorsque vous avez la permission de gestion, afin que vous puissiez repérer les lacunes d'un coup d'œil.
- L'adresse si définie.
- Une ligne d'actions au survol avec les contrôles d'affectation de responsable, modification et archivage.

Étendre l'arbre
Cliquez sur le chevron de n'importe quelle unité avec des enfants pour l'étendre. Les enfants se rendent un retrait plus loin avec un connecteur de ligne d'arbre vertical. Cliquez à nouveau pour réduire.
Trois raccourcis dans la barre d'outils :
- Tout étendre — ouvre chaque ligne d'un seul coup. Bon pour repérer les lacunes.
- Tout réduire — referme tout jusqu'au niveau 1.
- Tout sélectionner — utilisé avec les actions en masse, voir ci-dessous.
L'état d'étendue vit seulement dans l'état du composant — rafraîchissez la page et vous revenez à tout-réduit. C'est intentionnel ; pour les organisations avec des centaines d'unités, la vue tout-étendu est ingérable.
Statistiques récapitulatives
Au-dessus de l'arbre, deux cartes de statistiques en forme de pastille affichent :
- N unités — total d'unités actives à travers chaque niveau.
- N membres affectés — somme du comptage de membres de chaque unité. (Note : un membre affecté au niveau 1 et au niveau 3 compte deux fois à travers les niveaux, mais seulement une fois vers le total de membres de l'organisation ailleurs. Cette statistique affiche le compte d'affectations, pas le compte distinct de membres.)
Ces pastilles sont codées par couleur — primaire pour les unités, bleu pour les membres — et servent de vérification rapide de santé.
Entrer dans une unité
Cliquez sur la ligne d'une unité pour la sélectionner (la ligne est mise en évidence en bleu primaire). Cliquer sur le nom d'une unité enfant dans le fil d'Ariane en haut de la page de détails de l'unité vous fait monter d'un niveau. Le modèle d'URL est :
/org-structure— la vue d'arbre./hierarchy/:levelIndex— la page de niveau (grille de cartes de chaque unité à ce niveau)./hierarchy/:levelIndex/:unitId— la page de détails de l'unité.
La page de détails de l'unité est la vue lourde. Elle inclut :
- Une carte héros avec le nom de l'unité, la pastille du responsable, le comptage de membres et le badge du parent.
- Des tuiles de statistique pour le comptage d'unités enfants, le total de membres dans le sous-arbre, la moyenne de membres par enfant et le ratio "responsables affectés" (par exemple "2 / 7").
- La carte d'adresse et l'aperçu de carte intégré si
map_locationouestimated_map_locationest défini. - Un panneau Unités enfants avec onglets actifs et archivés, contrôles de tri et cartes cliquables.
- Un panneau Membres avec lignes d'affectation recherchables, paginées et supprimables.
Les fils d'Ariane sont cliquables
En haut de chaque page de détails d'unité, le fil d'Ariane est Structure organisationnelle → <nom de niveau pluriel> → <nom de l'unité>. Cliquez sur n'importe quel segment pour revenir en arrière.
Règles parent-enfant
Chaque unité en dessous du niveau 1 a exactement un parent. Les règles que l'interface applique :
- Une unité ne peut pas être son propre parent. Le sélecteur exclut l'id propre de l'unité.
- Une unité ne peut pas être un descendant d'elle-même. Le reparentage valide cela implicitement via la contrainte de niveau (vous ne pouvez choisir qu'un parent un niveau au-dessus).
- Un parent doit être au niveau immédiatement au-dessus. Une cellule de niveau 4 ne peut pas être parentée directement à une branche de niveau 1 — elle doit passer par un niveau 2 et un niveau 3.
- Les unités de niveau 1 n'ont pas de parent. Le sélecteur ne s'affiche pas dans la boîte de dialogue de création pour le niveau 1.
Ce sont des protections d'interface ; la base de données a aussi une contrainte de vérification correspondant au n°3.
Opérations en masse
Une fois que la case à cocher d'une unité est cochée, une barre d'actions en masse collante apparaît en haut de l'arbre avec ces options :
- Archiver — masque en douceur les unités sélectionnées (et tous leurs descendants — la cascade est automatique).
- Supprimer — ouvre un assistant de réaffectation. Voir ci-dessous.
- Effacer — abandonne la sélection.
Sur une page de niveau (grille de cartes), vous obtenez aussi Modifier le parent — reparenter plusieurs unités pairs à un nouveau parent unique en une opération. Le sélecteur exclut les unités sélectionnées pour empêcher l'auto-parentage.
L'assistant de réaffectation à la suppression
Supprimer une unité qui a des enfants ou des membres déclenche une boîte de dialogue de garde avec deux questions :
Que doit-il advenir des unités enfants ?
- Les supprimer aussi (le défaut — cascade récursive).
- Les déplacer vers une unité sœur que vous choisissez dans une liste déroulante.
Que doit-il advenir des membres ?
- Les désaffecter (supprimer la ligne de
member_unit_assignments). Ils restent comme membres ; ils perdent juste leur lien d'unité. - Les réaffecter à une unité sœur que vous choisissez.
L'assistant compte les deux avant l'exécution afin que vous voyiez "12 membres affectés" et la liste des noms d'unités enfants avant de confirmer. Une fois que vous cliquez sur Supprimer définitivement, l'opération s'exécute en séquence : reparentage des enfants → réaffectation des membres → nettoyage des affectations utilisateur-unité → suppression douce sur les unités.
La suppression définitive est irréversible depuis l'interface
Une fois l'assistant exécuté, les lignes supprimées ont deleted_at défini et sont invisibles à l'application. Les restaurer nécessite une correction de base de données directe du support. Préférez Archiver pour tout ce que vous pourriez ramener.
Comment l'arbre récupère
L'arbre utilise deux requêtes :
org_units— chaque ligne active pour l'organisation, ordonnée parlevel_indexpuisname.org_units_archived— même requête avecarchived_at IS NOT NULL.
Les deux sont mises en cache pendant 2 minutes via React Query. Les mutations (créer, modifier, archiver, supprimer) invalident le cache afin que l'arbre se rafraîchisse automatiquement. Si les comptages de badge paraissent obsolètes, naviguez ailleurs et revenez — cela force un rafraîchissement.
Étapes suivantes
- Affecter des membres aux unités de votre arbre.
- Affecter des responsables et des bergers pour restreindre les vues d'utilisateur.
- Archiver et restaurer quand la forme de votre arbre change.
