|
@@ -16,6 +16,9 @@ uv sync --group dev
|
|
|
|
|
|
|
|
# Activate git hooks
|
|
# Activate git hooks
|
|
|
git config core.hooksPath .githooks
|
|
git config core.hooksPath .githooks
|
|
|
|
|
+
|
|
|
|
|
+# Build the Vue frontend (required before running room-api locally)
|
|
|
|
|
+cd room_cal/vue && npm ci && npm run build
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
---
|
|
---
|
|
@@ -94,19 +97,13 @@ The `api` mode requires `api_url` to be set in your `config.json`:
|
|
|
}
|
|
}
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-### Booking.com chat 2FA (`booking-2fa`)
|
|
|
|
|
-
|
|
|
|
|
-Booking.com requires a separate SMS 2FA challenge before the messaging API will accept outgoing messages. This is distinct from the main login session and must be triggered separately:
|
|
|
|
|
|
|
+### Booking.com chat 2FA
|
|
|
|
|
|
|
|
-```bash
|
|
|
|
|
-uv run booking-2fa
|
|
|
|
|
-```
|
|
|
|
|
|
|
+Booking.com requires an SMS 2FA challenge before the messaging API will accept outgoing messages. This step is handled automatically as part of every `refresh-creds` run — no separate command is needed.
|
|
|
|
|
|
|
|
-The script navigates to the messaging inbox, triggers the SMS challenge, and completes it automatically. It requires:
|
|
|
|
|
-- A valid Booking.com login session (run `refresh-creds` first)
|
|
|
|
|
-- An SMS gateway configured to forward incoming codes to `POST /sms/code` on the running room-api
|
|
|
|
|
|
|
+If the SMS challenge is triggered, the script polls `$ROOM_CAL_DATA_HOME/sms_code.txt` for the code. An SMS gateway configured to POST incoming codes to `POST /sms/code` on the running room-api will supply this automatically.
|
|
|
|
|
|
|
|
-`booking-2fa` only needs to be re-run when the messaging session expires — it is not part of the normal `refresh-creds` flow.
|
|
|
|
|
|
|
+Set `SKIP_CHAT_2FA=1` to bypass the messaging step during a refresh when you know the messaging session is still valid.
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
@@ -121,7 +118,7 @@ The web calendar provides a month view of all pricing and availability data. Key
|
|
|
- **Per-month sync controls** — bulk push or fetch prices and closed status for the entire visible month; a Fill button creates default local prices for any missing dates
|
|
- **Per-month sync controls** — bulk push or fetch prices and closed status for the entire visible month; a Fill button creates default local prices for any missing dates
|
|
|
- **iCal feed blocks** — external feed closures (e.g. a fire safety calendar) are shown and can be fetched per day
|
|
- **iCal feed blocks** — external feed closures (e.g. a fire safety calendar) are shown and can be fetched per day
|
|
|
- **Rule discounts** — pipeline-generated discounts are shown alongside manual discounts; mismatches between the rule output and what's on the calendar are surfaced
|
|
- **Rule discounts** — pipeline-generated discounts are shown alongside manual discounts; mismatches between the rule output and what's on the calendar are surfaced
|
|
|
-- **Chat panel** — select a reservation to open a message thread; shows guest conversation history and a send field; send is disabled for platforms that require additional auth (e.g. Booking.com until `booking-2fa` is run)
|
|
|
|
|
|
|
+- **Chat panel** — select a reservation to open a message thread; shows guest conversation history and a send field
|
|
|
- **Health indicator** — a header button polls `GET /health` and shows green/amber/red based on CalDAV connectivity and service credential status
|
|
- **Health indicator** — a header button polls `GET /health` and shows green/amber/red based on CalDAV connectivity and service credential status
|
|
|
|
|
|
|
|
---
|
|
---
|