Modify activity calculation logic
Из-за большого количества проблема на macOS с бинарными зависимостями, мы решили не считать больше количество движений клавиатуры/мыши для macOS. Вместо этого, мы считаем процентный показатель активности — соотношение длины интервала ко времени, в которое совершаются какие-то активности.
- То есть, если в пятиминутный интервал пользователь всё время двигал мышкой — активность будет 100%.
- Если в пятиминутный интервал, я две минуты двигал мышкой, а потом три минуты тыкал клавиатуру — активность будет 100%.
- Если я минуту адски хуярил по клавиатуре и настучал 1000 нажатий, а потом ушёл пить чай — активность будет 20%.
- Если я в течении пяти минут каждую секунду нажимаю по одному разу, то активность будет 100%.
В общем, с моей точки зрения, нужно сделать что-то вроде того:
- Добавить поле activity_fill к интервалу, содержащее в себе число 0...100, равное проценту времени активности ко времени интервала
- Рендерить на фронте у интервалов один прогрессбар, отражающий именно этот процент.
- При наведении мыши на прогрессбар, если значения count_mouse, count_keyboard IS NOT NULL, то в хинте показывать их текстом, типа "Pressed keyboard X times\nMoved mouse Y times" (X — count_keyboard, Y — count_mouse).
- Если эти значения таки NULL, то показывать текстом чот типа "Mouse and Keyboard events cannot be counted on this platform.\nThis user is being active for XX% of time during this interval", где XX — это значение activity_fill.
- Если у интервала нет значения activity_fill, то делаем дичь и считаем процент сами (возможно, в рамках миграции). Исторические данные в это нормально не сведёшь, но можно считать по формуле наподобии:
activity_fill = (count_mouse / 15 + count_keyboard / 3)
В итоге, получается что клиент будет пушить:
- count_keyboard, count_mouse и activity_fill на Windows и Linux
- только activity_fill на macOS
Соответственно, нужно подстроить валидацию входящих параметров под это дело.
Edited by Dmitry