Во-первых, это система блогов, даже не будь на сайте бронирования, одна статейная часть портала достойна внимания пользователя. Там можно найти не только формальное описание стран и курортов, а и много информации из первых рук от других туристов.

Заказчик хотел получить возможность гибко настраивать выдачу, так чтоб в разных категориях/станах можно было сортировать статьи по разным критериям и даже вставлять наборы других статей для рекламы, подмешивая их в основную выдачу. Это все должно было выглядеть, как лента Pinterest. Помимо статей в качестве блоков может выступать реклама или специальные блоки. Мы долго ломали голову, как это сделать и пришли к идее специального языка описания выдачи. Достаточно простого, чтоб с ним справился администратор сайта, и достаточно богатого, чтоб реализовать задачу выше. С чем-то похожим мы уже сталкивались в другом проекте «MetaTest», где нужен был гибкий конструктор отчетов.

Вот пример настройки выдачи в категории «Франция» 

и то, что получается на выходе

Вторым китом была система поиска туров, которая позволяет искать быстрее, чем остальные сайты. Сайт делает поиск сразу по широкому запросу, поэтому дополнительные запросы-уточнения происходят мгновенно для пользователя. Например, для поиска для туров в конкретный отель система не будет делать дополнительные запросы к оператору, как на других сайтах. Вы просто ставите птички, вбиваете названия, меняете «звездность» отеля, и т.п., а выдача справа меняется меньше, чем за секунду. 

К сожалению, API туроператоров был не рассчитан на такой подход. Он ограничивает количество туров, которое можно получить на один запрос, поэтому если дать слишком широкий запрос, часть ответа просто не приходит.

Поэтому было много переписки с поддержкой и нашими коллегами, в результате которых мы разбили широкий запрос на подзапросы и настроили кэширование таким образом, чтоб это все работало быстро. Попутно нашли какое-то количество багов в самом API и добились их исправления.

И третье, последнее, но не менее важное – это система актуализации цены тура. Она автоматизирована по максимуму так, что вы получаете конечную цену без согласования с менеджерами и тут же можете перейти к оплате. 

Сначала мы понадеялись на встроенную функцию актуализации цены в API, но та часто путала топливные сборы, забывала прибавить визы и выдавала данные в разных валютах. Поэтому мы добавили в систему свои справочники, которые корректировали данные приходящие от API. Сами справочники синхронизировали с другими внешними источниками, оставив и возможность ручного редактирования. Таким образом, мы добились полной и точной цены, с которой можно отправить пользователя на оплату.

Нам оставалось только подключить онлайн-оплату, продумать интерфейс с точки зрения удобства пользования. Мы добавили в проект социальные элементы: лайки, комментарии, рейтинг, статьи пользователей.  Чтобы показать отзывы об отелях мы сделали смешанную выдачу: часть отзывов мы берем из внешних источников и добавляем к ним отзывы, которые пользователи оставляют на нашем сайте. Еще пару мелочей вроде возможности автоматически создавать рекламные посадочные страницы прямо из админки и версия 1.0 была готова.

«TagFly» получился интересным проектом, как для нас – в плане решенных инженерных задач, так и для пользователей, которые получили возможность еще проще путешествовать.