Blog
Architecture
12 de outubro de 20258 min

Grupos hierárquicos de 6 níveis — o recurso mais complexo do projeto

Existem recursos que parecem simples no papel. "Adicionar grupos" — parece inocente. Então você começa a investigar e percebe que acabou de abrir a caixa de Pandora.

TAMSIV suporta grupos hierárquicos com até 6 níveis de profundidade. Meu clube de mergulho, por exemplo: Clube → Comissão Técnica → Nível 1 → Grupo de terça-feira.

O modelo de dados

Cada grupo tem um parent_id que aponta para seu grupo pai. Para exibir a árvore completa, uso consultas recursivas (CTE) em PostgreSQL com uma cláusula WHERE depth < 6 como salvaguarda.

Quatro funções, quatro realidades

  • Admin — fazer tudo: criar, modificar, excluir, gerenciar membros
  • Manager — gerenciar tarefas e memorandos, atribuir membros
  • Member — criar conteúdo, ver todo o conteúdo do grupo
  • Viewer — somente leitura

A armadilha é a herança. Se você é admin de um grupo pai, é automaticamente admin dos subgrupos? No TAMSIV, a resposta é sim — mas com nuances.

31 políticas RLS

Este é o número de políticas de Row Level Security que tive que escrever para o esquema colaborativo. Testar 31 políticas são 31 cenários mínimos. Metódico, chato, indispensável.

O componente HierarchicalGroupPicker

No frontend, construí um HierarchicalGroupPicker que exibe a árvore com indentação, ícones de função e um alternador "incluir subgrupos". Este é o recurso que me levou mais tempo. Mas também é o que torna o TAMSIV utilizável para organizações reais.