客房

Readiness and the check-in gate

Housekeeping decides whether a room is ready; the front desk acts on it live, and a room that is not ready stops the check-in.

最后更新

Who this is for: Front Desk, Manager, Owner — changing a status requires housekeeping.status.update; acting on one at the counter requires frontdesk.checkin. Where: Housekeeping → Room Status Board, and Front Desk → Arrivals & Check-in

A room is ready when Housekeeping has marked it Clean or Inspected. With the house policy check-in requires a ready room switched on, that single fact decides whether the desk can put a guest into it — and the desk learns about a change on the floor as it happens, not when someone next reloads the page.

Why it exists#

The alternative is a phone call. Without a readiness fact both modules share, the desk either guesses, or rings the floor for every arrival, or hands over a key to a room that is still being turned.

It is also why the gate sits on check-in rather than on assignment. Putting a stay on a dirty room is normal and always allowed — it is how you plan the day at nine in the morning for rooms that will be clean by three. What waits is the moment the guest actually takes the key.

What it means for you#

On the floor. Moving a room from Dirty to Clean makes it ready. Inspected is ready too — the room status board covers why the two are equivalent as far as the gate is concerned.

At the desk. An arrival whose room is not ready reads Assigned rather than Ready, and the guided check-in refuses with the reason stated inline. There are two ways past it: assign a different ready room, or tick the explicit override in the flow. The override is per action and is recorded — it does not change the policy for the next arrival.

Between the two, live. Each desk session holds an open connection to the property over server-sent events. When a status changes on the board, the arrivals list, the room rack and the board itself re-read themselves — no refresh, no polling, no stale readiness badge. The stream carries no data of its own; it is a nudge to re-read. That is why a dropped connection costs nothing: the client reconnects and re-reads once to cover the gap.

Listening needs frontdesk.reservation.read, so the live update is scoped exactly as tightly as the data behind it.

重要

The gate reads the current status, not the status the page was drawn with. Marking an arrival's room dirty while a colleague has the check-in dialog already open will stop their check-in when they submit it.

Where the policy is set#

Check-in requires a ready room is a per-property setting under Settings → Hotel, which requires hotel.settings.manage — an Owner-level grant under the default bundles. With it switched off a dirty room checks in with no refusal and no override, and readiness becomes information rather than a gate.

Decide it before your first arrival rather than during one: the answer changes what your desk staff have to do at the counter.

Where to see it#