К нам обратился заказчик для доработки сервиса Inntravel.ru — сайта выгодных путешествий по России.
Задача на первый взгляд небольшая — поправить логику отображения и фильтрации отелей.
Заказчик был уверен, что сайт почти готов.
С какими трудностями мы столкнулисьПри изучении проекта мы столкнулись с неожиданными вызовами. Оказалось, что термин «почти готов» в этом контексте означал, что готов был только «каркас» проекта. В частности, обнаружили, что база данных содержит только сырые SQL-запросы, а система backend'а не структурирована. Даже при простой попытке развернуть проект для локальной разработки и анализа кода пришлось исправить большое количество ошибок. Как результат, проект находился в полностью незавершенном состоянии и требовал значительной работы для соответствия требованиям стандартного полноценного сайта.
Что мы делали- Backend проекта был написан на Flask. Для взаимодействия с базой данных приняли решение интегрировать библиотеки SQLAlchemy (ORM для взаимодействия с базой данных) и Alembic (для управления миграциями базы данных) в уже существующий код.
Все ранее существующие SQL-запросы переписали через новый ORM и создали соответствующие модели, описывающие структуру базы данных. Это было необходимо как для использования SQLAlchemy, так и для работы с Alembic. В результате этих изменений значительная часть предыдущего кода была переработана, исправили большое количество ошибок, добавили динамический контент в статичные элементы сайта.
- Также были успешно интегрированы платежные системы: система быстрых платежей (СБП) и «Альфа-банк». Это решение позволило пользователям сайта выбирать оптимальный способ оплаты и сделало процесс проведения транзакций более удобным и гибким.

- Создали систему по указанию цен на конкретную комнату в отеле в пределах от одного дня и до всего года.

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

- Добавили парсер для сбора данных по сайту hochu-na-yuga и создания на основе этих данных отелей на сайте заказчика. Для его работы интегрировали систему по запуску фоновых задач через Celery.

- Также провели большое количество работ с frontend-частью проекта. Несмотря на то что у заказчика уже были готовые шаблоны, во многих аспектах они не удовлетворяли потребностям.

ВыводыВ конечном итоге можно сказать, что большая часть работ коснулась backend-части. Главной задачей было уйти от старой структуры проекта, добавить больше возможностей по настройке контента через админпанель, улучшить производительность и «вылечить» все найденные ошибки. А также, конечно, выполнить все поставленные заказчиком задачи.