From ec13dac0eb6c4c98aa4ccadc70e56f2f4f81648b Mon Sep 17 00:00:00 2001 From: OpenClaw Assistant Date: Mon, 23 Feb 2026 13:00:38 +0000 Subject: [PATCH] Update booking workflow: availability-first, hold-only without DB writes --- USER.md | 1 + skills/paradiz/SKILL.md | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/USER.md b/USER.md index 4fdcd97..e02695d 100644 --- a/USER.md +++ b/USER.md @@ -22,6 +22,7 @@ _Learn about the person you're helping. Update this as you go._ - Дети до 1 года в количестве гостей указываются, но в оплату не включаются. - Предоплату в бронь вносить только после явного подтверждения от Виталия. Без подтверждения предоплата = 0 и статус «Предварительное». - При внесении брони напрямую в БД повторять ручной сценарий полностью: hotel_booking + hotel_liver_booking_link + main_log в testDB.sqlite и log в sync.sqlite, с обязательным бэкапом перед изменением. + - Рабочая логика бронирования: сначала проверка занятости дат/номеров в БД, затем подтверждение брони. При фиксации на 24 часа (неоплаченной) в БД и текстовые журналы бронь не вносить — только hold. Если даты заняты, предлагать ближайшие свободные даты или другие свободные номера. ## Context diff --git a/skills/paradiz/SKILL.md b/skills/paradiz/SKILL.md index 8944caf..2994465 100644 --- a/skills/paradiz/SKILL.md +++ b/skills/paradiz/SKILL.md @@ -14,7 +14,11 @@ description: Отвечать клиентам в VK по стоимости о - число гостей - при наличии: тип номера - важно: в «Парадиз» питание не предоставляется, не предлагать тарифы с питанием -2. Посчитать стоимость через скрипт: +2. Перед подтверждением брони обязательно проверить занятость в БД: + - не допускать бронирование одного и того же номера на пересекающиеся даты; + - если даты заняты, предложить ближайшие свободные даты; + - если по датам нет мест в выбранном номере, предложить другие номера со свободными датами. +3. После успешной проверки посчитать стоимость через скрипт: ```bash python3 {baseDir}/scripts/calc_quote.py \ @@ -109,7 +113,14 @@ python3 {baseDir}/scripts/calc_quote.py \ Комментарий клиента — обязательное поле. Если комментарий есть, сохранять его в журнал брони (`bookings.txt` и `bookings.jsonl`) и в Telegram-уведомление, не терять. -Если клиент просит «подержать номер», создавай запись удержания (максимум 24 часа) в отдельном файле `{baseDir}/data/holds.jsonl`: +Если клиент просит «подержать номер», создавай запись удержания (максимум 24 часа) в отдельном файле `{baseDir}/data/holds.jsonl`. + +Важно для hold (фиксации на сутки): +- это предварительная неоплаченная фиксация; +- в `testDB.sqlite` и `sync.sqlite` запись НЕ вносить; +- в `bookings.txt` и `bookings.jsonl` запись НЕ вносить. + +Команда для hold: ```bash python3 {baseDir}/scripts/manage_holds.py add \ @@ -152,6 +163,13 @@ python3 {baseDir}/scripts/manage_holds.py cleanup `Спасибо за бронирование 🤍 Ваша бронь подтверждена.` `За 3–5 дней до заезда я напомню вам о деталях.` +После подтверждённой брони (не hold) обязательно выполнить полный цикл: +1) внести запись в БД, +2) внести запись в текстовые журналы, +3) сформировать файл брони, +4) отправить файл гостю в VK, +5) отправить уведомление в Telegram. + После подтверждения/фиксации брони обязательно сохранить запись, отправить уведомление в Telegram и отправить гостю в VK файл брони: ```bash