Giter Club home page Giter Club logo

python-final-diplom's Introduction

Дипломный проект профессии «Python-разработчик: расширенный курс»

Backend-приложение для автоматизации закупок

Цель дипломного проекта

Создадите и настроите проект по автоматизации закупок в розничной сети, проработаете модели данных, импорт товаров, API views.

Вам нужно:

  • разработать backend для сервиса заказа товаров,
  • усовершенствовать навыки работы с Django ORM через проработку моделей товаров и связанных сущностей,
  • реализовать импорт и экспорт товаров,
  • внедрить систему управления заказами,
  • оптимизировать методы с использованием асинхронности,
  • освоить работу со сторонними библиотеками и фреймворками,
  • подготовить документацию к проекту,
  • использовать AI инструменты для решения задач.

Чеклист готовности к работе над проектом

  1. Изучить материалы лекции подготовки к дипломной работе.
  2. Подготовить компьютер или виртуальную машину с ОС Linux или MacOS (не рекомендуем использовать Windows).
  3. Установить IDE с поддержкой Python: Pycharm, VS Code или др.
  4. Установить версию Python 3.10 или более позднюю.
  5. Установить AI-плагин из списка:

Инструкция к работе над проектом

Общее описание приложения

Приложение предназначено для автоматизации закупок в розничной сети через REST API.

Внимание! Все взаимодействие с приложением ведется через API запросы. Реализация фронтенд-приложения возможна только по желанию обучающегося

Пользователи сервиса:

  1. Клиент (покупатель):
  • делает ежедневные закупки по каталогу, в котором представлены товары от нескольких поставщиков,
  • в одном заказе можно указать товары от разных поставщиков,
  • пользователь может авторизироваться, регистрироваться и восстанавливать пароль через API.
  1. Поставщик:
  • через API информирует сервис об обновлении прайса,
  • может включать и отключать приём заказов,
  • может получать список оформленных заказов (с товарами из его прайса).

Задача

Необходимо разработать backend-часть сервиса заказа товаров для розничных сетей на Django Rest Framework.

Базовая часть:

  • разработка сервиса под готовую спецификацию (API),
  • возможность добавления настраиваемых полей (характеристик) товаров,
  • импорт товаров,
  • отправка накладной на email администратора (для исполнения заказа),
  • отправка заказа на email клиента (подтверждение приёма заказа).

Продвинутая часть (необязательная к выполнению, не влияет на получение зачёта):

  • экспорт товаров,
  • админка заказов (проставление статуса заказа и уведомление клиента),
  • выделение медленных методов в отдельные асинхронные функции (email, импорт, экспорт).

Обратите внимание!

В репозитории приведён готовый пример с базовой частью проекта. Вы можете работать с проектом, выбрав один из двух вариантов:

  • разработать свою версию, исходя из текстового описания базовой части проекта,
  • взять за основу пример из репозитория, изучить его и выполнить продвинутую часть задания.

Вы можете интерпретировать текстовое описание проекта по-своему. Работа над дипломом - это в первую очередь творческий процесс. Главное - отсутствие плагиата (не сдавать работы других студентов).

Исходные данные для проекта

  1. Общее описание сервиса
  2. Спецификация (API) - 1 шт.
  3. Файлы yaml для импорта товаров - 1 шт.
  4. Базовый пример API Сервиса для магазина

Этапы разработки

Разработку backend рекомендуется разделить на следующие этапы.

Базовая часть:

  1. Создание и настройка проекта.
  2. Проработка моделей данных.
  3. Реализация импорта товаров.
  4. Реализация API views.
  5. Полностью готовый backend.

Продвинутая часть (выполняется по желанию, если базовая часть полностью готова):

  1. Реализация forms и views админки склада.
  2. Вынос медленных методов в задачи Celery.
  3. Создание docker-compose файла для приложения.

Разработку следует вести с использованием git (github/gitlab/bitbucket) с регулярными коммитами в репозиторий, доступный вашему дипломному руководителю. Старайтесь делать коммиты как можно чаще.

Этап 1. Создание и настройка проекта

Критерии достижения

  1. Вы имеете актуальный код данного репозитория на рабочем компьютере.
  2. У вас создан Django-проект, и он запускается без ошибок.

Для получения подробностей по данному этапу перейдите по ссылке.

Этап 2. Проработка моделей данных

Критерии достижения

  1. Созданы модели и их дополнительные методы.

Для получения подробностей по данному этапу перейдите по ссылке.

Этап 3. Реализация импорта товаров

Критерии достижения

  1. Созданы функции загрузки товаров из приложенных файлов в модели Django.
  2. Загружены товары из всех файлов для импорта.

Для получения подробностей по данному этапу перейдите по ссылке.

Этап 4. Реализация APIViews

Критерии достижения

  1. Реализованы API Views для основных страниц сервиса (без админки):
    • Авторизация
    • Регистрация
    • Получение списка товаров
    • Получение спецификации по отдельному товару в базе данных
    • Работа с корзиной (добавление, удаление товаров)
    • Добавление/удаление адреса доставки
    • Подтверждение заказа
    • Отправка email c подтверждением
    • Получение списка заказов
    • Получение деталей заказа
    • Редактирование статуса заказа

Для получения подробностей по данному этапу перейдите по ссылке.

Этап 5. Полностью готовый backend

Критерии достижения

  1. Полностью работающие API Endpoint'ы
  2. Корректно отрабатывает следующий сценарий:
    • пользователь может авторизироваться,
    • есть возможность отправки данных для регистрации и получения email с подтверждением регистрации,
    • пользователь может добавлять в корзину товары от разных магазинов,
    • пользователь может подтверждать заказ с вводом адреса доставки,
    • пользователь получает email с подтверждением после ввода адреса доставки,
    • пользователь может переходить на страницу «‎Заказы» и открывать созданный заказ.

Для получения подробностей по данному этапу перейдите по ссылке.

Полезные материалы

  1. Информация о сервисе
  2. Спецификация API
  3. Описание страниц сервиса

Продвинутая часть (выполняется по желанию, не влияет на получение зачёта)

Обязательное условие: базовая часть проекта полностью готова.

Этап 6. Реализация API views админки склада

Критерии достижения

  1. Реализованы API views для страниц админки сервиса.

Для получения подробностей по данному этапу перейдите по ссылке.

Этап 7. Вынос медленных методов в задачи Celery

Критерии достижения

  1. Создано Celery-приложение c методами:
    • send_email,
    • do_import.
  2. Создан view для запуска Celery-задачи do_import из админки.

Для получения подробностей по данному этапу перейдите по ссылке.

Этап 8. Создание docker-compose файла для приложения

  1. Создать docker-compose файл для сборки приложения.
  2. Предоставить инструкцию для сборки docker-образа.

Важно: не нарушайте дедлайн сдачи, возникающие вопросы задавайте в чате с дипломным руководителем.


Правила приёма дипломной работы

  1. Проект разместить в GitHub. Ссылка на дипломную работу должна оставаться неизменной, чтобы дипломный руководитель мог видеть ваш прогресс.
  2. Сдавать финальный вариант дипломной работы в личном кабинете Нетологии.

Критерии оценки

Зачёт по дипломной работе можно получить, если работа соответствует критериям:

  • работоспособный проект в репозитории с документацией по запуску,
  • выполненная базовая часть проекта,
  • наличие собственных комментариев к коду,
  • использование сторонних библиотек и фреймворков.

python-final-diplom's People

Contributors

a-iskakov avatar oksneto avatar eshmargunov avatar artrey avatar hunteena avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.