Клиенту требовалось создать внутренний аналитический веб-инструмент (back-office workbench) для автоматизированного поиска, скоринга и формирования базы премиальных заведений (рестораны высокой кухни, закрытые клубы, панорамные rooftop-бары) в курортных городах и мегаполисах мира.
В чём заключалась проблема:
Формирование качественной базы статусных локаций вручную — долгий и дорогой процесс: операторам приходилось вручную сопоставлять данные карт, отзывы туристов и статьи в глянцевых гидах (Michelin, Tatler и др.). При этом оценки на картах часто субъективны или накручены, а ручной сбор не давал единой объективной шкалы сравнения.
Цель проекта:
Автоматизировать рутину аналитиков и операторов: создать закрытую систему, в которой сотрудник указывает город, а сервис сам находит заведения, собирает по ним исчерпывающие данные, сопоставляет с экспертными источниками и формирует объективный ранжированный топ-30 лучших мест для внутреннего использования и дальнейшей работы.
Ключевые требования заказчика:
1. Закрытый периметр: система предназначена исключительно для внутренней работы команды — доступ только по авторизации, никакой публичной части на этапе MVP.
2. Двухфакторный объективный скоринг: оценка заведений должна строиться не просто на «звездах», а на математической модели, учитывающей реальную популярность (соотношение рейтинга и объема отзывов) и уровень эксклюзивности (ценовой сегмент + подтвержденные упоминания в экспертных медиа).
3. Нулевые затраты на API ($0/мес): сбор данных через картографические сервисы должен быть строго оптимизирован, чтобы регулярная генерация городов укладывалась в бесплатные ежемесячные лимиты без дополнительных расходов.
4. Простота управления: наглядный интерфейс с отслеживанием прогресса сбора в реальном времени, возможность загружать свои файлы с экспертными подборками (CSV/Excel) и просматривать результат прямо в системе.
Для решения задачи был спроектирован и реализован закрытый рабочий инструмент с изолированной фоновой обработкой данных:
1. Архитектура и безопасность периметра:
• Приложение реализовано как закрытая внутренняя система: публичный доступ полностью отключен, вход в систему осуществляется через защищенную авторизацию по сессиям.
• Стек подобран с упором на надежность, высокую скорость отклика и минимальное потребление серверных ресурсов
2. Умный сбор данных и оптимизация расходов на API:
• Разработан многоэтапный конвейер сбора: геокодирование города → точечный поиск кандидатов → сбор детальной информации (рейтинг, число отзывов, ценовой диапазон, фото) → отбор и сохранение топ-30 мест.
• Схема запросов к внешнему API была строго оптимизирована: вызовы ограничены только необходимыми параметрами без перехода на дорогие тарифные планы, внедрен жесткий лимитер вызовов на каждый прогон. Это гарантировало нулевую стоимость сбора данных ($0/мес) при регулярной работе операторов.
• Реализованы механизмы безопасного кэширования в полном соответствии с правилами внешних платформ.
3. Математический скоринг и нечеткий матчинг:
• Внедрен расчет двух независимых показателей: «Популярность» (объективная оценка на базе рейтинга и объема внимания) и «Люксовость» (сочетание ценового уровня и веса упоминаний в экспертных изданиях).
• Реализован модуль загрузки списков из медиа (CSV/Excel) с автоматическим «умным» сопоставлением названий заведений из статей с объектами на картах (нечеткий поиск по схожести строк) и отсевом дубликатов.
4. Асинхронный воркер и рабочий интерфейс оператора:
• Все тяжелые вычисления и запросы к API вынесены в отдельный фоновый процесс (worker). Интерфейс не блокируется во время расчета, а оператор видит статус и ход выполнения в реальном времени.
• Создан удобный экран просмотра результатов внутри системы: интерактивная таблица и карточки мест, фильтрация, переключение сортировки (по общему рангу, индексу популярности или оценке статуса) и просмотр ключевых атрибутов каждого заведения.
• Предусмотрена панель диагностики с историей прогонов, контролем расхода квот и очередью для ручной проверки сомнительных совпадений.
5. Надежность, тестирование и DevOps:
• Проведено глубокое автоматизированное тестирование всех модулей системы (бизнес-логика, скоринг, безопасность, импорт данных).
• Сервис упакован в Docker-контейнеры, подготовлен скрипт быстрого развертывания на сервере с автоматическим резервным копированием базы данных на лету и настройкой защищенного соединения (SSL).
В результате разработан и подготовлен к промышленной эксплуатации надежный внутренний инструмент для аналитики и формирования каталога:
• Полная автоматизация рутины: вместо многочасового ручного поиска оператор вводит название города и за несколько минут получает готовый, математически выверенный топ-30 премиальных локаций с контактами, фото и оценками.
• Нулевой бюджет на эксплуатацию API: благодаря жесткому контролю структуры запросов и лимитов регулярная актуализация и добавление городов обходятся без затрат ($0/мес).
• Стабильность и точность: благодаря качественной архитектуре и обширному набору автотестов система устойчива к сбоям, исключает дублирование заведений и гарантирует корректность скоринга.
• Минимальные требования к серверу и развертывается одной командой с автоматическим созданием резервных копий.
Сдача проекта:
Готовый программный комплекс (исходный код, настроенное Docker-окружение, скрипты миграций базы данных, руководство по эксплуатации и скрипты автоматического деплоя) был успешно развернут на сервере и передан заказчику в согласованный срок. На этом этапе разработка MVP была успешно завершена; дальнейшая судьба продукта и сценарии коммерческого использования собранных данных остаются на стороне заказчика.