Приложение для создания маршрута по магазину после выбора интересующих продуктов. Можно изменить параметры построения для нужного результата. Имеются 3 страницы:
- «Домой» — это основная страница, на которой происходят все действия. Здесь можно выбрать продукт, узнать их нахождение в магазине, выбрать параметры построения, а также начать построение и лицезреть результат создания маршрута.
- «Помощь» - страница с инструкции по использованию системы.
- «Админ» - панель администратора, где можно обновлять свойства продуктов/категорий, добавлять и удалять продукты.
Также имеется функция изменения языка (русский/английский).
Приложение построенно на базе фреймвороков JS -> React и Python -> Flask,
- Отказоустойчивость при росте числа посетителей.
- Исправная работа всех описанных функций приложения.
- Create – создание продуктов в панели администратора.
@app.route('/api/product', methods=['POST'])
def add_product():
id = request.json.get("id", None)
name = request.json.get("name", None)
image = request.json.get("image", None)
description = request.json.get("description", None)
category_id = request.json.get("category_id", None)
with app.app_context():
product = db.session.query(Product).filter(Product.id==id).first()
if id == None:
new_product = Product()
new_product.name = name
new_product.image = image
new_product.category_id = category_id
new_product.description = description
db.session.add(new_product)
db.session.commit()
return jsonify({'msg': 'Вы добавили продукт'}), 200
elif id != None:
product.name = name
product.image = image
product.description= description
product.category_id = category_id
db.session.commit()
return jsonify({'msg': 'Вы обновили продукт'}), 200
return jsonify({'msg': 'Не правильные данные'}), 401
- Read – загрузка категорий и продуктов из базы данных.
@app.route('/categories', methods=['GET'])
def categories_get():
categories = Category.query.all()
categoriesarray = []
for category in categories:
categoriesarray.append(category.to_json)
return jsonify(categories=categoriesarray)
@app.route('/categories', methods=['GET'])
def categories_get():
categories = Category.query.all()
categoriesarray = []
for category in categories:
categoriesarray.append(category.to_json)
return jsonify(categories=categoriesarray)
- Update – обновление свойств категорий/продуктов в панели администратора.
@app.route('/category', methods=['POST'])
def update_category():
id = request.json.get("id", None)
name = request.json.get("name", None)
start_x = request.json.get("start_x", None)
start_y = request.json.get("start_y", None)
end_x = request.json.get("end_x", None)
end_y = request.json.get("end_y", None)
with app.app_context():
category = db.session.query(Category).filter(Category.id == id).first()
if id != None:
category.name = name
category.start_x = start_x
category.start_y= start_y
category.end_x = end_x
category.end_y = end_y
db.session.commit()
return jsonify({'msg': 'Вы обновили категорию'}), 200
return jsonify({'msg': 'Не правильные данные'}), 401
- Delete – удаление продуктов в панели администратора.
@app.route('/api/productremove', method=['POST'])
def delete_product():
id = request.json.get("id", None)
with app.app_context():
product = db.session.query(Product.filter(Product.id == id).first())
if product:
db.session.delete(product)
db.session.commit()
return jsonify({'msg': 'Вы удалили продукт'}), 200
return jsonify({'msg': 'Неправильные данные'}), 401
Система запущена на виртуальной машине (Compute Cloud), создана сеть с подсетями и группа безопасности для входящего и исходящего трафика (Virtual Private Cloud), кластер MySQL для хранения продуктов и их категорий (Managed Service for MySQL). Для хранения части статических файлов используется Object Storage. Для получения файлов из бакета используется API Gateway.
В качестве хранения данных используется кластер MySQL.
Таблица продуктов:
Таблица категорий:
Используется для хранения статических файлов приложения.
Не использовался
Используется API Gateway для получения статических файлов из бакета Object Storage. Спецификация
1.Главная страница yandex cloud:
2.Виртуальная машина с проектом
3.Диск виртуальной машины
4.База данных MySQL
5.Виртуальная сеть default и её подсети, используемые в проекте
6.Группа безопасности на исходящий трафик
7.Группа безопасности на входящий трафик
8.Object Storage
9.API Gateway
10.Чтение данных из бд
11.Обновление свойств продукта
12.Добавление продукта
13.Удаление продукта
14.Работоспособность системы