Контроль активности сотрудников

Константин15 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
17.10.2011

Есть задача учет времени работы сотрудников. Дело не в жестком контроле, а в том, что люди просто забывают, в какие интервалы они работали, забывают отметить уход/приход, что выливается в очень неприятные разговоры с ними и с клиентами, для которых мы работаем по Time & Materials.

Нужна программа, которая работает под Linux (Ubuntu, Debian) и Windows 7 (естественно, разные билды), которая мониторит активность за компом очень просто:

- включение компа = начало

- возобновление из спящего режима или suspend = начало

- гибернация или suspend = конец

- закрытие крышки ноута = конец

- открытие крышки ноута = начало

- выключение компа = конец

- длительная (более 5 мин) пауза в работе (нет движений мышью и нажатий конопок) = конец

- возобновление работы после паузы = начало

- блокирование экрана (скринсейвер) = конец

- возобновление сеанса = начало

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

При каждом событии конец/начало, прога уведомляет сервер по HTTP/HTTPS-протоколу и отправляет пакет:

- ID сотрудника

- имя

- сгеренированный ключ

- тип события (начало/конец)

Внимание! Если на линукс-машине установлен sshd и сотрудник логинится на нее удаленно, то время работы в таком режиме не считается, событий начало/конец не наступает. В графическом режиме (удаленный десктоп) - желательно тоже не считать.

Для виндовой машины - те же условия, но там еще какие-то виндовые консоли есть, так вот работа в них тоже не засчитывается за события начала/конца.

Конфигурация может заваться файлом, если это упрощает кодинг, но имейте в виду, что после изменения имени/ID юзера, ключ должен перегенериться. В то же время, пара ID+машина дает всегда одинаковый ключ. Ключ нужен для того, чтобы исключить ситуации когда один сотрудник может вызвать событие начало/конец для другого со своей машины. Это будет проверятся сервером.

Сервер должен быть конфигурируемым - протокол (HTTP/HTTPS), порт и адрес. Если сервер недоступен, то логи складываются вместе со временм возникновения события, а при коннекте отправляются пакетом на сервер в том же формате (только для событий время еще задается).

Ошибки коннекта, ошибки записи лога на диск и другие возможные должны корректно обрабатываться. В идеале это должно быть "поставил и забыл", а оно само работает.

Само собой, программа должна запускаться при старте машины. Конфигурирование и регистрация проги должны выполняться скриптом (bat, bash, sh) или самой прогой в процессе установки.

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

Я предпочитаю в качестве решений C++ со статически прилинковаными библиотеками, чтобы был просто один файл или все зависимости локально расположены. Java, .NET не хочется, потому что хочу однаковое решение под обе платформы с различием только в вызове системных оперций и регистрации обработчиков.

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

Если это может снизить цену, я готов дать разрешение на публикацию как open source под GPL или другой лицензией. Выбранный фрилансер будет поддерживать, за фичи и дополниельную работу мы будем платить. Нуи начальную естественно финансируем, просто это будет open source.

В заявке:

- бюджет

- сроки

- 1 предложение о вашем опыте.

- какие технологии планируете использовать

- другие предложения по решению проблемы, может у вас есть лучше