FreemiumProBusinessEnterprise

Resolución de conflictos

Cuándo surgen conflictos

Un conflicto de datos surge cuando el mismo registro se modifica desde diferentes fuentes antes de que los cambios se hayan sincronizado. Escenarios típicos:

Dos dispositivos offline

Dos miembros del equipo trabajan offline en diferentes dispositivos y modifican el mismo registro. Por ejemplo:

  • El operador en la entrada marca el check-in de un participante y añade el comentario «VIP»
  • El gerente en otro dispositivo marca el mismo check-in y añade el comentario «Asiento extra»
  • Al restablecerse la conexión, ambos cambios se envían al servidor

Offline + online

Un miembro del equipo trabaja offline, otro online:

  • El gerente en el ordenador (online) cambia el estado de registro
  • El operador en el lugar (offline) cambia el mismo estado
  • Al sincronizarse, el cambio offline entra en conflicto con el cambio online ya aplicado

Cuándo los conflictos son poco probables

En la práctica, los conflictos surgen raramente porque:

  • Los diferentes miembros del equipo suelen trabajar con diferentes participantes
  • El check-in es una operación unidireccional (marcar la llegada); un conflicto de check-in solo es posible con escaneo doble
  • Las operaciones de pago están protegidas por idempotency-key

Estrategia: last-writer-wins (Free, Pro)

En los planes Free y Pro se utiliza la estrategia automática last-writer-wins (gana el último):

Cómo funciona

  1. Durante la sincronización, el servidor compara las marcas de tiempo clientTs de los cambios en conflicto.
  2. El cambio con la marca de tiempo más reciente se guarda automáticamente.
  3. El cambio con la marca más antigua se sobrescribe.
  4. Ambos cambios se registran en el audit log (incluso el sobrescrito).

Ejemplo

HoraAcciónResultado
10:05Operador A (offline): check-in + comentario «VIP»Guardado localmente
10:07Operador B (offline): check-in + comentario «Estándar»Guardado localmente
10:15Operador A vuelve onlineCambio enviado
10:16Operador B vuelve onlineConflicto. Gana B (10:07 > 10:05). Comentario = «Estándar»

Ventajas y limitaciones

Ventajas:

  • Completamente automático -- no requiere intervención del usuario
  • No interrumpe el flujo de trabajo
  • Adecuado para la mayoría de escenarios (check-in, estados simples)

Limitaciones:

  • El cambio más antiguo se pierde sin notificación
  • No hay posibilidad de combinar dos cambios
  • Para datos críticos puede provocar pérdida de información

Estrategia: optimistic locking + merge UI (Business, Enterprise)

En los planes Business y Enterprise está disponible una estrategia interactiva de resolución de conflictos con interfaz visual.

Cómo funciona

  1. Durante la sincronización, el servidor detecta un conflicto (el registro fue modificado después del último estado conocido por el cliente).
  2. En lugar de sobrescribir automáticamente, el servidor devuelve ambas versiones.
  3. Al usuario se le muestra el merge UI -- una interfaz de comparación de versiones.
  4. El usuario elige qué versión conservar o combina los cambios manualmente.

Merge UI

La interfaz de resolución de conflictos muestra:

  • Columna izquierda: tu versión (cambio local)

    • Autor del cambio
    • Hora del cambio
    • Campos modificados con sus valores
  • Columna derecha: versión del servidor (cambio ajeno)

    • Autor del cambio
    • Hora del cambio
    • Campos modificados con sus valores
  • Acciones:

    • «Conservar mi versión» -- tu cambio sobrescribe el del servidor
    • «Aceptar la del servidor» -- se conserva la versión del servidor, tu cambio se descarta
    • «Combinar» -- eliges manualmente el valor para cada campo

Ejemplo

CampoTu versiónVersión del servidor
Check-in
ComentarioVIP, asiento A-12Estándar
EstadoConfirmadoConfirmado

Puedes aceptar el check-in de ambas versiones (coinciden), tomar tu comentario y el estado del servidor.

Optimistic locking

Bajo el capó se utiliza optimistic locking:

  • Cada registro tiene una versión (version counter)
  • Al enviar un cambio, el cliente indica en qué versión se basa
  • Si la versión en el servidor ha cambiado (alguien más actualizó el registro), el servidor devuelve un conflicto
  • El cliente muestra el merge UI

Notificaciones de conflictos

Cuando se detecta un conflicto:

Free / Pro: notificación toast «Conflicto de datos resuelto automáticamente» (informativa, sin acciones).

Business / Enterprise: notificación toast «Conflicto detectado. Se requiere tu decisión» con un botón para ir al merge UI. El conflicto bloquea la sincronización de los demás cambios hasta su resolución.

Recomendaciones

  • Distribuye las zonas de responsabilidad. Asigna a los miembros del equipo diferentes grupos de participantes o zonas de check-in para minimizar los conflictos.
  • Sincroniza con más frecuencia. Períodos cortos de trabajo offline reducen la probabilidad de conflictos.
  • Usa el merge UI para datos críticos. Si tu equipo trabaja activamente con los mismos registros, considera pasar a Business para acceder a la resolución interactiva de conflictos.

Preguntas frecuentes

¿Cuándo surgen conflictos?
Un conflicto surge cuando dos o más miembros del equipo modifican el mismo registro estando offline, o cuando un cambio se hace offline y otro online. Por ejemplo, dos personas marcan simultáneamente el check-in y añaden un comentario al mismo participante.
¿Qué significa last-writer-wins?
Last-writer-wins es una estrategia en la que se guarda automáticamente el último cambio en el tiempo. Si dos personas editaron el mismo registro, se conserva la versión con la marca de tiempo más reciente. El cambio anterior se sobrescribe.
¿Cómo funciona el merge UI en Business y Enterprise?
Cuando se detecta un conflicto, el sistema muestra ambas versiones del cambio lado a lado. Ves quién y cuándo realizó cada cambio, y eliges qué versión conservar, o las combinas manualmente.