/yad-docs

Yet another delivery project documentation and specification

MIT LicenseMIT

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
Риск Взаимодействие с новыми технологиями
Состояние Анализ
Вероятность Средняя
Урон Средний
Воздействие Среднее
Тип стратегии Снижение
Стратегия Обращение к интернет-ресурсам и профессиональной литературе
Ответственный Все