Тестовое задание “Анализатор логов”

Предыстория:

В аналитическое агентство “Последний шанс” обратилась администрация интернет-магазина “Все на дно!”, магазин занимается продажей морепродуктов, с просьбой провести аналитику потребностей пользователей. В ходе исследования было выявлено, что интернет-магазин не хранит информацию о действиях пользователей и единственное что удалось достать, это логи сервера.

Задание:

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

  1. Посетители из какой страны совершают больше всего действий на сайте?

  2. Посетители из какой страны чаще всего интересуются товарами из категории “fresh_fish”?

  3. В какое время суток чаще всего просматривают категорию “frozen_fish”?

  4. Какое максимальное число запросов на сайт за астрономический час (c 00 минут 00 секунд до 59 минут 59 секунд)?

  5. Товары из какой категории чаще всего покупают совместно с товаром из категории “semi_manufactures”?

  6. Сколько брошенных (не оплаченных) корзин имеется?

  7. Какое количество пользователей совершали повторные покупки?

Примечания:

Покупка товара считается завершенной только после того, как в логах появилась запись об успешной оплате Чтобы добавить товар в корзину, вы должны находится на странице с товаром

Входные данные:

logs.txt - файл содержащий логи пользователей о действиях с товарами.

Требования:

  • Язык программирования: Python 3

  • База данных: MySQL, MS SQL, PostgreSQL, SQLite

  • Не использовать pandas

  • Код должен быть рабочим, чтобы мы могли развернуть его у себя и проверить работу как маппера логов, так и генератора ответов

Оценивание:

  • Программирование и качество кода (применение ООП приветствуется, но не является обязательным, главное, чтобы код был легко читаемым и хорошо структурированным, также поощряется покрытие кода тестами)

  • Качество спроектированной схемы базы данных (не забывайте о нормальной форме)

  • Правильность ответов на вопросы по аналитике

Помимо ответов на вопросы по логам вам необходимо будет загрузить ссылку на репозиторий с кодом решения и дампом базы данных (см. последний шаг).