Cómo activar el modo automático
Devuelve una ocurrencia de servicio en modo manual al flujo automático de reservas y lanza una optimización forzada para recalcular soluciones sin aplicar asignaciones de mesa.
En este artículo
Este flujo sirve cuando el responsable de sala ha intervenido una ocurrencia manualmente y quiere devolverla al comportamiento automático de reservas.
La acción cambia primero el modo de la ocurrencia y después crea una corrida forzada del optimizador. Recalcula soluciones, pero no aplica ninguna distribución propuesta ni reemplaza asignaciones de mesas.
Antes de empezar
- Trabajar en Grupo Marea Demo y Marea Gran Via, o en la organización y ubicación equivalentes del entorno real.
- Tener `reservation:manage` en la ubicación para ver `Configuraciones` y ejecutar la acción desde la UI.
- Tener `reservation-automatic:use` para activar el modo automático y lanzar la optimización.
- Abrir el detalle desde `/:orgId/:locationId/reservations/:occurrenceId` o con `antylogic://${ORG_ID}/${LOCATION_ID}/reservations/${BOOKING_MANUAL_OCCURRENCE_ID}?returnRoute=LocationReservationsCalendar&returnMode=week`.
- La ocurrencia debe estar en `booking_mode: manual`, con `acceptance_state: open`, no ser de un día pasado y tener `layout_id` y `optimization_config_id` válidos.
- El backend de optimización debe estar configurado para completar la llamada al optimizador.
Instrucciones
- 1.
Abrir la ocurrencia manual
Abre el detalle de la ocurrencia que quieres devolver al flujo automático. En el demo ES se usa Marea Gran Via, `BOOKING_MANUAL_OCCURRENCE_ID` y Javier Martin como reserva de referencia.
- 2.
Abrir Configuraciones
Pulsa `Configuraciones`. La opción `Pasar a modo automatico` sólo aparece cuando la ocurrencia está en manual, abierta, no es pasada y tiene configuración de optimización disponible.
- 3.
Seleccionar Pasar a modo automatico
Elige `Pasar a modo automatico`. La app envía `PUT /api/app/{orgId}/{locationId}/service-occurrences/{occurrenceId}/mode` con `{ "booking_mode": "automatic" }`.
- 4.
Esperar el recálculo
Después del cambio de modo, la app lanza `POST /api/app/{orgId}/{locationId}/service-occurrences/{occurrenceId}/optimization/runs` con `{ "force": true }`. Esta corrida usa el trigger `manual_request` y evita reutilizar una caché fresca previa.
- 5.
Confirmar el estado posterior
Revisa el estado tras el refresco. Si la corrida termina correctamente, la caché queda `fresh` y la pantalla puede mostrar `Automatico`; si el optimizador marca el servicio completo puede quedar `Completo`, y si hay lista de espera con huecos puede derivar a `Lista de espera`.
Validaciones y límites
- La pantalla de detalle puede consultarse con `reservation:view` o `reservation:manage`, pero esta acción exige gestión desde la UI.
- El frontend valida `occurrenceId`, `occurrence`, `canManage` y `hasOptimizationConfig` antes de mutar datos.
- La acción no se muestra en ocurrencias automáticas, en `waiting_list`, completadas, pasadas o sin configuración de optimización.
- El endpoint de modo sólo acepta `PATCH` o `PUT`; JSON inválido devuelve `400 payload invalido`.
- `booking_mode` sólo acepta `automatic` o `manual`; `waiting_list` no se puede elegir desde esta acción.
- El endpoint de optimización sólo acepta `POST`; el payload vacío es válido y `force` es opcional, aunque la UI envía `force: true`.
- El snapshot de optimización exige ocurrencia de tipo `service`, misma ubicación, `layout_id`, layout de la ubicación y `optimization_config_id` cargable.
- La corrida usa reservas activas, layout, configuración, mesas, combinaciones y asignaciones actuales; reservas `cancelled` y `waitlist` quedan fuera del payload.
- Si `Optimize` o `Completed` falla después de crear el run, el run queda `failed` y la ocurrencia puede volver a `manual` con `optimization_cache_status: failed`.
Resultado esperado
La ocurrencia vuelve al flujo automático o a un estado derivado por reglas internas, queda registrada una nueva corrida de optimización y la pantalla refresca ocurrencia, reservas y asignaciones sin aplicar automáticamente ninguna solución de mesas.