Skip to content

Latest commit

 

History

101 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проект "Прогнозирование спроса на товары Ленты"

Описание проекта

Цель проекта - создание предсказательной модели и интерфейса для прогнозирования спроса на товары заказчика собственного производства ООО "Лента".

Задачи проекта

  1. Сбор и анализ данных о продажах товаров Ленты.
  2. Разработка предсказательной модели на основе анализа данных.
  3. Создание интерфейса для ввода данных и получения прогнозов.

Технологии

Для реализации проекта используются следующие технологии:

Backend

  • Python 3.11
  • Django 4.2
  • Django REST framework 3.14
  • Djoser 2.2
  • Gunicorn 21.2
  • Nginx
  • Swagger
  • Docker

Frontend

  • JavaScript
  • HTML/CSS
  • React
  • Redux
  • Vite
  • AntDesign

DS

  • Pandas 1.5
  • Numpy 1.23
  • Flask 2.2
  • Catboost 1.2
  • Holidays 0.34
  • Prophet 1.1
  • Lightgbm 4.0

Design

  • 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

Запуск проекта производится командой docker compose stop && docker compose up --build

Примеры API эндпоинтов:

  • /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-запрос – получение списка прогнозируемых товаров.

Команда разработки:

Дизайнеры:

  • Бекжанов Арсен

  • Ананьева Наталия Андреевна

  • Орлова Татьяна Александровна

DS:

  • Лаговский Дмитрий Владимирович

  • Завесова Анна Александровна

  • Евдакова Екатерина Геннадьевна

Backend-разработчики:

  • Лашков Павел Александрович

  • Кочетов Данил Владимирович

Frontend-разработчики:

  • Фаталиев Джамал Алиханович

Менеджер проекта

  • Котов Артём Алексеевич

Лицензия

Проект распространяется под лицензией MIT. Подробнее о лицензии можно узнать в файле LICENSE.

Lenta x Yandex.Practicum 2023

About

Проект "Прогнозирование спроса на товары Ленты"

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages