Тестовое задание на курс IT.IS-UPGRADE
- Ззапустить на локальном сервере MySQL скрипт dbCreator.sql
-
pip install -r requirements.txt
- Указать в файлах WebApplication.py и parser.py в поля user и password имя пользователя и пароль от локального mySQL сервера
В данном репозитории представлено решение, которое является ответом на тестовое задание для участия в {IT.IS} UPGRADE!
Инструменты, используемые для решения поставленной задачи, и инструкции к ним:
1. БД (в качестве системы проектирования базы данных была выбрана MySQL)
Чтобы использовать проект БД данного решения, необходимо на локальном сервере MySQL запустить скрипт "dbCreator.sql", который инициализирует саму БД.
База данных, используемая в данном решении, состоит из единственной таблицы - Requests.
Аргументы её столбцов приведены ниже:
1) requestId (Индивидуальный ID запроса - из logs.txt)
2) country (Страна запроса - определяется по IP)
3) d (Дата запроса - из logs.txt)
4) t (Время запроса - из logs.txt)
5) category (Категория товара - из logs.txt)
2. Парсер (ЯП - Python 3.7)
Предоставляемый парсер (parser.py), используя модуль pysyge (из вложенного каталога "Country_search"), определяет страну запроса по IP и на основе этих данных и данных из logs.txt
с помощью модуля pymysql заполняет указанную таблицу.
Для его корректной работы необходимо заполнить в указанных местах имя пользователя и пароль от локального сервера MySQL.
Сноска --> При определении страны по диапазону IP, не каждый IP адрес удаётся определить.
Таких адресов выходит порядка 3000, но т.к. запросов из США ~ 8000, а из других стран не превышает 2000, то
мы можем с абсолютной уверенностью гарантировать точность ответа.
3. Web-приложение (ЯП - Python 3.7, модуль - dash)
Модуль dash позволяет развернуть и серверную, и пользовательскую части в одной программе и прост в использовании, поэтому для создания приложения мой выбор пал на него.
Здесь (WebApplication.py) я использую 3 библиотеки: уже знакомый pymysql для работы с MySQL, dash непосредственно для создания приложения и timedelta для работы со временем.
Так же, как и при работе с парсером, для начала необходимо указать имя пользователя и пароль от локального сервера MySQL в указанных местах.
После этого можно запускать приложение, программа сама поднимет сервер и даст ссылку на генератор отчётов.
Формирование отчёта по каждому пункту начинается только после выбора пользователем одной из категорий, поэтому, после выбора одного из пунктов, нужно немного подождать.
Это сделано для того, чтобы сымитировать работу приложения с реальными (динамически изменяющимися) данными, по крайней мере я вижу это примерно так =)