From eb3fc776186eaecb59283ea7fb9b01c4e4abd20e Mon Sep 17 00:00:00 2001 From: kislovdm Date: Thu, 6 Aug 2026 20:48:39 +0300 Subject: [PATCH] new --- README.md | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 85af699..e254481 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # TourMonitor — мониторинг туров Level.Travel -Ежедневно проверяет цены на туры (9 ночей, 2 взрослых + ребёнок 5 лет) из Москвы в отели -**Sunrise Tucana Resort** и **Posh Club By Sunrise Tucana Resort** (Макади Бей, Египет) -на окно с +60 дней от сегодня на 90 дней вперёд и отправляет в Telegram отчёт с топом -дешёвых дат и дельтой цен. +Ежедневно проверяет цены на туры из Москвы (2 взрослых + ребёнок 5 лет; количество ночей — +своё для каждого отеля) в отели **Sunrise Tucana Resort** и **Posh Club By Sunrise Tucana Resort** +(Макади Бей, Египет) и **Riu Sri Lanka** (Шри-Ланка) на окно с +30 дней от сегодня на +150 дней вперёд и отправляет в Telegram отчёт с топом дешёвых дат и дельтой цен. Работает напрямую с публичным веб-API level.travel (подпись запросов и расшифровка ответов воспроизведены с JS-бандла сайта), без партнёрского токена. @@ -16,20 +16,24 @@ ## Отчёт в Telegram ``` -📊 Мониторинг туров · 9 ночей, 2+1 чел, ребёнок 5 лет -Заезды: 06.08–03.11 +📊 Мониторинг туров · 9 ночей, 2+1 чел, ребёнок 5 лет +Заезды: 05.09–01.02 -🏝 Sunrise Tucana Resort -📅 20.08 — 418 000 ₽ 🔻 −12% (было 475 447 ₽) - 🍽 AI · Полулюкс · Level.Travel - 🔗 забронировать -📅 02.09 — 501 000 ₽ ✨ новая минималка +🏝 Sunrise Tucana Resort +🗓 календарь цен +📅 Октябрь + 📅 05.10 — 475 447 ₽ 🔻 −12% (было 540 000 ₽) + 🍽 AI · Полулюкс · Level.Travel + 📅 06.10 — 501 000 ₽ ✨ новая минималка +📅 Ноябрь + 📅 02.11 — 520 000 ₽ 🔺 +3% (было 505 000 ₽) ... ``` Секция показывается только если по отелю есть предложения. Каждый отель приходит **отдельным сообщением**; если сообщение длиннее лимита Telegram (4096 символов), оно -автоматически разбивается на несколько. +автоматически разбивается на несколько. В отчёте — до `PricesPerMonth` дешёвых дат +на каждый месяц, тип номера — ссылка на бронирование, рядом дельта к прошлому скану. ## Как запустить @@ -41,8 +45,9 @@ dotnet run --project src/TourMonitor -- Monitor__RunOnStart=true \ --Telegram__BotToken=<токен> --Telegram__ChatId= ``` -- Дашборд Hangfire (журнал задач, кнопка «Run now»): http://localhost:5000/hangfire -- Календарь цен: http://localhost:5000/prices (список отелей → сетка дат с минимальной ценой) +- Дашборд Hangfire (журнал задач, кнопка «Run now»): http://localhost:5199/hangfire +- Календарь цен: http://localhost:5199/prices (список отелей → сетка дат с ценой из + последнего скана, диапазоном минимальной цены по датам сканирования и дельтой) - Ежедневный скан по умолчанию в 09:15 по Москве (`Schedule:Cron`, `Schedule:TimeZoneId`) - База SQLite: `Data/tour_monitor.db` (история цен + ежедневные минимумы) @@ -59,7 +64,7 @@ dotnet run --project src/TourMonitor -- Monitor__RunOnStart=true \ | `Monitor:DateRangeDays` | 150 | | `Monitor:StartOffsetDays` | 30 (окно начинается с +30 дней от сегодня) | | `Monitor:PricesPerMonth` | 3 (сколько дешёвых дат показывать в отчёте для каждого месяца) | -| `Monitor:CalendarUrlBase` | пусто (ссылка на календарь цен в отчёте; `http://192.168.1.6:8084` на хосте) | +| `Monitor:CalendarUrlBase` | `http://192.168.1.6:8084` (ссылка на календарь цен в отчёте) | | `Monitor:RunOnStart` | false | | `Monitor:MaxParallelDates` | 5 (даты сканируются параллельно) | | `Camoufox:Version` | `v152.0.4-beta.28` | @@ -71,6 +76,9 @@ dotnet run --project src/TourMonitor -- Monitor__RunOnStart=true \ Ключи API и расшифровки (`LevelTravel:ApiKey`, `LevelTravel:SecretBoxKeys`) — из открытого JS-бандла сайта; менять не нужно. +У каждого отеля (`Monitor:Hotels`) свои направление и ночи: `ToCity`, `ToCountry`, `Nights` +(например, Riu Sri Lanka — `"ToCity": "Sri Lanka", "ToCountry": "LK", "Nights": 9`). + ## Docker ```bash @@ -101,6 +109,6 @@ LT_LIVE_TESTS=1 dotnet test # + живые проверки против a - `src/TourMonitor/Camoufox/` — установка Camoufox (скачивание из релизов), сессия браузера и fetch-транспорт через Playwright - `src/TourMonitor/Storage/PriceStore.cs` — SQLite: история цен, ежедневные минимумы -- `src/TourMonitor/Jobs/DailyScanJob.cs` — сам скан: 90 дат × отели из конфига, параллельно +- `src/TourMonitor/Jobs/DailyScanJob.cs` — сам скан: 150 дат × отели из конфига, параллельно - `src/TourMonitor/Notifications/` — Telegram и сборка отчёта - `tests/TourMonitor.Tests/` — юнит- и интеграционные тесты