Grupos jerárquicos de 6 niveles — la característica más compleja del proyecto
Hay características que parecen simples en el papel. "Añadir grupos" — suena inocente. Luego empieza a investigar y se da cuenta de que acaba de abrir la caja de Pandora.
TAMSIV soporta grupos jerárquicos de hasta 6 niveles de profundidad. Mi club de buceo, por ejemplo: Club → Comisión Técnica → Nivel 1 → Grupo del martes.
El modelo de datos
Cada grupo tiene un parent_id que apunta a su grupo padre. Para mostrar el árbol completo, utilizo consultas recursivas (CTE) en PostgreSQL con una cláusula WHERE depth < 6 como salvaguarda.
Cuatro roles, cuatro realidades
- Admin — hacer todo: crear, modificar, eliminar, gestionar miembros
- Manager — gestionar tareas y notas, asignar miembros
- Member — crear contenido, ver todo el contenido del grupo
- Viewer — solo lectura
La trampa es la herencia. Si usted es administrador de un grupo padre, ¿es automáticamente administrador de los subgrupos? En TAMSIV, la respuesta es sí, pero con matices.
31 políticas RLS
Este es el número de políticas de seguridad a nivel de fila (RLS) que tuve que escribir para el esquema colaborativo. Probar 31 políticas significa al menos 31 escenarios. Metódico, aburrido, indispensable.
El componente HierarchicalGroupPicker
En el frontend, construí un HierarchicalGroupPicker que muestra el árbol con sangría, iconos de rol y un interruptor para "incluir subgrupos". Esta es la característica que más tiempo me llevó. Pero también es la que hace que TAMSIV sea utilizable para organizaciones reales.