тестовое задание

тестовое задание

KB

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

вариант на js https://github.com/barbuza/kb-timetracking. код используется в продакшне на фронтенде. когда понадобилось уметь делать такую же штуку на бэкэнде - сделали cli интерфейс и пользовались через subprocess.

некое подобие описания того, что там происходит:

цель - посчитать сколько времени два пользователя были онлайн в рамках одного урока. работает по модели event sourcing. типы событий start, end, pause, unpause, connect, disconnect (более подробное определение можно найти в исходниках. в описании событий используются сокращения t: type, c: createdAt, u: userId, d: deviceId). урок считается активным если он не на паузе, не закончен и оба пользователя подключены. из за жестоких реалий интернета иногда событие disconnect может теряться, поэтому connect отправляется с некоторой периодичностью, пропуск считается отключением. периодичность - один из входных параметров. нужно учесть, что каждый из пользователей может пользоваться несколькими браузерами (события будут иметь разный deviceId). код покрыт тестами, возможно они помогут понять как именно все работает. в идеале вариант на питоне должен проходить такие же тесты.

Report Page