Skip to content

hackathone-prosept-team2/backend_django

Repository files navigation

YANDEX & PROSEPT HACKATHON: Сервис сопоставления товаров Просепт и наименований дилеров. Команда 2.

http://81.31.246.5/
http://81.31.246.5/backup/ - прототип на Django-templates, пока не закончен основной фронтенд
данные для пробного входа на сайт и в админ-панель

email: [email protected]
password: Password-123

Описание

Заказчик предоставил файлы csv: список своих товаров, список дилеров и результаты ежедневного парсинга сайтов дилеров с ценами.
Проблема:
Заказчику необходимо контролировать цены на свою продукцию на сайтах дилеров, но наименования на сайтах значительно отличаются от оригиналльных, и их приходится сопоставлять вручную, что очень трудоемко. Необходимо разработать сервис сопоставления наименований и подбора рекомендаций для операторов - вывод наиболее вероятных подходящих наименований.
Решение:
Бэкенд загружает данных цен; составляет список уникальных пар ключ(артикул)-дилер; проверяет, есть ли уже подтвержденные оператором товары; ключи без продукта отправляются на обработку в ML-сервис рекомендаций, который возвращает топ-10 наиболее вероятных совпадений.
Оператор может просмотреть список ключей, отфильтровать их по артикулу/наименованию, статусу и дилеру; открыть нужный ключ, выбрать подходящий товар и создать связь ключ-товар, либо пометить все товары как неподходящие.
Доступен отчет в разрезе дилеров со статистикой загрузки цен, уникальных ключей, с кол-вом ключей, которые надо проверить и количеством принятых решений (подошло/не подошло).
API позволяет выгрузить все пары ключ-товар с опциями "все новые"/"за период"/"в дату".

Фото приложения

Фото основных страниц

FRONTEND:

https://github.com/hackathone-prosept-team2/frontend

DATA-SCIENCE:

https://github.com/hackathone-prosept-team2/data-science

BACKEND:

Инструменты:

image image image image image image image image image image image
DS-сервис рекомендаций (является частью бэкенд-приложения):
image image image

Доступ в админ-панель:

http://81.31.246.5/admin

email: [email protected]
password: Password-123

API-документация:

http://81.31.246.5/api/schema/swagger/#

Авторизация через headers:
Authorization: Token <access-token>

Тестирование бэкенда:

image

Описание возможностей

Метод Endpoint Назначение
POST /api/v1/auth/token/login/ Получение токена для пользователя (вход)
POST /api/v1/auth/token/login/ Уничтожение токена для пользователя (выход)
GET /api/v1/users/ Получение списка пользователей
POST /api/v1/users/ Создание нового пользователя
GET /api/v1/users/{id}/ Просмотр информации о пользователе с id {id}
GET /api/v1/users/me/ Просмотр информации о текущем пользователе
GET /api/v1/attributes/ Полный список словарей моделей-атрибутов
GET /api/v1/dealers/ Получение списка дилеров
GET /api/v1/dealers/{id}/ Просмотр информации о дилере с id {id}
GET /api/v1/dealers/report/ Отчет по дилерам и их ключам
GET /api/v1/keys/ Список ключей дилеров с возможностью фильтрации по параметрам
GET /api/v1/keys/{id}/ Информация о ключе дилера с id {id}
GET /api/v1/keys/{id}/matches/ Список подобранных возможных продуктов к этому ключу
POST /api/v1/keys/{id}/choose_match/ Выбор 1 продукта для сопоставления с ключем дилера
POST /api/v1/keys/{id}/decline_matches/ Пометка всех предложенных продуктов как неподходящие
GET /api/v1/keys/{id}/prices/ Список цен к ключу дилера
GET /api/v1/keys/export/ Выгрузка сопоставленных ключей и продуктов с фильтром по новым/дате/периоду
POST /api/v1/prices/ Загрузка в базу данных цен из предоставленного Просепт файла и запуск системы подбора
DELETE /api/v1/prices/ Удаление из базы данных всех цен, связанных рекомендаций и установленных связей
GET /api/v1/products/ Список продуктов компании
GET /api/v1/products/{id}/ Просмотр информации о продукте компании с id {id}

База данных и связи сущностей приложения

image

Запуск проекта

Переменные окружения

Необходимо создать файл .env - хранится в корневой папке проекта; пример заполнения в .env.example (можно переименовать в .env).

Запуск с установленным Docker

Копировать проект в папку целиком (для запуска контейнеров достаточно .env в корне проекта и папки /deploy)

git clone [email protected]:hackathone-prosept-team2/backend_django.git

Перейти в папку deploy и запустить сборку контейнеров

cd backend_django/deploy
docker compose up -d --build

Сайт доступен по адресу http://127.0.0.1/
В базе данных уже есть Суперпользователь с указанными в .env данными (или данными по умолчанию выше) и загружены файлы:

marketing_dealer
marketing_product
marketing_productdealerkey 

Команда

Project Manger

Виктория Мудрова

Backend:

Руслан Атаров

Frontend:

Максим Таланов
Линда Суховенко

Data-Science:

Кирилл Шулев
Павел Барков