Контроль активности сотрудников
Есть задача учет времени работы сотрудников. Дело не в жестком контроле, а в том, что люди просто забывают, в какие интервалы они работали, забывают отметить уход/приход, что выливается в очень неприятные разговоры с ними и с клиентами, для которых мы работаем по 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 предложение о вашем опыте.
- какие технологии планируете использовать
- другие предложения по решению проблемы, может у вас есть лучше