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