Commit graph

11 commits

Author SHA1 Message Date
5f3e52d8a6 Debug: expose full raw booking in debug-room; fix guest name extraction
- debug-room now returns full raw NewBook booking objects so all
  field names are visible for diagnosis
- guest_name extraction also tries guests[0].firstname+lastname
  (original PHP plugin pattern), not just guests[0].guest_name

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-04 13:24:24 +00:00
d0e80c2484 Fix settings URL path: include /settings prefix
SETTINGS_URL is the base host only; routes are prefixed /settings/api.
Was calling /api/internal/... which returned nothing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-04 13:21:57 +00:00
536bcd3340 Fix 500: fetch category order from settings service, not direct DB query
global_config lives in settings_db, not room_planner_db. Replace the
broken cross-DB pool query with an HTTP call to the new internal
settings endpoint. Falls back to NewBook order gracefully if settings
service is unavailable or rooms haven't been synced yet.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-04 13:13:13 +00:00
fbe913c01c Room planner: semantic flow filters, forward arrow, padlock + guest name fixes
- Flow filter chips are now semantic: Departing = depart|B2B,
  Arriving = arrive|B2B, so B2B rooms appear in both chips. Adds
  missing Arriving filter.
- Forward → button added to date bar (right of datepicker)
- booking_locked normalised to real boolean — NewBook returns '0'/'1'
  strings which were all truthy, causing padlock on every room
- guest_name fallback: also try booking.guest_name (flat field) before
  account_for_name in case NewBook omits the guests[] array

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-04 13:07:55 +00:00
1ab864f4e3 Room planner: pull category sort order from settings global_config
Category ordering on the default view now uses the admin-configured
sort_order from global_config.newbook.rooms rather than the raw
NewBook site_category_order. Falls back to NewBook order if the
settings row is absent. Also overrides category_order on each room.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-04 12:53:20 +00:00
89ad3811da Room planner: fix bookings_list to use list_type=staying
The original WordPress plugin (class-hhdl-ajax.php line 409) uses
list_type='staying', which returns bookings whose stay *overlaps* the
date window (arrival <= period_to AND departure >= period_from).

Using list_type='all' was returning bookings filtered by booking-placed
date (or a flat dump), completely missing tomorrow-arriving bookings
that are needed for right-bracket display. Switching to 'staying' with
the original yesterday→tomorrow window gives 50 bookings vs 89 before,
and correctly includes adjacent-day arrivals.

Verified on dev: room 101 now shows confirmed right-bracket for July 5
arrival, room 102 now correctly classifies as back-to-back.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-04 12:18:26 +00:00
3c4bdd9a1c Room planner: fix category exclusion field name (category_id not site_category_id)
NewBook API returns category_id on site objects; exclusion check was using
the non-existent site_category_id field so excluded categories config never worked.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-04 12:09:16 +00:00
0d14473daf Room planner: add debug-room endpoint, fix next_status null check
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-04 11:54:32 +00:00
916dc50390 Room planner: fix next-bracket visibility and vacant room misdetection
Extend booking fetch window to day-after-tomorrow so tomorrow-arriving
bookings appear in nextBooking lookups (some NewBook regions exclude
arrivals exactly on period_to date, causing right brackets to not render).

Add booking_site_id fallback in site-ID matching so bookings are found
correctly even when NewBook returns booking_site_id instead of site_id in
the booking object (was causing some rooms to show as vacant).

Remove category debug logging (no longer needed).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-04 11:40:46 +00:00
663ef5d107 Room planner: flexible category field resolution + debug logging
Resolve NewBook category fields from site_category_id, category_id, or
category.id (whichever is present) so categories work regardless of which
naming convention the NewBook region uses. Log the first site's keys on
each /api/rooms request to confirm field names in docker compose logs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-04 11:13:33 +00:00
1e658b6a48 feat: add room-planner app — 3-day HK room view with NewBook integration
NewBook-connected daily housekeeping planner. Replaces the hotelhubmodule-housekeeping-dailylist
WordPress plugin. LXC 120 · 10.10.10.120:3080 · slug: room-planner.

- 3-day booking window (yesterday/today/tomorrow) fetched live from NewBook
- Task completion ticks back to NewBook; room status patches NewBook directly
- 23px border sliver CSS system for adjacent-day booking status
- 3-state filter cycling (off→inclusive→exclusive) for categories and flow types
- Stat filters for outstanding tasks and clean/dirty status
- Rolling 48h activity log with checkout/checkin/status/tasks events
- newbook_pings event bus for future NewBook poller integration
- Room modal with permission-gated guest/rate/notes, task checkboxes, status buttons
- Placeholder sections for future linen-count and routine-tasks modules
- Settings page: task type colours, twin/extra-bed detection, category exclusions
- Mobile-first layout (sidebar desktop, compact top bar mobile)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-03 13:07:00 +00:00