⏱️ 7 minutos de lecturaÚltima actualización: Enero 2025

Control de Sesiones de Empleados

Registro automático de entrada y salida de empleados con control de horas trabajadas.

💡 Antes de comenzar: Las sesiones se crean automáticamente cuando un empleado inicia sesión con su PIN y se cierran cuando hace logout. El sistema registra todas las sesiones para control de asistencia y horas trabajadas.

¿Qué es una Sesión?

Una sesión de trabajo es el registro de un turno de un empleado que incluye:

  • Check-in: Fecha y hora de entrada
  • Check-out: Fecha y hora de salida
  • Duración: Tiempo total trabajado (en minutos)
  • Terminal: Desde dónde trabajó (POS, Kitchen, etc.)
  • Estadísticas: Órdenes procesadas, ventas realizadas
  • Estado: Activa, completada o abortada

Ciclo de Vida de una Sesión

  1. Inicio de Sesión (Check-in):
    • Empleado ingresa PIN
    • Sistema crea SessionLog con status="active"
    • Registra checkIn = ahora
    • Guarda terminal y dirección IP
  2. Trabajo Activo:
    • Empleado procesa órdenes, cobra, prepara comida, etc.
    • El sistema actualiza estadísticas en tiempo real
    • La sesión permanece activa
  3. Fin de Sesión (Check-out):
    • Empleado hace logout
    • Sistema registra checkOut = ahora
    • Calcula duration = (checkOut - checkIn) / 60000
    • Cambia status="completed"

Check-in Automático

El check-in es completamente automático:

  1. Empleado va a la pantalla de login (POS, Kitchen, Waiter)
  2. Ingresa su PIN de 4 dígitos
  3. Si el PIN es válido:
    • Se crea una nueva sesión automáticamente
    • NO necesita hacer un check-in manual
    • Es redirigido a su interfaz de trabajo

✅ Sin pasos extra: A diferencia de otros sistemas, no hay un botón de "Marcar entrada" separado. El login Y el check-in son la misma acción.

Check-out Manual

Desde el POS/Kitchen/Waiter

  1. Haz clic en tu nombre o avatar en la esquina superior
  2. Haz clic en "Cerrar Sesión" o "Logout"
  3. Confirma la acción
  4. La sesión se marca como completada
  5. Se calcula y guarda la duración

⚠️ Recuerda hacer logout: Si cierras el navegador sin hacer logout, la sesión permanece activa hasta el cierre automático (8 horas).

Auto-Cierre de Sesiones

Para evitar sesiones infinitas, el sistema tiene cierre automático:

Cierre a las 8 Horas

  • Cuándo: Una sesión lleva 8 horas activa
  • Acción: El sistema automáticamente:
    • Establece checkOut = checkIn + 8 horas
    • duration = 480 minutos (8 horas)
    • status = "completed"
    • autoClosedAt8Hours = true
  • Notificación: Se envía evento Socket.io al empleado

Sesiones de Overtime (Horas Extra)

Si un empleado necesita trabajar más de 8 horas:

  1. La sesión de 8 horas se cierra automáticamente
  2. El empleado puede solicitar overtime (próximamente)
  3. Se crea una nueva sesión vinculada con isOvertimeSession=true
  4. Esta sesión se auto-cierra cuando termina el overtime solicitado

💡 Cron Job: El sistema ejecuta un trabajo automático cada 5 minutos que verifica sesiones que deben cerrarse. Esto garantiza que ninguna sesión quede abierta indefinidamente.

Información de la Sesión

CampoDescripción
checkInFecha y hora de entrada
checkOutFecha y hora de salida (null si activa)
durationTiempo trabajado en minutos
terminalDesde dónde trabajó (ej: "POS")
ipAddressDirección IP del dispositivo
stats.ordersProcessedCantidad de órdenes procesadas
stats.totalSalesTotal vendido en la sesión
statusactive, completed, aborted
notesNotas del administrador (opcional)

Cerrar Sesión Manualmente (Admin)

Como administrador, puedes cerrar la sesión activa de un empleado:

  1. Ve a /[slug]/admin/employees/sessions
  2. Busca la sesión activa del empleado
  3. Haz clic en "Cerrar Sesión"
  4. Opcionalmente, agrega notas explicando por qué
  5. Confirma

⚠️ Úsalo con cuidado: Cerrar la sesión de un empleado lo desconecta inmediatamente. Solo hazlo si el empleado olvidó hacer logout o hay un problema técnico.

Estados de Sesiones

🟢 Active

El empleado está trabajando actualmente. checkOut es null.

🔵 Completed

La sesión finalizó normalmente. Tiene checkOut y duration calculados.

🔴 Aborted

La sesión fue cancelada o tuvo un problema. Raramente usado.

Usos del Registro de Sesiones

  • Control de asistencia: Quién trabajó cuándo
  • Cálculo de nómina: Horas totales trabajadas por período
  • Productividad: Órdenes procesadas por hora
  • Auditoría: Quién estaba trabajando cuando ocurrió X
  • Reportes: Horas extra, ausentismo, puntualidad

Buenas Prácticas

✅ Siempre hacer logout: Instruye a los empleados a cerrar sesión al terminar su turno, no solo cerrar el navegador.

✅ Revisa sesiones diarias: Al final del día, verifica que no haya sesiones activas olvidadas.

✅ Explica el sistema: Capacita a los empleados sobre qué es una sesión y por qué es importante registrarla correctamente.

✅ Monitorea horas extra: Si las sesiones de 8 horas son frecuentes, analiza si necesitas más personal.

Solución de Problemas

La sesión se cerró sola a las 8 horas

Esto es normal. El sistema cierra automáticamente sesiones después de 8 horas para evitar turnos infinitos. Si el empleado necesitaba seguir trabajando, puede iniciar sesión nuevamente creando una nueva sesión.

El empleado olvidó hacer checkout ayer

Si la sesión tiene más de 8 horas, ya se cerró automáticamente. Si tiene menos, puedes cerrarla manualmente desde el panel de administración. Ve a Sesiones, encuentra la sesión activa y ciérrala indicando el horario real de salida en las notas.

No aparecen las estadísticas de la sesión

Las estadísticas (órdenes procesadas, ventas totales) se actualizan en tiempo real durante la sesión. Si aparecen en 0, puede ser que el empleado no haya procesado ninguna orden durante esa sesión (ej: solo estuvo en modo de espera).

¿Puedo editar el check-in o check-out de una sesión?

Actualmente no se pueden editar sesiones por temas de auditoría. Si un empleado registró mal su entrada/salida, puedes agregar notas a la sesión explicando la corrección, pero los timestamps originales se mantienen. En futuras versiones se agregará la capacidad de ajustar con justificación.

El empleado tiene 2 sesiones activas al mismo tiempo

Esto no debería pasar. El sistema verifica antes de crear una nueva sesión si ya hay una activa. Si detectas este caso, cierra manualmente la sesión más antigua desde el panel de administración. Puede haber ocurrido por un error de red durante el login.

¿Te fue útil este artículo?

Centro de ayuda: guías y tutoriales | Nandu