← Все задачи

📊 Data Completeness Tracker — Bestonline

Живой статус: что выгружено из Tourvisor, что нет, где белые пятна
📅 Обновлено: 28.04.2026 14:00 МСК 🔄 98 519 отелей · 73/73 стран Tourvisor (100%)
Принцип: перед новой итерацией по bestonline — сверяемся с этой страницей. Чтобы не упустить: что есть, чего нет, где лимиты недокачки. Обновляется после каждого импорта.

📈 Общая сводка (на 28.04.2026 — финальное покрытие 73/73 стран)

98 519
Отелей в hotels.json
73 / 73
Стран Tourvisor (100%)
203
Регионов
269
Субрегионов
+12 488
Δ за 28.04 (T4 догон)

🟢 28.04.2026 — финальное покрытие 73/73 стран Tourvisor

86 031 → 98 519 hotels (+12 488 за день). Сегодня закрыли все T4 стратегические + догоны Бразилии/Австрии/Швейцарии + 11 ранее не качанных T4 (Абхазия, Беларусь, Великобритания, Венгрия, Германия, Кыргызстан, Норвегия, Польша, Словакия, Словения, Франция). Покрытие 73/73 = 100% Tourvisor.

🆕 28.04 батчи (+12 488 hotels, 11 уник стран): 🇫🇷 Франция 3 453 · 🇦🇹 Австрия 1 994 · 🇦🇿 Абхазия 1 336 · 🇩🇪 Германия 1 255 · 🇧🇷 Бразилия 734 · 🇭🇺 Венгрия 694 · 🇨🇭 Швейцария 538 · 🇬🇧 Великобритания 457 · 🇧🇾 Беларусь 330 · 🇰🇬 Кыргызстан 278 · 🇵🇱 Польша 246 · 🇦🇩 Андорра 216 · 🇳🇴 Норвегия 205 · 🇸🇮 Словения 204 · 🇸🇰 Словакия 196 · 🇯🇲 Ямайка 157 · 🇱🇧 Ливан 74 · 🇵🇦 Панама 49 · 🇦🇷 Аргентина 39 · 🇻🇪 Венесуэла 33

Топ-15 стран по объёму на 28.04:

🚀 27.04.2026 — прорыв после оплаты business тарифа + T4 batch 1

60 813 → 82 844 → 86 031 hotels (+25 218 за день). Платный тариф снял ограничения вчерашних потолков (Италия 7000→9870 — это один из самых ярких примеров). Вечером добавили 5 стратегических T4 стран.

🆕 T4 batch вечер (5 стран = 5 запросов, +516 hotels): 🇸🇦 Саудовская Аравия 269 (растёт спрос — отменили визу для РФ) · 🇳🇵 Непал 78 · 🇫🇯 Фиджи 75 · 🇲🇲 Мьянма 63 · 🇦🇼 Аруба 31. Лимит 115/120 — есть запас. Остальные T4 strategic докачаем завтра.

Топ-10 по приросту за день:

+ 11 других стран по 200-700 hotels каждая (Малайзия, Азербайджан, Албания, Япония, Израиль, Казахстан, Сингапур, Камбоджа, Армения, Сербия, Южная Корея)

✅ 28.04 — план выполнен: 73/73 стран

Все запланированные доборы T2/T3/T4 закрыты. Финал по hotels.json: 98 519 / 73 страны / 203 региона / 269 субрегионов. Остановка на этом числе — это «активный каталог Tourvisor», дальше потолок API (архивные отели не отдаются даже на платном).

⏭ Следующий шаг по данным: скачивание hotel details (`/hotels/{id}`) для AI rewrite описаний. Сейчас 452 уникальных details JSON в `meta/details/` + `meta/details_cp/`.

🔒 Реальные потолки (не пробить даже на платном тарифе)

Эти страны на платном тарифе тоже не отдают больше — это «активные» отели в системе, не ограничения тарифа:

Tourvisor каталог считает hotels которых уже нет в системе (архив). Для нас потолок ≈ 86 000 hotels вместо «88 901 в каталоге».

⚠️ База данных supabase.1008.ru — БД на состоянии 27.04, ждёт sync 98k delta

Phase 0 завершён 26.04. Re-sync 86k завершён 27.04 18:55 МСК (errors=0). На 28.04 hotels.json пополнен +12 488 hotels (98 519 итого), но эта дельта ещё не передана соседу-DevOps для sync.

86 499
Total URLs в БД (27.04)
+12 488
Δ ждёт sync (28.04)
98 519
В hotels.json локально
0
Errors / dead outbox

Дельта sync: +25 266 URLs, +25 218 hotels, +6 стран, +42 региона. 8 batch events в outbox (нормально, ждут consumer при публикации). Время ~3 мин на 86k через UPSERT + advisory_lock + bulk-mode. Подробности: /messages/2026-04-27-ayurtour-to-bestonline-resync-86k-done.md.

📚 4 урока по процедуре re-sync (от соседа-DevOps):
  1. pg_read_file запрещён для роли postgres в self-hosted Supabase — не использовать
  2. Рабочий способ: psql \set content `cat file.json` + :'content'::jsonb через docker exec
  3. Время на 86k ≈ 3 минуты (UPSERT + advisory_lock + bulk-mode)
  4. Долгий sync мониторим через pg_stat_activity по PID, не через nohup

Sync пайплайн стабилен: 8 багов закрыто 25-26.04 (resort_slug опциональный, slug 80→120, regex POSIX, sanitize backtick→' и др.). Готов к повторным запускам по делте +1-2k завтра.

✅ Tourvisor API — оплачен business тариф 27.04

Утром 27.04 был 403 (тестовый JWT закрылся). После оплаты — все ограничения сняты. Тариф: ~8 000 ₽/мес (5 000 Поиск + 3 000 Описания), оплачен на 1 месяц до ~27.05.2026.

Преимущества платного: убраны вчерашние потолки (Италия, Болгария, Грузия, Узбекистан и т.д. — все полностью открыты), доступ к hotel details endpoint для контента, отсутствие ограничений по квоте на день.

До D-day 15.05: 18 дней работы с API. После 27.05 — решение по продлению.

📅 Дневник импорта (22-25.04.2026)

🟦 22.04 — старт T2 + регионы

🟧 23.04 — застопорились на LIMIT=100

🟪 24.04 — оптимизация ×5

🟢 25.04 — три запуска, +32 505 за день

🟥 26.04 — последний reset (план)

⚫ 27.04 — JWT истекает

📊 Прогноз наполнения базы

ДатаОтелей% от каталогаСтатус
17.04~5 0006%Старт импорта
21.04~11 00013%T1+T2 попытка
22.04~18 00021%+T3 попытки
23.0421 40825%Застопорились на LIMIT=100
24.0428 30833%Старт оптимизации (LIMIT=500 + bygap)
25.04 день49 98958%T1 завершён 95%
25.04 вечер60 81377%⭐ +10 824 (bygap без Грузии). T1 потолок API найден
26.04 утро~70 00089%Последний reset → T3 (Испания/Италия/Болгария)
27.04⚠️ JWT истекает

Успеваем до истечения токена. Осталось 2 ночных reset окна квоты.

🌙 План финального запуска 26.04 03:00 МСК (последний reset)

Команда: python3 paginate-hotels.py bygap (tier-aware уже настроен)

🔴 Tier 1 — Ядро (10 стран)

ПриоритетСтраны (что осталось)Запросов+Отелей
🔴 T1 хвостикиТунис +103, Индия +615, Шри-Ланка +260, Китай +294, Таиланд +249~3+1 500
🟠 T2 (продолжение)Греция +1 046, Индонезия +3 488, Грузия +1 909, Черногория +1 320, Мексика +1 075~25+9 000
🟢 T2 продолжениеКипр, Танзания, Куба, Сейшелы, Доминикана, Иордания, Маврикий, Мальта~10+3 500
ИТОГО100/100 квоты100+~14 000
СтранаОтелиРегионыСубрегионы APIДетали (/hotels/{id})Полнота
Турция6250/625020 ✅64 ✅5/5 пилот
Мальдивы580/5811 ✅API: 0 (атоллы в details)5/5 пилот
ОАЭ1836/18395/5 пилот
Египет1837/185414 ✅11 ✅5/5 пилот
Таиланд8696/894597% ✓ 25.04 день5/5 пилот
ОАЭ100 ⚠7 ✅7 ✅5/5 пилот
Вьетнам4010/407998% ✓ 25.04 полдень5/5 пилот
Китай3671/396592% ✓ 25.04 день5/5 пилот
Шри-Ланка100 ⚠13 ✅14 ✅5/5 пилот
Тунис451/5547 ✅API: 05/5 пилот
Индия2731/33465 ✅29 ✅5/5 пилот
Шри-Ланка2901/31615/5 пилот
Китай3671/396592% ✓ 25.04 день5/5 пилот
Вьетнам4010/407998% ✓ 25.04 полдень5/5 пилот
Таиланд8696/894597% ✓ 25.04 день5/5 пилот

🟠 Tier 2 — Сильные ниши (13 стран)

СтранаОтелиРегионыСубрегионы APIДетали
Индонезия100 ⚠3 ✅15 ✅
Грузия100 ⚠14 ✅жду API
Доминикана100 ⚠5 ✅жду API
Куба100 ⚠10 ✅жду API
Греция100 ⚠26 ✅жду API
Кипр100 ⚠6 ✅жду API
Сейшелы100 ⚠4 ✅жду API
Маврикий100 ⚠1 ✅жду API
Мексика100 ⚠6 ✅жду API
Черногория100 ⚠11 ✅жду API
Танзания100 ⚠2 ✅жду API
Иордания100 ⚠4 ✅жду API
Мальта100 ⚠10 ✅жду API

🟢 Tier 3 — Средний приоритет (25 стран)

Каждая страна уже имеет минимум 100 отелей (page 1 импортирована 22.04). Пагинация до полного объёма — в 25.04-26.04 ночных запусках.

СтранаОтелиСтатус
Италия7000/9887🟢 71% · +6900 за 24.04 (рывок Италии)
Испания100/5902🔴 ждёт ночного запуска
Болгария100/2011🔴 ждёт
Черногория100/1420🔴 ждёт (Т2 → Т3 переоценить)
Марокко100/1253🔴 ждёт
Филиппины100/1200🔴 ждёт
Португалия100/1166🔴 ждёт
Хорватия100/1081🔴 ждёт
Чехия100/1066🔴 ждёт
Узбекистан100/952🔴 ждёт
Малайзия100/863🔴 ждёт
Азербайджан100/693🔴 ждёт
Албания100/589🔴 ждёт
Япония100/574🔴 ждёт
Израиль100/486🔴 ждёт
Казахстан100/481🔴 ждёт
Армения100/432🔴 ждёт
Камбоджа100/423🔴 ждёт
Сингапур100/416🔴 ждёт
Сербия100/341🔴 ждёт
Южная Корея100/338🔴 ждёт
Оман100/320🔴 ждёт
Катар100/250🔴 ждёт
Кения100/218🔴 ждёт
Бахрейн100/172🔴 ждёт
ЮАР26/26✅ готово

⚪ Tier 4 — Для галочки / экзотика (25 стран, ВСЕ 25 загружены к 28.04)

✅ 100% покрытие T4 на 28.04. 5 стратегических загружено 27.04 (Аруба, Мьянма, Непал, Саудовская Аравия, Фиджи — +516). Остальные 20 — 28.04 (+11 972 hotels). Включая Францию (3 453), Австрию (1 994), Абхазию (1 336), Германию (1 255). На клиентских страницах для безвизово-недоступных РФ стран — pivoting через шенгенскую визу + прозрачное предупреждение.

СтранаIDHotelsГруппа / статус
🇫🇷 Франция323 453Европа премиум · ✅ 28.04
🇦🇹 Австрия311 994Европа · ✅ 28.04
🇦🇿 Абхазия461 336Локальный / СНГ · ✅ 28.04
🇩🇪 Германия381 255Европа премиум · ✅ 28.04
🇧🇷 Бразилия39734Латинская Америка · ✅ 28.04
🇭🇺 Венгрия37694Европа · ✅ 28.04
🇨🇭 Швейцария52538Европа премиум · ✅ 28.04
🇬🇧 Великобритания44457Европа премиум · ✅ 28.04
🇧🇾 Беларусь57330СНГ · ✅ 28.04
🇰🇬 Кыргызстан60278СНГ · ✅ 28.04
🇸🇦 Саудовская Аравия93269Ближний Восток · ✅ 27.04
🇵🇱 Польша65246Европа · ✅ 28.04
🇦🇩 Андорра17216Горнолыжный · ✅ 28.04
🇳🇴 Норвегия83205Скандинавия · ✅ 28.04
🇸🇮 Словения43204Европа · ✅ 28.04
🇸🇰 Словакия42196Европа · ✅ 28.04
🇯🇲 Ямайка33157Карибы · ✅ 28.04
🇳🇵 Непал8278Азия экзотика · ✅ 27.04
🇫🇯 Фиджи6775Океания · ✅ 27.04
🇱🇧 Ливан8074Ближний Восток · ✅ 28.04
🇲🇲 Мьянма8163Азия экзотика · ✅ 27.04
🇵🇦 Панама8749Карибы · ✅ 28.04
🇦🇷 Аргентина8839Латинская Америка · ✅ 28.04
🇻🇪 Венесуэла9033Латинская Америка · ✅ 28.04
🇦🇼 Аруба7231Карибы · ✅ 27.04

✅ Проверка комплекта тиров

ТирСтранХарактер
🔴 T1 Ядро10Турция, Тунис, Мальдивы, ОАЭ, Египет, Индия, Шри-Ланка, Китай, Вьетнам, Таиланд
🟠 T2 Сильные ниши13Мальта, Иордания, Маврикий, Доминикана, Сейшелы, Куба, Танзания, Кипр, Мексика, Черногория, Грузия, Индонезия, Греция
🟢 T3 Средний25Италия, Испания, Португалия, Хорватия и ещё 21
⚪ T4 Для галочки25Франция, Германия, Швейцария, Беларусь и ещё 21
Итого73Все страны Tourvisor распределены

🇷🇺 Россия — отдельный проект (не в Tourvisor)

Важно: Tourvisor API включает только выездной туризм (73 страны). России там нет.

Внутрироссийский туризм после 2022 вырос в 2 раза — это огромный сегмент, который мы обязаны иметь.

Регион РФИсточник данныхПриоритет
Сочи / Красная ПолянаOstrovok + Слетать🔴 Top
Крым (Ялта, Алушта, Севастополь)Ostrovok + ТО напрямую🔴 Top
Минеральные Воды (Кисловодск, Есентуки)Санаторные ТО🔴 Top
Санкт-ПетербургOstrovok🟠 Городские туры
КалининградOstrovok🟠
КазаньOstrovok🟠
АлтайСобств. база + ТО🟠 Премиум эко
БайкалСобств. база + ТО🟠 Премиум эко
Шерегеш / ЭльбрусМестные ТО🟢 Горнолыжка
КарелияГлэмпинги / эко🟢 Глэмпинг
Камчатка / ТериберкаСобств. ТО🟢 Экзотика
Золотое кольцоOstrovok + экскурсионные ТО🟢 Культурный
85 субъектов РФ

🗺 План интеграции России

  1. Фаза 1 (май-июнь 2026): Ostrovok API + 2 российских ТО (Слетать, TUI Россия) — MVP на топ-5 регионов
  2. Фаза 2: Расширение до 20 регионов, собственная база для премиум-отелей
  3. Фаза 3: Все 85 субъектов РФ с нишами (санатории, глэмпинги, горнолыжка)

Когда: после полной интеграции 73 стран Tourvisor (июнь-июль 2026)

📋 Полный документ: 🇷🇺 Россия — внутренний туризм (план интеграции)

🚨 Что критично добрать

✅ Закрыто 22.04 вечер

  • Регионы T2 — выгружены (13 стран, +102 региона, всего 203)
  • Субрегионы T1+T2 — все 23 страны обработаны, 269 записей. 12 стран не имеют субрегионов в Tourvisor — это особенность их базы (заокеанские курорты, Кипр, Кавказ)
  • 14 бренд-страниц сгенерировано (Hilton 59, DoubleTree 21, Marriott 20, ...)

Осталось P1

  • 🏝 Атоллы Мальдив из details — regex-ом из сommon.place. Сейчас 3/5 пилотных. Нужен массовый проход по всем 200 отелям когда соберём details
  • 💡 Для стран без субрегионов (Грузия, Кипр, Мексика, Доминикана, Сейшелы, Маврикий, Черногория, Тунис, Иордания, Мальта, Танзания частично) — попробовать извлечь район/пляж из описаний/названий отелей как для Мальдив. Паттерн тот же
  • ⚠️ Пагинация отелей для T1 (кроме Турции/Мальдив) + T2 — реально может быть >100 на страну

Приоритет P2 (после MVP)

  • Детали /hotels/{id} — сейчас только 50 пилотных. Полный импорт ~16k = 2-3 часа со всеми лимитами
  • Регионы для T3 (25 стран) — когда будем делать контент по этим странам
  • T4 импорт — экзотика и Шенген

🛠 Скрипты импорта

СкриптЧто делаетКоманда
fetch-more-countries.pyСписки отелей по странам (100/стр)python3 fetch-more-countries.py tier2|tier3|all
fetch-regions.pyРегионы по странамpython3 fetch-regions.py tier2|all
fetch-subregions.pyСубрегионы по странамpython3 fetch-subregions.py priority|t1|t2
detail-extract.pyДетали /hotels/{id} (пилот)python3 detail-extract.py
paginate-hotels.pyПагинация /hotels?page=N с LIMIT=500 + tier-aware bygap. Ядро импортаpython3 paginate-hotels.py bygap
generate-wrappers.pyГенерация SEO-обёрток (HTML превью)python3 generate-wrappers.py --pilot
validators/run-all.sh 🛡Запуск всех валидаторов (countries, tracker-sync, lists)./scripts/validators/run-all.sh