Skip to content
Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
49 lines (36 sloc) 3.94 KB

описание

устройство отправляет сообщения (назовем их пакеты) с навигационными данными и данными об активности

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

авторизационные данные находятся в заголовке HTTP, payload в теле сообщения, все как обычно

существует 2 вида пакетов:

пакет "Трек" содержит поля:

  • int8 статус устройства
  • int32 таймстамп в UTC
  • floаt "lat" широта в градусах
  • float "lon" долгота в градусах
  • int8 высота в метрах
  • int8 "accu" точность в метрах

пакет "Активность" содержит поля:

  • int8 статус устройства
  • int32 таймстамп в UTC
  • int8 тип активности (0 - сон,1 - шаг,3 - галоп,6 - рысь,255 - шаги не измеряются)
  • int кол-во шагов

эти пакеты отправляются независимо. пакеты "трек" отправляются только когда устройство в режиме прогулки. пакеты активность отправляются почти всегда

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

сервис должен уметь:

  • отсеивать дублирующиеся пакеты (по типу пакета и timestamp)
  • отдавать последнюю координату устройства
  • отдавать текущие координаты устройств внутри определенного bounding box
  • сохранять и агрегировать статистику по активности, отдельно вычислять активность которая была в рамках записи трека
  • отправлять пуш уведомления при изменения статус устройства
  • описать алгоритм работы подсистемы, вычисляющей совместные прогулки

совместные прогулки

прогулка является совместной если 2 устройства находились рядом (на расстоянии до 6 метров) в течение N минут (N=10), вычисления производятся на основе данных трека (координаты и timestamp) стоит обратить внимание:

  • совместная прогулка может содержать более 2х устройств, необходимо вычислять пары прогулок для каждого из устройств
  • совместная прогулка может прерываться и возобновляться в рамках одного трека (гуляли-разошлись-потом опять встретились)
  • совместная прогулка одного устройства, может пересекаться с N совместных прогулок другого устройства
  • нет гарантии что треки попадают на сервер сразу (например, устройство одного участника загружает трек сразу, а устройство другого участника через 8 часов), продумать механизм дообсчета "старых" треков
You can’t perform that action at this time.