Antylogic
Probar demoAcceso app

399 guías operativas

Secciones de Docs
DocsEquipo
Dispositivo

Cómo guardar un servicio con roles y empleados

Crea o actualiza un servicio de calendario junto con sus roles requeridos y empleados asignados. En Marea Gran Via, el flujo permite mantener el Servicio de comidas Gran Via guardando evento, requisitos y horarios de personal como una única operación.

En este artículo

El formulario de servicio reúne la información del servicio, los roles requeridos, los empleados asignados y la recurrencia. Al guardar, Antylogic envía todo como un bundle para que la planificación quede sincronizada.

Este flujo es útil para responsables de sala y operaciones que necesitan ajustar cobertura antes de un servicio: mínimos por rol, recomendados y horarios de empleados se revisan desde el mismo punto operativo.

Antes de empezar

  • Tener una organización y ubicación activas, por ejemplo Grupo Marea Demo y Marea Gran Via.
  • Contar con `service:view` y `staff-schedule:view` para abrir un servicio existente y cargar su bundle.
  • Contar con `service:manage` para guardar cambios en el servicio.
  • Contar con `staff-schedule:manage` cuando el bundle contiene o sincroniza horarios de personal.
  • Para editar, abrir un `calendar_event` de tipo `service` perteneciente a la ubicación activa.
  • Para un servicio público, disponer de plano y carta, por ejemplo Plano demo 1 y Carta Gran Via.
  • Para añadir cobertura, tener roles como Sala, Cocina y Barra y empleados como Marta Ruiz, Lucia Navarro, Diego Serrano y Alba Castro.

Instrucciones

  1. 1.

    Abrir el servicio

    Entra en el calendario de servicios y abre un servicio existente o crea uno nuevo. Para editar una ocurrencia concreta de un servicio recurrente, la ruta incluye `occurrenceStart`.

  2. 2.

    Completar la información

    En la pestaña Info, revisa título, inicio, fin y visibilidad. Si el servicio es público, selecciona plano y carta; si es interno, esos recursos no son obligatorios.

  3. 3.

    Definir roles requeridos

    En Roles requeridos, añade una fila por rol que deba cubrir el servicio. Cada rol tiene mínimo y recomendado; la interfaz evita repetir roles.

  4. 4.

    Asignar empleados

    En Empleados, añade horarios seleccionando empleado, rol y modo horario. El modo relativo guarda offsets respecto al inicio y fin del servicio; el modo absoluto usa fechas propias.

  5. 5.

    Guardar el bundle

    Pulsa Guardar. La app valida el borrador y envía `event`, `staff_requirements` y `staff_schedules` en una única operación: creación con `POST /api/app/{orgId}/{locationId}/calendar-events/service-bundle` o edición directa con `PUT /api/app/{orgId}/{locationId}/calendar-events/{eventId}/service-bundle`.

  6. 6.

    Elegir alcance si es recurrente

    Si el servicio pertenece a una recurrencia, el guardado abre el modal de alcance. El operador elige si aplicar el cambio solo a esta ocurrencia o a los servicios futuros mediante el flujo de split.

  7. 7.

    Revisar el resultado

    Tras guardar, la UI muestra éxito, enseña `operation_warnings` si llegan y vuelve al calendario de origen con la planificación refrescada.

Validaciones y límites

  • El formulario solo aplica a eventos con `kind=service`; no se puede cambiar el tipo del evento.
  • No se pueden editar servicios ya iniciados; la UI bloquea el formulario y backend puede devolver `error.calendar.service.started_locked`.
  • `starts_at` y `ends_at` deben existir y `starts_at < ends_at`.
  • La visibilidad solo puede ser `public` o `internal`; para `public`, backend requiere `layout_id` y `catalog_id` como UUID válidos.
  • Cada requisito necesita `staff_role_id`; backend rechaza roles duplicados con `rol duplicado`.
  • La UI exige `min_count` y `recommended_count` enteros de al menos 1 antes de construir el payload.
  • Cada horario necesita `staff_id` y `payload.role_id`; `payload.parent_event_id` debe apuntar al servicio padre.
  • `time_mode` solo acepta `absolute` o `relative`; en modo relativo los offsets deben ser enteros y en modo absoluto no se aceptan offsets.
  • Al eliminar una fila del formulario y guardar, la sincronización borra el requisito u horario omitido.
  • Backend puede devolver `problems` si la cobertura queda por debajo del mínimo y `warnings` si queda por debajo del recomendado.

Resultado esperado

El servicio queda guardado como una unidad transaccional: evento, roles requeridos y horarios de empleados se actualizan juntos, con avisos de cobertura visibles para el operador y calendario refrescado al volver.

Artículos relacionados