Мы с важной новостью: с 28 февраля 2025 года сервис Хабр Фриланс прекратит свою работу.

Купить услуги можно до 28 февраля 2025, но пополнить баланс уже нельзя. Если на вашем счете остались средства, вы можете потратить их на небольшие услуги — служба поддержки готова поделиться бонусами, на случай, если средств немного не хватает.
R50 2c89dd09080649d376f0e7026694117b
PHP, IOS, Android, C#, Python

Разработка сервиса Inntravel

Добавлено 06 сен 2023 в 14:00
К нам об­ра­тил­ся заказчик для до­работ­ки сервиса Inntravel.ru — сайта выгодных пу­тешес­твий по России.
Задача на первый взгляд не­боль­шая — поп­ра­вить логику отоб­ра­жения и филь­тра­ции отелей.

Заказчик был уверен, что сайт почти готов.

С какими труд­ностя­ми мы стол­кну­лись

При изучении проекта мы стол­кну­лись с не­ожи­дан­ны­ми вызовами. Ока­залось, что термин «почти готов» в этом кон­тек­сте означал, что готов был только «каркас» проекта. В час­тнос­ти, об­на­ружи­ли, что база данных содержит только сырые SQL-запросы, а система backend'а не струк­ту­риро­вана. Даже при простой попытке раз­вернуть проект для ло­каль­ной раз­ра­бот­ки и анализа кода пришлось ис­пра­вить большое ко­личес­тво ошибок. Как ре­зуль­тат, проект на­ходил­ся в пол­ностью не­завер­шенном сос­то­янии и требовал зна­читель­ной работы для со­от­ветс­твия тре­бова­ни­ям стан­дар­тно­го пол­но­цен­но­го сайта.

Что мы делали

  1. Backend проекта был написан на Flask. Для вза­имо­дей­ствия с базой данных приняли решение ин­тегри­ровать биб­ли­оте­ки SQLAlchemy (ORM для вза­имо­дей­ствия с базой данных) и Alembic (для уп­равле­ния миг­ра­ци­ями базы данных) в уже су­щес­тву­ющий код.
Все ранее су­щес­тву­ющие SQL-запросы пе­репи­сали через новый ORM и создали со­от­ветс­тву­ющие модели, опи­сыва­ющие струк­ту­ру базы данных. Это было не­об­хо­димо как для ис­поль­зо­вания SQLAlchemy, так и для работы с Alembic. В ре­зуль­тате этих из­ме­нений зна­читель­ная часть пре­дыду­щего кода была пе­рера­бота­на, ис­пра­вили большое ко­личес­тво ошибок, добавили ди­нами­чес­кий контент в ста­тич­ные элементы сайта.

  1. Также были успешно ин­тегри­рова­ны пла­теж­ные системы: система быстрых платежей (СБП) и «Альфа-банк». Это решение поз­во­лило поль­зо­вате­лям сайта выбирать оп­ти­маль­ный способ оплаты и сделало процесс про­веде­ния тран­закций более удобным и гибким.


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


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




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




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





Выводы

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

90b93d7cbd