Как считается и передается время в сервис
Тайм-трекер в Shtab ведёт учёт рабочего времени сотрудника, которое передаётся в сервис для аналитики активности и эффективности.
Трекер осуществляет учёт активности пользователя в интервал времени. На старте он делает следующее:
1. Запоминает время начала трекинга (Тн) и определяет момент завершения интервала учёта (Тз)
Время Тз находится по алгоритму, который использует генератор случайных чисел, чтобы интервал между Тн и Тз всегда был разным, но его математическое ожидание было близко к 60 секундам;
2. Запускает механизм отслеживания пользовательской активности
Это нужно, чтобы для каждой секунды учётного интервала можно было узнать, совершал ли пользователь какие-нибудь действия с использованием клавиатуры или мышки;
3. Запускает механизм учёта времени активности
Это происходит при запуске трекера на выполнение задачи.
После начала учёта времени трекер ежесекундно выполняет следующие действия:
1. Проверяет наличие пользовательской активности
Если активности нет, запускается счётчик отключения трекинга;
2. Проверяет текущее время на условие превышения Тз
При выполнении этого условия трекер отправляет данные на сервер о завершённом учётном интервале, запоминает Тз в Тн, а для нахождения нового Тн выполняет предстартовые действия;
3. Получает данные о текущих пользовательских процессах
А также формирует статистику активного окна и приложения;
1. Обновляет значение счётчика в основном окне трекера;
2. Просматривает локальную базу данных и отправляет на сервер неотправленные завершённые учётные интервалы;
3. Проверяет время последней активности самого трекера
Это нужно для фиксации факта «засыпания» компьютера или перехода в состояние остановки трекера как фонового процесса.
В какой момент данные передаются на сервер
Данные об учётном интервале передаются на сервер в момент его завершения. Это может быть вызвано:
1. Достижением текущим временем величины равной или превышающей Тз;
2. Нажатием пользователем кнопки остановки трекинга;
3. Отсутствием активности пользователя на протяжении 5 минут;
4. Закрытием трекера.
Если при попытке отправки данных на сервер происходит ошибка, то через несколько секунд данные об интервале отправляются повторно. Это возможно, благодаря тому, что вся информация об учётном интервале предварительно сохраняется в локальной базе данных на компьютере пользователя.
Как долго хранятся данные об учётных интервалах
Данные об отправленных учётных интервалах хранятся примерно сутки. В локальной базе данных хранится 720 интервалов — по мере сохранения новых самые старые удаляются.
Как трекер ведёт себя при отсутствии подключения к интернету
Если отсутствует подключение — пользователь не сможет запустить трекер и начать вести учёт рабочего времени.
Если интернет стал отсутствовать после старта трекинга — трекер продолжает работать, завершённые учётные интервалы сохраняются локально, ежесекундно производятся попытки отправки их на сервер.
Для контроля процесса отправки данных трекер предоставляет пользователю список интервалов и возможность принудительной повторной отправки при возникновении ошибки.
Можно ли работать на нескольких устройствах и трекать время в один аккаунт
Да. В текущей реализации протокола авторизации пользователя не существует ограничений по количеству запускаемых трекеров с одной учётной записи.
Хотя запрета на несколько одновременно работающих трекеров нет, есть проверка сохраняемого учётного интервала на сервере. В итоге одновременная работа нескольких трекеров может привести к коллизиям на сервере и нарушению непрерывности учтённого времени.
Объясним на примере: Пользователь запустил трекер на 2 устройствах: стационарный компьютер и ноутбук.
Трекер компьютера фиксирует активность по задаче А, трекер ноутбука — по задаче Б.
Представим, что первый интервал будет короче на компьютере, а второй — на ноутбуке.
В результате сервер сохранит данные первого интервала задачи А и второго интервала задачи Б. При этом время начала второго интервала задачи Б будет позже завершения первого интервала задачи А.
Вместо ожидаемой двойной производительности пользователь получит меньше учтённого времени, чем при трекинге одной задачи 2 интервала подряд.
При других сценариях использования разных устройств для трекинга в одну учётную запись проблем не возникнет.
***
Если у вас остались вопросы – пишите нам в Telegram.