Приложение предназначено для автоматизации закупок в розничной сети. Пользователи сервиса — покупатель (менеджер торговой сети, который закупает товары для продажи в магазине) и поставщик товаров.
Клиент (покупатель):
- Менеджер закупок через API делает ежедневные закупки по каталогу, в котором представлены товары от нескольких поставщиков.
- В одном заказе можно указать товары от разных поставщиков — это повлияет на стоимость доставки.
- Пользователь может авторизироваться, регистрироваться и восстанавливать пароль через API.
Поставщик:
- Через API информирует сервис об обновлении прайса.
- Может включать и отключать прием заказов.
- Может получать список оформленных заказов (с товарами из его прайса).
Необходимо разработать backend-часть (Django) сервиса заказа товаров для розничных сетей.
Базовая часть:
- Разработка сервиса под готовую спецификацию (API);
- Возможность добавления настраиваемых полей (характеристик) товаров;
- Импорт товаров;
- Отправка накладной на email администратора (для исполнения заказа);
- Отправка заказа на email клиента (подтверждение приема заказа).
Продвинутая часть:
- Экспорт товаров;
- Админка заказов (проставление статуса заказа и уведомление клиента);
- Выделение медленных методов в отдельные процессы (email, импорт, экспорт).
- Общее описание сервиса
- Спецификация (API) - 1 шт.
- Файлы yaml для импорта товаров - 1 шт.
- Пример API Сервиса для магазина
Разработку Backend рекомендуется разделить на следующие этапы:
Базовая часть:
- Создание и настройка проекта
- Проработка моделей данных
- Реализация импорта товаров
- Реализация API views
- Полностью готовый backend
Продвинутая часть (по желанию, если базовая часть полностью готова):
- Реализация forms и views админки склада
- Вынос медленных методов в задачи Celery
- Создание docker-файла для приложения
Настоятельно рекомендуется вести разработку с использованием git (github/gitlab/bitbucket) с регулярными коммитами в репозиторий, доступный вашему дипломному руководителю. Старайтесь делать коммиты как можно чаще для того, чтобы иметь возможность оперативно получать обратную связь от руководителя проекта и избежать лишнего переписывания кода, если что-то потребует корректировки.
Разберём подробно каждый этап.
Критерии достижения:
- Вы имеете актуальный код данного репозитория на рабочем компьютере;
- У вас создан django-проект и он запускается без ошибок.
Для получения подробностей по данному этапу перейдите по ссылке.
Критерии достижения:
- Созданы модели и их дополнительные методы.
Для получения подробностей по данному этапу перейдите по ссылке.
Критерии достижения:
- Созданы функции загрузки товаров из приложенных файлов в модели Django.
- Загружены товары из всех файлов для импорта.
Для получения подробностей по данному этапу перейдите по ссылке.
Критерии достижения:
- Реализованы API Views для основных страниц сервиса (без админки):
- Вход
- Регистрация
- Список товаров
- Карточка товара
- Корзина
- Подтверждение заказа
- Спасибо за заказ
- Заказы
- Заказ
Для получения подробностей по данному этапу перейдите по ссылке.
Критерии достижения:
- Полностью работающие API Endpoint
- Корректно отрабатывает следующий сценарий:
- пользователь может авторизироваться;
- есть возможность отправки данных для регистрации и получения email с подтверждением регистрации;
- пользователь может добавлять в корзину товары от разных магазинов;
- пользователь может подтверждать заказ с вводом адреса доставки;
- пользователь получает email с подтверждением после ввода адреса доставки;
- Пользователь может переходить на страницу "Заказы" и открывать созданный заказ.
Для получения подробностей по данному этапу перейдите по ссылке.
Обязательное условие: Базовая часть полностью готова.
Критерии достижения:
- Реализованы API views для страниц админки сервиса.
Для получения подробностей по данному этапу перейдите по ссылке.
Критерии достижения:
- Создано Celery-приложение c методами:
- send_email
- do_import
- Создан view для запуска Celery-задачи do_import из админки.
Для получения подробностей по данному этапу перейдите по ссылке.
- Создать docker-файл для сборки приложения.
- Предоставить инструкцию для сборки docker-образа.
- Создать docker-compose файл для развертывания приложения локально (с БД и необходимыми сервисами)