Skip to content

Тестовое задание для стажёра Backend в команду MI

Notifications You must be signed in to change notification settings

avito-tech/mi-backend-trainee-assignment

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 

Repository files navigation

Тестовое задание для стажера в Market Intelligence.

Задача:

Необходимо реализовать сервис, позволяющий следить за изменением количества объявлений в Авито по определённому поисковому запросу и региону.

Если совсем не получается парсить Авито, можно использовать как основу сервиса любой другой классифайд (на Ваш выбор, но лучше всё-таки Авито).

UI не нужен, достаточно сделать JSON API сервис.

Для написание сервиса можно использовать FastAPI или любой другой фреймворк.

  • Метод /add Должен принимать поисковую фразу и регион, регистрировать их в системе. Возвращать id этой пары.
  • Метод /stat Принимает на вход id связки поисковая фраза + регион и интервал, за который нужно вывести счётчики. Возвращает счётчики и соответствующие им временные метки (timestamp).

Частота опроса = 1 раз в час  для каждого id

Требования:

  • Язык программирования: Python 3.7/3.8
  • Использование Docker, сервис должен запускаться с помощью docker-compose up.
  • Требований к используемым технологиям нет.
  • Код должен соответствовать PEP, необходимо использование type hints, к публичным методам должна быть написана документация.
  • Чтобы получить число объявлений, можно:
    • парсить web-страницу объявления (xpath, css-селекторы)
    • самостоятельно проанализировать трафик на мобильных приложениях или мобильном сайте и выяснить какой там API для получения информации об объявлении (это будет круто!)

Усложнения:

  • Написаны тесты (постарайтесь достичь покрытия в 70% и больше). Вы можете использовать pytest или любую другую библиотеку для тестирования.
  • Сервис асинхронно обрабатывает запросы.
  • Данные сервиса хранятся во внешнем хранилище, запуск которого также описан в docker-compose. Мы рекомендуем использовать MongoDB или Postgres, но Вы можете использовать любую подходящую базу.
  • По каждому id также собираются топ 5 объявлений. На их получение есть отдельная ручка, архитектуру продумайте самостоятельно

About

Тестовое задание для стажёра Backend в команду MI

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published