Skip to content

Reuniones y niveles de alcance

Una reunión en GCM no es una fecha en el calendario — es la plantilla contra la cual se registra la asistencia. "Servicio Dominical," "Oración del miércoles," "Reunión de célula" son reuniones. El hecho de que el Servicio Dominical ocurrió el 14 de marzo es una fila de asistencia; el hecho de que el Servicio Dominical existe como algo que hace tu iglesia es una fila de reunión.

Regla rápida

Si marcas una lista contra ella semana tras semana, es una reunión. Si es una fecha única con un volante, es un evento.

Por qué las reuniones existen como un concepto separado

Los eventos de calendario responden cuándo pasa algo. Las reuniones responden qué tipo de encuentro es, y quién es responsable de ello. La división importa porque la asistencia, los reportes y los flujos de trabajo todos se basan en la reunión, no en la fecha.

Cuando alguien hace check-in en la estación de check-in, la estación le pide elegir una reunión primero, luego registra attendance_date = hoy contra la reunión que eligieron. Sin reuniones, no tendrías una forma estable de comparar "asistencia del Servicio Dominical en marzo pasado" contra "asistencia del Servicio Dominical este marzo" — cada fecha sería su propia isla.

La tabla meetings es intencionalmente mínima:

sql
meetings(
  id, name, scope_level,
  linked_entity_type,
  organization_id, translations,
  created_at, updated_at, deleted_at
)

No hay hora de inicio, ni día de la semana, ni regla de recurrencia en la reunión misma. Esas preguntas pertenecen a la asistencia ("¿cuándo registramos esto por última vez?") y a tu ritmo semanal, no al registro de reunión.

Niveles de alcance

Cada reunión tiene un scope_level que controla a qué unidades organizacionales se acumula. Elige una de:

  • org — Reuniones de toda la org. Un Servicio Dominical contra el que cada sede reporta. Mejor para iglesias pequeñas con una sola congregación, o para reuniones de toda la org como una conferencia anual.
  • branch — Reuniones a nivel sede. Cada sede tiene su propio Servicio Dominical, su propia lista de asistencia, sus propios totales. Este es el valor por defecto y encaja con la mayoría de iglesias multi-sede.
  • center — Reuniones a nivel centro (nivel 2 en la jerarquía). Útil cuando una sede contiene múltiples centros de adoración que se reúnen por separado.
  • bascenta — Reuniones de célula o grupos pequeños (nivel 3). Cada célula registra su propia lista.

El nivel que elijas decide qué unidad org tiene que elegir un operador de check-in al iniciar una sesión. Alcance en branch y el operador elige una sede; alcance en bascenta y el operador elige hasta el fondo de la jerarquía.

WARNING

Cambiar scope_level en una reunión existente no migra la asistencia histórica. Las filas viejas mantienen su org_unit_id original. Elige el alcance deliberadamente cuando crees la reunión.

Por qué esto difiere de los eventos

Los eventos y las reuniones se almacenan en tablas separadas y cumplen funciones diferentes. La división aparece de tres formas concretas:

  1. Los eventos tienen fecha; las reuniones no. Una fila de evento lleva event_date, start_time, end_time. Una fila de reunión no lleva ninguna de estas — la fecha viene de la columna attendances.attendance_date en cada lista individual.
  2. Los eventos pueden ser recurrentes vía RRULE; las reuniones recurren implícitamente. Un evento semanal renderiza 4–5 puntos en la cuadrícula del mes porque la RRULE se expande del lado del cliente. Una reunión semanal no se renderiza en el calendario en absoluto — aparece solo cuando abres el flujo de asistencia o ves asistencia pasada.
  3. Los eventos se alcanzan opcionalmente; las reuniones se alcanzan obligatoriamente. events.org_unit_id puede ser null (anuncio de toda la org). meetings.scope_level es NOT NULL — cada reunión pertenece a un nivel por diseño.

Un error común es crear un evento de calendario llamado "Servicio Dominical" y luego preguntarse por qué la asistencia no se vincula a él. No lo hagas — deja la cuadrícula del calendario en paz para fechas especiales, y deja que las reuniones impulsen el ritmo semanal.

Configurar una reunión

Las reuniones viven bajo Configuración → Reuniones en lugar de bajo el módulo de Calendario. El formulario es corto: nombre, nivel de alcance y opcionalmente un tipo de entidad vinculada (usado para reuniones de ministerio o escuela que deben registrarse contra ministry_id o school_id en la fila de asistencia).

Típicamente configurarás de tres a cinco reuniones para una org nueva:

  • Servicio Dominical — alcance branch
  • Oración del miércoles — alcance branch
  • Reunión de célula — alcance bascenta
  • Reunión de ministerio — alcance branch, tipo de entidad vinculada ministry

Una vez que existe una reunión, aparece en cada flujo de asistencia que pregunta "¿qué reunión?" — asistencia individual, asistencia masiva y la estación de check-in.

Cuándo una reunión necesita un espacio en el calendario

Si también quieres que una reunión aparezca en la cuadrícula del calendario — por ejemplo, una reunión de jóvenes de la que las familias necesitan un recordatorio visual — crea un evento recurrente con el mismo nombre. Es data redundante, pero te da ambos: el punto en el calendario para visibilidad y la plantilla de reunión para asistencia. Solo no mezcles los dos conceptualmente; los recordatorios en el evento no sabrán sobre la asistencia, y la asistencia en la reunión no sabrá sobre los recordatorios. Permanecen independientes.

Para el lado de calendario de ese emparejamiento, ve Crear un evento y Patrones recurrentes. Para el lado de asistencia, ve la visión general de asistencia.