Максим Гаврилов MrEll
Рейтинг
434
№ 2 518 в каталоге
Отзывы
Профессионализм
10/10
Коммуникация
10 /10
На сайте с
2025 года

Бэкенд сайта по продаже Б/У машин из Южной Кореи

Используемые навыки CI/CD Docker Compose FastAPI PostgresSQL Python

Описание

Нужно было импортировать данные с корейского сайта Б/У машин через стороннее API и сохранять в БД. Изначально нужно было сделать полный импорт объявлений, а затем обновлять базу, получая из апи изменения. Так же нужно было переводить цену из корейских вон в рубли, посчитав для машины все таможенные пошлины и сборы, которые зависят от её характеристик. Так же нужно было реализован поиск машин по фильтрам. При оставлении заявки на сайте, бот компании должен присылать в определённый чат уведомление с данными клиента и нужной машины.

Решение

Бэкенд написан на FastAPI, базу данных использовал PostgreSQL. Сложной задачей стал импорт и синхронизация объявлений из-за большого объёма данных. Нужно было хранить и обновлять более 100000 объявлений, для каждого около 10 ссылок на картинки. Для импотра использовалась вставка в staging-таблицу по батчам, а затем распределение в конечные через JOIN-ы. Синхронизацию данных настроил каждые 3 часа. Апи отдаёт изменения пакетами по 10. Чтобы не тратить время на последовательные запросы, запрашивал параллельно несколько пакетов, а затем батчами вставлял в БД. Для перевода цен использовал АПИ ЦБ, ежедневный пересчёт под курс (батчами). Для отправки заявки в телеграм использован aiogram. Для удобства работы написан CI/CD: при пуше в main собирается docker образ, и на сервере подтягивается из GHCR.

Результат

Результат подтвердил все ожидания, импорт и обновление объявлений работают быстро и не дают сильной нагрузки, из-за чего появилась возможность сэкономить на VPS. Пересчёт цен и подсчёт пошлин работает корректно, детально отображаются расходы на странице машины. Страницы грузятся быстро, получаем 99+ на десктопе в PageSpeed Insights.

Оценили проект:

Другие проекты

Все проекты →
Веб-разработка и IT Веб-приложение для медицинского центра на заказ
Веб-приложение для медицинского центра на заказ
81