Skip to content

Latest commit

 

History

History
387 lines (260 loc) · 15.3 KB

File metadata and controls

387 lines (260 loc) · 15.3 KB

Yet Another Delivery

Содержание

  1. Техническое задание
  2. Технологии
  3. Участники команды
  4. Таблица рисков

Техническое задание

Описание предметной области

Cервис осуществляет прием заказов на доставку и распределяет их по ресторанам и курьерам.

Основные сущности:

  • Ресторан - стороннее лицо, предоставляющее приложению доступное меню, принимающее от сервиса заявки на приготовление заказов.
  • Меню - список доступных позиций, предоставляемых рестораном.
  • Позиция - блюдо или иная продукция с определенной стоимостью, производимая рестораном и доступная к доставке через приложение.
  • Заказ - набор позиций из одного ресторана, сформированный пользователем для единовременной доставки.
  • Пользователь - человек, осуществляющий заказы через мобильное приложение.
  • Курьер - человек, назначаемый приложением для забора заказа из ресторана и доставки его пользователю.
  • Администратор - доверенное лицо, обладающее правами внесения новых курьеров и ресторанов в систему.

Функциональные требования

Сценарии покупателя

Регистрация

  • Пользователь заполняет форму регистрации: телефон, имя, адрес (город, улица, дом, корпус/строение, подъезд, квартира/офис, этаж), пароль, подтверждение пароля

Телефон пользователя не верифицируется

  • Пользователь нажимает кнопку "Зарегистрироваться"
  • Пользователь получает подтверждение об успешной регистрации и попадает на страницу авторизации

Авторизация

  • Пользователь заполняет форму авторизации (телефон, пароль)
  • Пользователь нажимает кнопку "Войти"
  • Пользователь попадает на страницу списка ресторанов

Редактирование профиля

  • Пользователь переходит на вкладку "Профиль"
  • Пользователь заполняет форму редактирования профиля (имя, почта, адрес)
  • Пользователь нажимает кнопку "Сохранить"
  • Пользователь получает подтверждение об успешном изменении профиля

Добавление блюда в корзину

  • Пользователь выбирает ресторан из списка ресторанов, отсортированных по близости к локации пользователя, указанной в профиле
  • Пользователь выбирает блюдо из меню
  • Пользователь вводит количество экземпляров выбранного блюда
  • Пользователь нажимает кнопку "Добавить в корзину"
  • Пользователь получает подтверждение о добавлении блюда в корзину (кнопка "Добавить в корзину" заменяется на кнопку "В корзине")

Удаление блюда из корзины

  • Пользователь переходит на вкладку "Корзина"
  • Пользователь нажимает на кнопку "Удалить из корзины" рядом с определенным блюдом из списка блюд в корзине
  • Пользователь получает подтверждение об удалении блюда из корзины (блюдо удаляется, стоимость заказа пересчитывается)

Изменение количества экземпляров блюда в корзине

  • Пользователь переходит на вкладку "Корзина"
  • Пользователь нажимает на кнопку уменьшения (минус) или увеличения (плюс) рядом с определенным блюдом из списка блюд в корзине

Оформление заказа

  • Пользователь переходит на вкладку "Корзина"
  • Пользователь нажимает на кнопку “Оформить заказ”
  • Пользователь переходит на страницу оформления заказа с полями для ввода
  • Пользователь указывает адрес доставки (по умолчанию выставлен адрес, указанный при регистрации)
  • Пользователь вводит реквизиты банковской карты (номер, имя, срок действия)
  • Пользователь получает подтверждение об успешном оформлении заказа (пользователь перенаправляется на вкладку "История заказов", текущий заказ отображается первым в списке истории заказов и имеет статус "Готовится")

Просмотр истории заказов

  • Пользователь переходит на вкладку "История заказов"
  • Пользователь просматривает историю заказов

Сценарии курьера

Администрация сервиса регистрирует курьеров через внутренний интерфейс

Авторизация

  • Курьер заполняет форму авторизации (телефон, пароль)
  • Курьер нажимает кнопку "Войти"
  • Курьер попадает на вкладку "Работа"

Начало работы

  • Курьер переходит на вкладку "Работа"
  • Курьер устанавливает статус работы в "Работает"
  • Курьер получает подтверждение об успешном изменении статуса

Получение заказа

  • Курьер получает уведомление о получении заказа на доставку

Под уведомлением понимается, что новый заказ появляется на экране нового заказа в приложении

  • Курьер переходит по уведомлению на вкладку "Заказы", видит номер заказа, статус заказа - "Готовится", адрес ресторана и адрес заказчика

Изменение статуса заказа

  • Курьер переходит на вкладку "Заказы"
  • Курьер выбирает заказ из списка
  • Курьер меняет статус заказа ("В пути", "Доставлено"); после выставления статуса “Доставлено” принимает решение о дальнейшем статусе работы
  • Курьер получает подтверждение об успешном изменении статуса

Ресторану для взаимодействия с сервисом предоставляется API: авторизация, добавление блюд в меню, просмотр списка заказов, изменение статуса заказа и статуса работы. Система регистрирует рестораны через внутренний интерфейс.

Диаграмма последовательности для выполнения доставки заказа

sequence-diagram

Технологии

Репозитории

💻 Backend

📱 Android

☎️ iOS

Стек

Backend

Android

iOS

Ограничения по клиентскому оборудованию и ОС

Backend

Android

  • Android 8.0 Oreo (API 26) и выше
  • 4+ ГБ RAM
  • Разрешения
    • Интернет
    • Геоданные

iOS

  • iOS 13.0 и выше
  • iPhone 6S и более новые модели
  • Разрешения
    • Интернет
    • Геоданные

Регламенты кодирования

Backend

Android

iOS

Правила ветвления

Шпаргалка по git-flow

git-flow

Правила версионирования

Semantic Versioning 2.0

Участники команды

Backend

Vasyukov Alexey Volkov Egor Kolesnikov Daniil Moskovskiy Dmitriy

Васюков Алексей a.vasyukov1@yandex.ru

Волков Егор volkovegor2000@yandex.ru

Колесников Даниил daniil.kolesnikoff@gmail.com

Московский Дмитрий dimez77@mail.ru

Android application

Ryazanov Maxim Stepanenko Vladimir Polyakova Kseniya Levushkin Ilya

Рязанов Максим ryazanovms@yandex.ru

Степаненко Владимир vovac12@gmail.com

Полякова Ксения KsenyaPolyakovaaa@gmail.com

Левушкин Илья lik17u699@student.bmstu.ru

iOS application

Imanov Shamil Timonin Anton Timonin Egor

Иманов Шамиль

studinfobmstu@yandex.ru

Тимонин Антон

antonandegor@mail.ru

Тимонин Егор

egor3359@bk.ru

Таблица рисков

Риск 1

Свойство Описание
Приоритет 1
Риск Нехватка времени из-за учебной и рабочей нагрузки
Состояние Анализ
Вероятность Высокая
Урон Высокий
Воздействие Высокое
Тип стратегии Принятие
Стратегия Сокращение покрытия тестами, не реализуем историю заказов и редактирование профиля
Ответственный Все

Риск 2

Свойство Описание
Приоритет 2
Риск Болезнь участника команды
Состояние Анализ
Вероятность Средняя
Урон Высокий
Воздействие Высокое
Тип стратегии Принятие
Стратегия Другой участник берет на себя работу заболевшего
Ответственный Все

Риск 3

Свойство Описание
Приоритет 3
Риск Взаимодействие с новыми технологиями
Состояние Анализ
Вероятность Средняя
Урон Средний
Воздействие Среднее
Тип стратегии Снижение
Стратегия Обращение к интернет-ресурсам и профессиональной литературе
Ответственный Все