Цель проекта - создание предсказательной модели и интерфейса для прогнозирования спроса на товары заказчика собственного производства ООО "Лента".
- Сбор и анализ данных о продажах товаров Ленты.
- Разработка предсказательной модели на основе анализа данных.
- Создание интерфейса для ввода данных и получения прогнозов.
Для реализации проекта используются следующие технологии:
- Python 3.11
- Django 4.2
- Django REST framework 3.14
- Djoser 2.2
- Gunicorn 21.2
- Nginx
- Swagger
- Docker
- JavaScript
- HTML/CSS
- React
- Redux
- Vite
- AntDesign
- Pandas 1.5
- Numpy 1.23
- Flask 2.2
- Catboost 1.2
- Holidays 0.34
- Prophet 1.1
- Lightgbm 4.0
- Figma
- ChartJS
- AntDesign
Краткая инструкция по запуску:
-
скачать проект на локальную машину
git clone git@github.com:weekend-warriors-team/hackathon-lenta.git
-
в директории /hackathon-lenta создать файл
.env
с таким содержанием:POSTGRES_USER=django_user POSTGRES_PASSWORD=yourpassword POSTGRES_DB=django DB_HOST=db DB_PORT=5432
-
в терминале перейти в директорию с проектом:
cd <путь к проекту>/hackathon-lenta
-
в директории проекта
/hackathon-lenta
выполнить командуdocker compose stop && docker compose up --build
-
дождаться сборки и запуска контейнеров с проектом
-
собрать статику Django
docker compose exec backend python manage.py collectstatic
-
скопировать статику
docker compose exec backend cp -r collected_static/. ../backend_static/static/
-
сделать миграции в бд:
docker compose exec backend python manage.py makemigrations
-
применить миграции:
docker compose exec backend python manage.py migrate
-
для доступа к админке создать суперпользователя:
docker compose exec backend python manage.py createsuperuser
(под Windows команда может быть такой:winpty docker compose exec backend python manage.py createsuperuser
) -
для работы с API проекта, необходимо получить токен(достать токен можно как через POSTMAN так и через SWAGGER) по адресу:
http://127.0.0.1:8000/api/v1/auth/token/login/
POST запрос вида:
{
"email": "user@user.ru",
"password": "mypassword"
}
Ответ:
{
"auth_token": "c49f6ebb3d5a55gfjkgfdjkgdfjkgjkdgj3c9"
}
- далее в postman в поле Headers, мы вносим наш токен - Authorization: Token c49f6ebb3d5a55gfjkgfdjkgdfjkgjkdgj3c9
- API документация доступна по адресу http://127.0.0.1:8000/swagger/
- админ-панель доступна по адресу http://127.0.0.1:8000/admin/
- Скопировать файлы
st_df.csv, sales_submission.csv, sales_df_train.csv, pr_df.csv
в директорию/backend/initial_data
- в терминале перейти в директорию с проектом:
cd <путь к проекту>/hackathon-lenta
. Все команды выполняются из этой директории. - Загрузка товарной иерархии и данных о ТЦ:
docker compose exec backend python manage.py load_data
- Загрузка данных о продажах за год:
docker compose exec backend python manage.py load_sales_data
- Загрузка данных с прогнозом:
docker compose exec backend python manage.py load_forecast_data
/api/v1/
Get-запрос - основное api
{
"users": "http://127.0.0.1:8000/api/v1/users/",
"shops": "http://127.0.0.1:8000/api/v1/shops/",
"products": "http://127.0.0.1:8000/api/v1/products/",
"sales": "http://127.0.0.1:8000/api/v1/sales/",
"forecast": "http://127.0.0.1:8000/api/v1/forecast/"
}
/api/v1/users/
Post-запрос - регистрация пользователя. Get-запрос – получение списка пользователей.
[
{
"email": "hutjicsgo@gmail.com",
"id": 1,
"username": "hutji",
"first_name": "",
"last_name": ""
}
]
/api/v1/products/
Get-запрос – получение списка продуктов/товаров.
{
"sku": "002c3a40ac50dc870f1ff386f11f5bae",
"group": "6512bd43d9caa6e02c990b0a82652dca",
"category": "c9f95a0a5af052bffce5c89917335f67",
"subcategory": "507c9dcd6538b05090d22c4b73c535a7",
"uom": 1
},
/api/v1/shops/
Get-запрос – получение списка магазинов.
{
"store": "084a8a9aa8cced9175bd07bc44998e75",
"city": "3202111cf90e7c816a472aaceb72b0df",
"division": "32586311f16876abf92901085bd87b99",
"type_format": 4,
"loc": 3,
"size": 19,
"is_active": true
},
/api/v1/sales/?store=16a5cdae362b8d27a1d8f8c7b78b4330&sku=0094042bfeae507dc7f62acc8e5ed03a/
Get-запрос – получение списка продаж за год по конкретному магазину.
[
{
"store": "16a5cdae362b8d27a1d8f8c7b78b4330",
"sku": "0094042bfeae507dc7f62acc8e5ed03a",
"fact": [
{
"date": "2022-08-01",
"sales_type": true,
"sales_units": 2.0,
"sales_units_promo": 2.0,
"sales_rub": 383.0,
"sales_rub_promo": 383.0
},
{
"date": "2022-08-01",
"sales_type": false,
"sales_units": 4.0,
"sales_units_promo": 0.0,
"sales_rub": 712.0,
"sales_rub_promo": 0.0
},
/api/v1/forecast/
Get-запрос – получение списка прогнозируемых товаров.
-
Бекжанов Арсен
-
Ананьева Наталия Андреевна
-
Орлова Татьяна Александровна
-
Лаговский Дмитрий Владимирович
-
Завесова Анна Александровна
-
Евдакова Екатерина Геннадьевна
-
Лашков Павел Александрович
-
Кочетов Данил Владимирович
- Фаталиев Джамал Алиханович
- Котов Артём Алексеевич
Проект распространяется под лицензией MIT. Подробнее о лицензии можно узнать в файле LICENSE.