Blog
Architecture
12 ottobre 20258 min

Gruppi gerarchici a 6 livelli — la funzionalità più complessa del progetto

Ci sono funzionalità che sembrano semplici sulla carta. "Aggiungi gruppi" — sembra innocuo. Poi inizi a scavare e ti rendi conto di aver appena aperto il vaso di Pandora.

TAMSIV supporta gruppi gerarchici fino a 6 livelli di profondità. Il mio club di immersione, per esempio: Club → Commissione Tecnica → Livello 1 → Gruppo del martedì.

Il modello di dati

Ogni gruppo ha un parent_id che punta al suo gruppo genitore. Per visualizzare l'albero completo, utilizzo query ricorsive (CTE) in PostgreSQL con una clausola WHERE depth < 6 come salvaguardia.

Quattro ruoli, quattro realtà

  • Admin — fare tutto: creare, modificare, eliminare, gestire i membri
  • Manager — gestire attività e memo, assegnare membri
  • Member — creare contenuti, visualizzare tutti i contenuti del gruppo
  • Viewer — sola lettura

La trappola è l'ereditarietà. Se Lei è admin di un gruppo genitore, è automaticamente admin dei sottogruppi? In TAMSIV, la risposta è sì — ma con delle sfumature.

31 politiche RLS

Questo è il numero di politiche Row Level Security che ho dovuto scrivere per lo schema collaborativo. Testare 31 politiche significa almeno 31 scenari. Metodico, noioso, indispensabile.

Il componente HierarchicalGroupPicker

Lato frontend, ho costruito un HierarchicalGroupPicker che visualizza l'albero con indentazione, icone di ruolo e un interruttore "includi sottogruppi". Questa è la funzionalità che mi ha richiesto più tempo. Ma è anche quella che rende TAMSIV utilizzabile per organizzazioni reali.