Blog
Architecture
12 octobre 20258 min

Groupes hiérarchiques à 6 niveaux — la feature la plus complexe du projet

Il y a des features qui semblent simples sur le papier. "Ajoute des groupes" — ça a l'air innocent. Puis tu commences à creuser et tu réalises que tu viens d'ouvrir la boîte de Pandore.

TAMSIV supporte des groupes hiérarchiques jusqu'à 6 niveaux de profondeur. Mon club de plongée par exemple : Club → Commission Technique → Niveau 1 → Groupe du mardi.

Le modèle de données

Chaque groupe a un parent_id qui pointe vers son groupe parent. Pour afficher l'arbre complet, j'utilise des requêtes récursives (CTE) en PostgreSQL avec une clause WHERE depth < 6 comme garde-fou.

Quatre rôles, quatre réalités

  • Admin — tout faire : créer, modifier, supprimer, gérer les membres
  • Manager — gérer les tâches et mémos, assigner des membres
  • Member — créer du contenu, voir tout le contenu du groupe
  • Viewer — lecture seule

Le piège, c'est l'héritage. Si tu es admin d'un groupe parent, est-ce que tu es automatiquement admin des sous-groupes ? Dans TAMSIV, la réponse est oui — mais avec des nuances.

31 politiques RLS

C'est le nombre de politiques Row Level Security que j'ai dû écrire pour le schéma collaboratif. Tester 31 politiques, c'est 31 scénarios minimum. Méthodique, ennuyeux, indispensable.

Le composant HierarchicalGroupPicker

Côté frontend, j'ai construit un HierarchicalGroupPicker qui affiche l'arbre avec indentation, icônes de rôle, et un toggle "inclure les sous-groupes". C'est la feature qui m'a pris le plus de temps. Mais c'est aussi celle qui rend TAMSIV utilisable pour des organisations réelles.