Skip to content

Track your favourite grocery products from different shops.

License

Notifications You must be signed in to change notification settings

tsudd/goods-tracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

99 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Khrystsenka. 953504. Products agregation.

Track your favourite goods in different belarusian shops.

Техническое задание для Goods-tracker app

Введение

Цели

Цель этого документа представить детальное описание состава и функциональности онлайн сервиса для отслеживания информации о (продовольственных) товарах, доступных в популярных розничных магазинах.

Соглашения о терминах

Термин Определение
Трекер Здесь и далее используется как синоним для названия проекта, агрегатора, приложения, сервиса и продукта в целом.
Предмет Единичный товар отдельного магазина, просто считанный с сайта магазина.
Товар Совокупность обработанных сервисом товаров из разных магазинов. В идеале связывает предметы из разных магазинов, которые олицетворяют один товар.
Участник Зарегистрированный пользователь.
Пользователь Любой человек использующий сервис посредством интерфейса пользователя.
"Любимые" Список наиболее интересных пользователю товаров (предметов), которые он хочет сохранить и иметь быстрый доступ.

Предполагаемая аудитория

Предназначен в первую очередь для разработчиков и потенциальных участников проекта.

Масштаб проекта

Трекер должен представлять собой каждодневный инструмент для рядовых пользователей, которые желают подходить к покупкам более расчетливо. Приложение создано для автоматизации поиска различных товаров в популярных белорусских розничных магазинах, с целью нахождения наиболее выгодных предложений. Посредством разработанных инструментов, пользователь сможет находить подходящие ему предложения, а также экономить деньги и, возможно, время.

Сервис собой регулярно обновляемую базу данных товаров (предметов), доступную посредством онлайн сервиса. Сервис работает по принципу web-приложения, доступного в наиболее популярных браузерах: Chrome, Firefox, Opera.

Приложение должно предоставлять следующий функционал:

  1. Поиск посредством поисковой строки агрегированных товаров с разных площадок;
  2. Составление корзины, с возможностью промсотра стоимости ее общей стоимости (или ее части) на разных торговых площадках;
  3. Просмотр более детальной информации о товаре (предмете);
  4. Построение замкнутого маршрута покупки набранной корзины через те магазины, объекты которых были добавлены;
  5. Заказ корзины (или ее части) в магазине, который предоставляет услуги доставки;
  6. Управление списком "Любимых" товаров: добавление, удаление и отправка обновлений по объекту на почту (если нужно).
  7. Возможности авторизации и аутентификации.
  8. Регистрация новых пользователей.
  9. Расширяемый и конфигурируемый сборщик данных (возможность добавлять новые парсеры и скраберы, возможность управлять работой посредством файла конфигурации).
  10. Сопоставление предметов и их связывание в товары посредством обученной модели после их сборки.
  11. Логические компоненты приложения должны быть помещены в контейнеры для последующего развертывания.

Ссылки на источники

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

Общее описание

Видение продукта

Трекер предназначен быть каталогом продовольственных товаров, который автоматически обновляется с определенной периодичностью (например неделя), выдавая только самую актуальную информацию. Более того, помимо обычного считывания информации с разных площадок, он посредством обученной модели постоянно соотносит предметы и связывает их воедино, для более удобного поиска и аналитики цен.

Высокоуровневая диаграмма продукта представлена на фигуре 1.

Компоненты трекера
Фигура 1. Высокоуровневое взаиморасположение компонентов проекта

Классы и характеристики пользователей

Компонент Описание
Goods-tracker web app Web приложение доступное в браузере. Предоставляет интерфейс пользователя для доступа к поиску и просмотра товаров (предметов), редактирование корзины, вход, регистрации, просмотру списка "Любимых"
Goods-tracker app Серверное приложение, обрабатывающее запросы поступающие со стороны клиента (web приложения запущенного в браузере).
HDB Client Библиотека поставляемая SAP для подключения к SAP HANA/SAP HANA Cloud.
Goods collector Движок для сбора данных о предметах с торговых площадок, посредстом срапинга web страниц.
Items matcher Модуль, отвечающий за сопоставление товаров из различных магазинов на основе обученной модели.
HDI container connector Облачный модуль-оркестратор, отвечающий за управление подключениями к базе данных.
tracker-db Схема базы данных приложения, развернутая на SAP HANA Cloud.
OAuth service Облачный сервис Firebase, который берет на себя обработку пользовательской авторизации и аутентификации и хранит информацию о них.

Функциональность продукта

Среди основных функций продукта будут поиск товаров по названию и описанию, отслеживание товаров (предметов) (например почтовая рассылка с обновлениями объектов) зарегестрированными пользователями, сборка корзины и анализ ее стоимости на разных площадках, возможность заказа корзины (или ее части) на определенной площадке или поиск ближайшего магазина с актуальным товаром.

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

Среда функционирования продукта (операционная система)

  • СФ-1: сервис должен корректно функционировать в следующих браузерах: Firefox версии 86 и выше, Google Chrome (все версии), Opera (после 2015г).
  • СФ-2: контейнер с серверной частью должен разворачиваться и работать в системах с основой на Linux.
  • СФ-3: сборщик данных также контейнеризирован с возможностью развертывания и запуска на сервере посредстом Job scheduler'a с определенным графиком.
  • СФ-4: база данных также должна разворачиваться в виде контейнера или облачного сервиса.
  • СФ-5: сервис OAuth расположен в облаке, на основе Firebase

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

  • О-1: К качестве необходимого минимума агрегируемых площадок выделим следующие: Соседи, Евроопт, Green.

Документация для пользователей

Допущения и зависимости

  • Д-1: пренебрежение некоторыми постулатами при разработки интерфейса пользователя в силу ограниченности по времени и большим требованиям к функциональности и работе сервера, на которой строится пользовательский опыт. На UI будет выделено меньше всего времени, но минимум в виде рабочей функциональности и стабильности должен быть соблюден.
  • Д-2: Так как адаптаптация интерфейса для мобильных устройств требует дополнительных ресурсов и отдельного подхода, допускается пренебречь этим на данном этапе.
  • Д-3: В силу того, что задача связывания объектов (matching'a) в индустрии на данный момент не решена качественно, а времени и экспертизы на ковку своей модели не имеется, то допускается, что обученная модель может иметь относительно высокую вероятность ошибки. На стадии проектирования указать допустимую вероятность трудно.

Функциональность системы

Данный параграф описывает варианты использования (use cases) функциональности продукта, как пользователи могут взаимодействовать с проектом.

Всевозможные варианты использования представлены на Фигуре 2.

Use cases
Фигура 2. Варианты использования

UC-1. Поиск товаров (предметов)

Описание и приоритет

Пользователь (не обязательно зарегестрированный) заходит в web-приложение через браузер, через Меню выбирает нужную секцию и получает доступ к поисковой строке по товарам (предметам).

Пошаговое описание

  1. Пользователь запускает приложение.
  2. На панели "Меню" пользователь выбирает секцию "Поиск".
  3. Должна отобразиться поисковая строка, фильтры и лист, заполняемый объектами поиска. Каждый элемент листа содержит информацию об определенном объекте (название, цена, скидка, когда в последний раз был обновлен, возможное изображение).
  4. Далее пользователь может:
    • Пролистывать выведенный лист и переключаться между страницами вывода, посредством панели (pagination).
    • Воспользоваться поиском, введя строку и нажать на "лупу". Далее как в предыдущем пункте данного шага.
    • Настраивать фильтры поиска (дата обновления товара, цена, скидка), затем как в предыдущем пункте данного шага.
    • Переходить на страницу товара (предмета) для получения более детальной информации, после нажатия на очередной товар(предмет).
    • Добавлять/удалять товар (предмет) в корзину(ы), используя кнопки "Добавить"/"Удалить". Также должна быть возможность управлять количеством добавляемых товаров.

UC-2. Просмотр страницы товара.

Описание и приоритет

Каждый товар(предмет) должен иметь свою страницу с более детальной информацией, которую может просматривать пользователь.

Пошаговое описание

  1. Пользователь нажимает на плитку товара(предмета), например в листе с результатами поиска на поисковой странице.
  2. Открывается страница, где отображено изображение товара (предмета), его цена, скидка, график цен (если обновлялся ранее), магазин(ы), к которому(ым) он пренадлежит, описание, ссылка на источник.
  3. Далее пользователь может:
    • С помощью кнопок "Добавить"/"Удалить" добавить или удалить товар (предмет) соотвественно, отредактировав тем самым корзину. Также должна быть возможность управлять количеством добавляемых товаров.
    • С помощью кнопок "Добавить"/"Удалить" отредактировать список "Любимые" (если он авторизованб UC-7 и UC-6).
    • Вернуться назад.

UC-3. Составление корзины

Описание и приоритет

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

Пошаговое описание

  1. Пользователь запускает приложение.
  2. На отображенном интерфейсе на панели "Меню" пользователь выбирает секцию корзины.
  3. После перехода на следующую страницу на интерфейсе слева отображается строка поиска товаров (предметов) для их добавления "на месте". По середине набор уже добавленных объектов (если они были добавлены ранее). И справа информация о корзине (общая сумма, сумма по магазинам и т.д.), которая динамически изменяется в соответствии с модификациями в корзине.
  4. Пользователь может:
    • Посредстом упрощенной строки поиска находить больше объектов, которые будут выводится в виде ленты слева. Должна быть возможность добавить товар в основной набор посредством кнопки "Добавить" на плитке товара. Также должна быть возможность управлять количеством добавляемых товаров.
    • Удалить товар (предмет) из основного набора, тем самым манипулируя общей информацией о корзине на панели справа.
    • На панели справа должна отображаться общая сумма покупки товаров из основного набора, со скидками и без. Также должна выводиться стоимость по отдельным магазинам, исходя из того есть ли в этом множестве товары (предметы) принадлежащие определенной площадке.
    • Кнопка "Построить маршурт", которая позволяет построить путь за покупками (при нажатии переход к UC-4).
    • Кнопка "Заказать в магазине" должна находится рядом с соответствующим показателем суммы по магазину, который поддерживает доставку (при нажатии переход к UC-5).

UC-4. Построение маршрута покупок

Описание и приоритет

После составления корзины, пользователь должен иметь возможность проложить маршрут, по которому он будет покупать собранную корзину, если его это удовлетворяет. Иходя из собранной корзины, система должна понимать в каких магазинах следует купить отдельные товары и проложить кольцевой маршрут, по которому пользователь сможет обойти каждый магазин наиболее быстрым путем и вернутся в изначальную точку.

Данная функциональность имеет низкий приоритет

Пошаговое описание

  1. После нажатия на кнопку "Построить маршрут" на странице с составлением корзины, открывается форма с интегрированным виджетом Яндекс.Карты, который просит ввести текущую локацию.
  2. Пользователь вводит свой адрес и виджет показывает цикличный маршрут между его локацией и ближайшими точками определенных магазинов, где можно купить выбранные объекты (или их часть).
  3. Далее возможен экспорт построенного пути в соц. сети или приложения.

UC-5. Заказ в магазине.

Описание и приоритет

Функция должна обеспечивать возможность заказывать товары (предметы) набранные в корзине (или их часть) в определенном магазине, если он предоставляет услугу доставки на дом.

Данная функциональность имеет низкий приоритет.

Пошаговое описание

  1. После нажатия на кнопку "Заказать в магазине" на странице управления карзиной (UC-3) пользователь должен быть перенаправлен на страницу магазина, чтобы перейти к оформления заказа. В идеале корзина магазина должна заполняться автоматически в соотвествии с выбранным набором объектов.

UC-6. Регистрация.

Описание и приоритет

Если пользователь хочет получить дополнительную функциональность в виде рассылки, добавления товара (предмета) в "Любимые", оповещении о появлении скидок на "Любимые" товары (предметы), то ему необходимо зарегистрироваться.

Пошаговое описание

  1. Пользователь запускает приложение. В секции "Меню" нажимает на кнопку "Регистрация".
  2. После перехода на следующую страницу, появляется форма для регистрации, которая содержит: поля для ввода имени, почты и пароля.
    • В случае невалидного адреса, уже существующего адреса, недопустимых символов в пароле или при несоотвествии двух паролей должно выводиться соответсвтующее сообщение в виде всплываюшего окна.
    • В случае ошибки системы, должно выводиться соответствующее сообщения в виде всплывающего окна.
  3. В случае успеха регистрации пользователь перенаправляется на главную страницу. Теперь его сессия активна.

UC-7. Вход.

Описание и приоритет

Для доступа к дополнительной функциональности в виде работы со списком "Любимые", оповещении об обновлениях в отслеживаемых товарах, пользователь должен авторизоваться в системе посредстом страницы "Вход".

Пошаговое описание

  1. Пользователь запускает приложение. В секции "Меню" нажимает на кнопку "Вход".
  2. После перехода на следующую страницу, появляется форма для авторизации, которая содержит: поля для ввода почты и пароля.
    • В случае невалидного адреса, недопустимых символов в пароле должно выводиться соответсвтующее сообщение в виде всплываюшего окна.
    • В случае ошибки системы, должно выводиться соответствующее сообщения в виде всплывающего окна.
  3. В случае успеха авторизации пользователь перенаправляется на главную страницу. Теперь его сессия активна.

UC-8. Добавление (удаление) в (из) "Любимые".

Описание и приоритет

Иногда участнику важны какие-то определенные товары (предметы), динамика и отслеживание их цен. Эта информация может быть полезна для последующей рассылки участникам сообщения о новых выгодных предложених с их любимыми товарами (предметами). Для этого у пользователя должна быть возможность добавления объектов в список "Любимых".

Пошаговое описание

  1. Участник совершил поиск на поисковой странице или на странице управления корзиной, в результате чего появился список объектов в виде листа.
  2. Каждый элемент листа имеет кнопку "Добавить в любимые" (при условии что участник вошел в систему), при нажатии на которую, объект добавляется в список "Любимые" и появляется на странице "Любимые".
  3. Если участник хочет убрать объект из "Любимых", он может нажать на эту кнопку повторно. Объект должен перестать отображаться на странице "Любимые".

UC-9. Просмотр списка "Любимые".

Описание и приоритет

Участнику необходим инструмент для управления списком с наиболее интересными ему объектами. Для этого должна существовать отдельная страница с возможностью просмотра добавленных в "Любимые".

Пошаговое описание

  1. Пользователь в секции "Меню" нажимает на кнопку "Любимые".
  2. После перехода на страницу, перед ним отображается список:
    • Если пользователь авторизован, то список заполняется добавленными ранее объектами. В данном случае также возможна навигация на страницу с более детальной информацией об объекте, а также удаление объектов из "Любимых" посредстом нажатия кнопки "Удалить" на соотвествующем объекте, после чего он должен пропасть.
    • Если пользователь авторизован, но добавленных объектов еще нет, то отображается соответствующее сообщение и предложение перейти к поиску.
    • Если пользователь неавторизован, то должно отображаться сообщение с предложением войти или зарегестрироваться, чтобы получить доступ к списку.

Требования к внешним интерфейсам

Интерфейсы пользователя

  • ИП-1: Каждая страница должна сопровождаться коротким комментарием и руководством о том, как использовать ее.
  • ИП-2: Объекты, которые были обновлены более недели назад, должны помечатся соответствующим флагом, оповещающий пользователей, что информация может быть неактуальна на данный момент.

Программные интерфейсы

  • ПИ-1: Web-приложение трекера
    • ПИ-1.1: Приложение в браузере (Goods-tracker web app) взаимодействует с сервером (Goods-tracker app) посредством выстроенного REST API для обмена данными.
  • ПИ-2: Серверная логика
    • ПИ-2.1: Сервер (Goods-tracker app) взаимодействует с БД (tracker-db) посредством авторизированного SQL соединения, в рамках HDB Client.
    • ПИ-2.2: Сервер (Goods-tracker app) взаимодействует с OAuth сервисом посредством SSL сертификата, заранее выданного сервисом Firebase.
  • ПИ-3: Сборщик данных (Data collector)
    • ПИ-3.1: Сборщик (Data collector) взаимодействует с БД (Relative DB) посредством авторизированного SQL соединения, в рамках библиотеки HDB Client.
    • ПИ-3.2: Добавление новой тарговой площадки к сборщику данных не должно требовать никаких модификаций уже написанном движке сборщика, реализация должна происходить только из позиции последующего расширения (например реализации интерфейса и включения его в пулл обработчика).
  • ПИ-4:
    • ПИ-4.1: БД (tracker-db) должно поставлять отдельные отображения (SQL View) для каждой задаче, выдвигаемой к БД (например чтение товаров, чтение списка "Любимые" определенного пользователя). Прямых обращений к таблицам быть не должно.

About

Track your favourite grocery products from different shops.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published