How to preview an optimisation solution
Compare optimiser-generated table dispositions for a service occurrence and preload one option into the schedule as draft table changes before saving anything real.
In this article
This guide covers the review step before a service manager commits table changes. In the GB demo, use Harbor Demo Group, Harbor Soho and `BOOKING_SOLUTIONS_OCCURRENCE_ID=b3e3a510-ac98-436e-8332-5767fcd4b1ce` for the Soho lunch service.
The action ends in a local draft. The selected solution changes what the operator sees in `Cronograma`, but real table assignments only change after the operator chooses `Guardar`.
Before you start
- Open the reservation occurrence detail at `/:orgId/:locationId/reservations/:occurrenceId` for Harbor Soho or use the GB demo deep link based on `BOOKING_SOLUTIONS_OCCURRENCE_ID`.
- The occurrence is a `service` occurrence for the current location and has resolved `layout_id` and `optimization_config_id` values.
- The location has layout tables available so the schedule can display proposed table assignments.
- The operator can see `Configuraciones`, which requires `reservation:manage` in this screen.
- The backend can run optimisation for the occurrence or reuse a fresh cached run, and automatic reservation use is allowed.
- For capture production, use the GB documentation runtime and stop before any save action.
Instructions
- 1.
Open the Soho lunch service occurrence
Open Harbor Soho's reservation occurrence detail. The screen loads the occurrence, reservations, current assignments, layout and optimisation configuration before the action can be used.
- 2.
Open proposed dispositions
Select `Configuraciones`, then choose `Disposiciones propuestas`. The app requests an optimisation run, using a fresh run when the service is manual, the cache is not fresh or no previous run exists.
- 3.
Compare the alternatives
In the `Disposiciones propuestas` modal, review each solution by label, `Score`, objective value, split usage and reservation-to-table assignments.
- 4.
Preload the selected solution
Choose the preferred alternative and press `Precargar en cronograma`. The modal closes, the screen moves to `Cronograma` and the board loads the proposed `table_ids` as temporary draft assignments.
- 5.
Inspect the draft schedule
Review the schedule while the floating footer shows `Disposición aplicada: {{label}}`. The operator can continue reviewing with `Guardar` and `Revertir cambios` available.
- 6.
Save or revert
Choose `Guardar` to persist the draft table assignments through the normal reservation table update path, or `Revertir cambios` to clear the local draft without changing backend assignments.
- 7.
Resolve draft guard prompts
If the operator starts another guarded action while temporary changes are active, use `Aplicar cambios`, `No aplicar` or `Cancelar` depending on whether the draft should be saved, discarded or kept for review.
Validations and limits
- The visible menu entry is available in this screen only to users with `reservation:manage`.
- The backend also requires an optimisation permission path and automatic reservation use for the occurrence.
- If the service has no optimisation configuration, the app shows an informational toast and does not call the backend.
- If the optimiser returns no solutions, the app shows `No se han encontrado soluciones aplicables para este servicio` and keeps the current page open.
- `Precargar en cronograma` is disabled until a solution is selected.
- The preload applies only `reservation_id` and `table_ids`; optimiser timing fields are not loaded into the schedule draft.
- Unknown reservations, unknown tables and assignments matching the current state are ignored when the draft board loads.
- Saving uses the normal per-reservation table assignment update, not the optimisation run apply endpoint.
- Waitlist reservations cannot receive table assignments through this save path, and in waiting-list mode saving from the inspected board state is not wired.
Expected result
The operator can compare optimiser recommendations, load one disposition into the schedule for inspection and decide whether to save or revert, with backend table assignments unchanged until `Guardar` is used.