Update booking workflow: availability-first, hold-only without DB writes
This commit is contained in:
1
USER.md
1
USER.md
@@ -22,6 +22,7 @@ _Learn about the person you're helping. Update this as you go._
|
|||||||
- Дети до 1 года в количестве гостей указываются, но в оплату не включаются.
|
- Дети до 1 года в количестве гостей указываются, но в оплату не включаются.
|
||||||
- Предоплату в бронь вносить только после явного подтверждения от Виталия. Без подтверждения предоплата = 0 и статус «Предварительное».
|
- Предоплату в бронь вносить только после явного подтверждения от Виталия. Без подтверждения предоплата = 0 и статус «Предварительное».
|
||||||
- При внесении брони напрямую в БД повторять ручной сценарий полностью: hotel_booking + hotel_liver_booking_link + main_log в testDB.sqlite и log в sync.sqlite, с обязательным бэкапом перед изменением.
|
- При внесении брони напрямую в БД повторять ручной сценарий полностью: hotel_booking + hotel_liver_booking_link + main_log в testDB.sqlite и log в sync.sqlite, с обязательным бэкапом перед изменением.
|
||||||
|
- Рабочая логика бронирования: сначала проверка занятости дат/номеров в БД, затем подтверждение брони. При фиксации на 24 часа (неоплаченной) в БД и текстовые журналы бронь не вносить — только hold. Если даты заняты, предлагать ближайшие свободные даты или другие свободные номера.
|
||||||
|
|
||||||
## Context
|
## Context
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,11 @@ description: Отвечать клиентам в VK по стоимости о
|
|||||||
- число гостей
|
- число гостей
|
||||||
- при наличии: тип номера
|
- при наличии: тип номера
|
||||||
- важно: в «Парадиз» питание не предоставляется, не предлагать тарифы с питанием
|
- важно: в «Парадиз» питание не предоставляется, не предлагать тарифы с питанием
|
||||||
2. Посчитать стоимость через скрипт:
|
2. Перед подтверждением брони обязательно проверить занятость в БД:
|
||||||
|
- не допускать бронирование одного и того же номера на пересекающиеся даты;
|
||||||
|
- если даты заняты, предложить ближайшие свободные даты;
|
||||||
|
- если по датам нет мест в выбранном номере, предложить другие номера со свободными датами.
|
||||||
|
3. После успешной проверки посчитать стоимость через скрипт:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python3 {baseDir}/scripts/calc_quote.py \
|
python3 {baseDir}/scripts/calc_quote.py \
|
||||||
@@ -109,7 +113,14 @@ python3 {baseDir}/scripts/calc_quote.py \
|
|||||||
|
|
||||||
Комментарий клиента — обязательное поле. Если комментарий есть, сохранять его в журнал брони (`bookings.txt` и `bookings.jsonl`) и в Telegram-уведомление, не терять.
|
Комментарий клиента — обязательное поле. Если комментарий есть, сохранять его в журнал брони (`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
|
```bash
|
||||||
python3 {baseDir}/scripts/manage_holds.py add \
|
python3 {baseDir}/scripts/manage_holds.py add \
|
||||||
@@ -152,6 +163,13 @@ python3 {baseDir}/scripts/manage_holds.py cleanup
|
|||||||
`Спасибо за бронирование 🤍 Ваша бронь подтверждена.`
|
`Спасибо за бронирование 🤍 Ваша бронь подтверждена.`
|
||||||
`За 3–5 дней до заезда я напомню вам о деталях.`
|
`За 3–5 дней до заезда я напомню вам о деталях.`
|
||||||
|
|
||||||
|
После подтверждённой брони (не hold) обязательно выполнить полный цикл:
|
||||||
|
1) внести запись в БД,
|
||||||
|
2) внести запись в текстовые журналы,
|
||||||
|
3) сформировать файл брони,
|
||||||
|
4) отправить файл гостю в VK,
|
||||||
|
5) отправить уведомление в Telegram.
|
||||||
|
|
||||||
После подтверждения/фиксации брони обязательно сохранить запись, отправить уведомление в Telegram и отправить гостю в VK файл брони:
|
После подтверждения/фиксации брони обязательно сохранить запись, отправить уведомление в Telegram и отправить гостю в VK файл брони:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
Reference in New Issue
Block a user