Crear unidades organizacionales
Una vez que existen tus niveles, los llenas con unidades — las cosas reales que reciben un líder, un conteo de miembros y un pin en el mapa. Una unidad es una fila en la tabla org_units; la página a la que llegas para ella es tu hub para todo lo que esa unidad hace.
Dos formas de entrar
GCM te permite crear unidades desde dos superficies. Escriben a la misma tabla; elige la que se ajuste al momento.
| Superficie | Mejor para | URL |
|---|---|---|
| Árbol de Estructura Organizacional | La imagen completa de arriba hacia abajo. Sin arrastrar, pero ves cada nivel a la vez | /org-structure |
| Página de nivel | Agregar en lote pares en un nivel (digamos 12 células en una fila) | /hierarchy/3 |
La página del árbol es el aterrizaje predeterminado del módulo. Muestra las unidades de nivel 1 en la raíz y te permite expandir para entrar en sus hijos.

Desde la página del árbol
Haz clic en Agregar sede (o como sea que se llame tu nivel 1) en la esquina superior derecha para crear una unidad de nivel superior. Para niveles inferiores, expande un padre, haz clic en el menú de tres puntos en la fila y elige Agregar centro (o como sea que se llame el siguiente nivel).
El diálogo pide:
- Nombre (requerido) — ej. Sede Centro. Hasta dos líneas se envuelven en las tarjetas, así que los nombres descriptivos están bien.
- Padre (requerido para niveles > 1) — elegido de un desplegable con búsqueda de las unidades del nivel inmediatamente superior. El selector se filtra automáticamente al nivel correcto.
- Dirección (opcional) — dirección postal de texto libre. Impulsa el módulo de mapa si también defines una ubicación en mapa.
- Ubicación en mapa (opcional) — abre un selector de Leaflet. Coloca un pin o pega lat/lng. Si defines una dirección pero no una ubicación en mapa, GCM encola una geocodificación en segundo plano y llena
estimated_map_locationcuando llega el resultado.
Haz clic en Crear. La nueva fila aparece en el árbol, el conteo de hijos del padre se incrementa, la estadística "X unidades" del dashboard se refresca.
Desde una página de nivel
Si estás agregando muchas unidades en el mismo nivel — digamos doce células para una sede — entra vía la URL /hierarchy/3 (sustituye el nivel en el que estás trabajando). Verás una cuadrícula de tarjetas de cada unidad en ese nivel filtrada por el selector de padre en la parte superior.
El flujo de la página de nivel es el mismo diálogo bajo el capó, pero obtienes:
- Un filtro de padre para que las unidades nuevas se asignen al padre correcto por defecto.
- Acciones en lote — selecciona 3 unidades y reasígnalas a una nueva sede con un clic.
- Controles de orden — nombre A–Z, conteo de miembros desc, agregadas recientemente.
Este es el camino más rápido cuando estás sembrando muchas unidades de nivel hoja después de una reestructura.
Qué se almacena
Cada fila de unidad tiene estas columnas que la UI muestra:
| Columna | Tipo | Notas |
|---|---|---|
id | UUID | Generado del lado del cliente |
organization_id | UUID | Definido automáticamente desde tu sesión |
level_index | int | El nivel al que pertenece la unidad |
parent_unit_id | UUID | Nulo en el nivel 1, requerido abajo |
name | text | Nombre de visualización |
address | text | Dirección postal opcional |
map_location | text | Lat/lng opcional — gana sobre estimada |
estimated_map_location | text | Llenada por el geocoder cuando se define una dirección |
leader_member_id | UUID | Opcional — ver Asignar líderes |
archived_at | timestamptz | Nulo para filas activas |
deleted_at | timestamptz | Nulo para filas visibles; soft-delete |
Las marcas de tiempo de creación y actualización + los IDs de actor se escriben automáticamente. Puedes verlos en la página de detalle de la unidad en la línea de "auditoría" justo debajo del nombre.
Editar una unidad
Abre la unidad (haz clic en su fila en el árbol o su tarjeta en una página de nivel). Haz clic en Editar en el encabezado. El mismo diálogo regresa rellenado. Puedes cambiar:
- El nombre.
- El padre — mover la unidad mueve a todos sus descendientes con ella. Los miembros en la unidad se quedan donde están; la cascada solo cambia la forma del árbol.
- La dirección y ubicación en mapa.
Guardar no pide confirmación. Los reportes se refrescan la siguiente vez que vuelven a consultarse.
Mover unidades cambia el alcance de los reportes
Si reasignas Centro Centro de Sede Sur a Sede Norte, cada miembro asignado a Centro Centro (y sus hijos) ahora se consolida hacia Sede Norte. Los dashboards de asistencia dominical pueden cambiar de la noche a la mañana — comunica el cambio antes de hacerlo.
Ubicación en mapa y el módulo de mapa
Definir map_location en una unidad le da un pin en el módulo de mapa. El color del pin se determina por el nivel. El agrupamiento de pines se activa alrededor del nivel 3+ si tienes muchas unidades en un área pequeña.
También puedes dejar map_location en blanco y dejar que la dirección se geocodifique en segundo plano. La ubicación estimada llena estimated_map_location y el mapa muestra el pin en un color ligeramente atenuado para indicar que es una suposición.
Si la geocodificación falla (dirección incorrecta, rate-limit), la insignia de estado en la página de la unidad muestra pending → failed. Puedes arreglar la dirección y volver a hacer clic en la unidad para volver a disparar el geocoder.
Conteos de miembros generados automáticamente
La insignia de conteo de miembros en cada fila de unidad se computa vía el RPC count_org_unit_members, no leyendo filas crudas. El RPC maneja la cascada — suma las propias asignaciones de la unidad más cada descendiente. Por eso mover una unidad no rompe el conteo.
La insignia se actualiza dentro de unos segundos de un cambio de asignación. Si parece desactualizada, refresca la página; React Query revalida al foco.
Preguntas comunes
¿Por qué no puedo arrastrar unidades para reasignarlas? El árbol intencionalmente no tiene afordancia de arrastre porque los movimientos de jerarquía cascadean de formas no obvias. El flujo deliberado de Editar → cambiar padre → Guardar fuerza un momento de reflexión.
¿Puedo tener dos unidades con el mismo nombre? Sí. La UI no aplica unicidad porque Célula Norte podría legítimamente existir bajo dos sedes diferentes. Si quieres deduplicar, usa el nombre del padre como prefijo.
¿Cuál es el máximo práctico de unidades? Unos pocos miles por organización han sido probados. El renderizado del árbol se virtualiza cuando expandes un subárbol pesado; las consultas paginan. Más allá de ~10,000 unidades considera si algunas son realmente miembros (ej. si cada hogar es una unidad) y reestructura.
Próximos pasos
- Conecta las relaciones padre-hijo — lee el árbol, expande y colapsa, entra.
- Asigna miembros — vincula personas a tus nuevas unidades.
- Asigna líderes — dale a los pastores un alcance.
