Saltar a contenido

Guests

Un guest representa a una persona de la comunidad que puede asistir a eventos. La identidad del guest viene de Mazmo.

Identidad

Cada guest tiene:

  • mazmo_user_id: el ID numerico del usuario en Mazmo. Es el identificador primario en el sistema. Nunca cambia.
  • username: el handle del usuario en Mazmo (ej: @cindydark). Es constante.
  • displayname: el nombre que el usuario elige mostrar. Cambia frecuentemente y no se usa como identificador.

displayname vs username

El displayname es libre y puede cambiar en cualquier momento. Para identificar a una persona, siempre usar username o mazmo_user_id.

De donde vienen los guests

Hay dos formas de que un guest entre al sistema:

1. Sync automatico desde Mazmo

El flujo mas comun. Al hacer sync de un meetup, el sistema trae todos los RSVPs y crea automaticamente los guests que no existian. Ver Sync desde Mazmo.

2. Creacion manual

Un staff o admin puede crear un guest buscandolo por su @username en Mazmo. El sistema consulta la API de Mazmo, obtiene el mazmo_user_id y los datos del perfil, y lo agrega al sistema local.

Esto se usa cuando alguien llega al evento pero no aparece en la lista (aun no se hizo sync, o el guest no tiene RSVP en Mazmo y se lo va a agregar como walk-in).

Lifecycle de un guest

No existe en el sistema
    |
    v (sync o creacion manual)
    |
Existe en el sistema (sin RSVP en el meetup actual)
    |
    v (sync trae su RSVP, o se agrega como walk-in)
    |
Tiene RSVP en el meetup (has_arrived = false)
    |
    v (check-in en la puerta)
    |
Checked in (has_arrived = true, arrival_order asignado)

Un guest puede ser baneado en cualquier momento de su lifecycle. Ver Bans.

Datos inmutables

Una vez creado, el mazmo_user_id y el username de un guest nunca cambian en el sistema. Si el usuario cambia su username en Mazmo, la proxima sync puede actualizar el dato local, pero el mazmo_user_id sigue siendo el mismo.

La razon por la que se usa mazmo_user_id como clave primaria es que permite hacer upserts idempotentes: si el mismo guest aparece en multiples syncs, siempre se identifica como la misma persona.

Guests globales

Los guests son una entidad global del sistema: existen independientemente de los meetups y organizaciones. El mismo guest puede tener RSVPs en multiples meetups de distintas orgs.

Los bans son por organizacion: si alguien esta baneado en "Alter Buenos Aires", puede seguir asistiendo a eventos de "Club Vanta". Cada org gestiona su propia lista de bans. Ver Bans.