Мне, как и большинству читающих сей текст, для того, чтобы сесть в рабочее кресло, необходимо успешно себя аутентифицировать в корпоративной системе контроля доступа (далее СКУД). В каждой компании это делается по-разному: с помощью электронных карт, биометрии, паролей, или по старинке — с занесением вашей записи охранником в бумажный журнал. Казалось бы, данные посещаемости уже имеют хранилище и поступают туда в одном формате, логика подсчета времени проста, как день, но мало кто использует эти данные. В большинстве случаев ни рядовой сотрудник, ни даже его начальство зачастую не могут ответить на ряд простых, но имеющих практическую ценность вопросов: сколько часов я уже нахожусь на рабочем месте? Приходил ли уже сотрудник Денисов сегодня в офис? Вернулась ли с обеда гражданка Фролова? В котором часу позавчера ушел с работы сотрудник Смирнов. В статье я расскажу, как можно получить ответы на эти вопросы и постараюсь убедить в том, что учет проведенного в офисе времени полезен для сотрудников. Если стало интересно — любезно прошу под кат.
Будучи разработчиком и участвуя в интеграционных IT-проектах на площадях заказчиков, часто приходилось бывать в их офисах, проходя через имеющиеся там СКУД. А жизнь-таки помотала меня по довольно внушительному количеству бэкофисов компаний различных сфер деятельности, размера и достатка, что дает мне право быть хотя бы немного объективным. Чаще всего данные о посещаемости офиса даже не создаются (на уровне железа происходит аутентификация по принципу 'свой/чужой' без логирования событий), иногда неочищенные данные все же поступают на внутренний сервер и логи могут быть доступны охране, а еще реже доступны руководству в читабельном виде, рядовым сотрудникам обычно доступ к таким сведениям не предоставляют. А как обстоят дела в вашем офисе?
Изучив столичный рынок СКУД, пообщавшись со знакомыми из этой сферы, да и воочию посмотрев на идущее ПО в коробке, было решено сделать свое приложение для учета времени сотрудников.
Из отечественных решений в этой сфере стоит упомянуть ПО Сфинкс и их модуль учета рабочего времени:
Также ПО Эпикур:
Что хотелось реализовать:
* клиент-серверное кроссбраузерное web-приложение, не требующее отдельной установки на каждом устройстве пользователя;
* простой и понятный интерфейс с адаптивной версткой, дабы это удобно было смотреть на смартфоне, планшете, PC;
* возможность выгрузки данных в .xls файл (для нужд бухгалтерии или более глубокого стороннего анализа);
* работа приложения как внутри закрытой локальной сети, так и во внешней сети (собирая данные с нескольких разрозненных офисов);
* масштабируемость (в конфиге можно территориально разрозненные помещения объединять в одно абстрактное корпоративное помещение);
* возможность интеграции с корпоративным сайтом.
Сразу оговорюсь, данное решение подходит для СКУД с функцией логирования событий, т.к. именно такие системы пишут логи в базу данных (далее БД) и имеют сетевой интерфейс работы со своей БД.
Задачи, которые данное web-приложение не решает:
1) повышение качества идентификации/аутентификации проходящего трафика. Приложение анализирует данные, но не вмешивается в нативные алгоритмы аутентификации.
2) контроль полезного рабочего времени. Неверно отождествлять время нахождения в офисе рабочему времени. Приложение фиксирует значение проведенного внутри некого помещения времени, но не контролирует чему сотрудники это время посвящают: будь то чаепития, перекуры, чтение хабра или же сама работа;
3) несоблюдение правил контрольно-пропускного режима, например, когда успешно аутентифицированный человек через двери/турникет пропускает еще кого-либо. Приложение не может существенно влиять на индивида в этом плане, хотя в алгоритм расчета времени заложена логика, делающая такие поступки невыгодными для нарушителя (если два раза подряд зашел, то отсчет времени будет браться с момента второго входа). Обычно данная проблема хорошо решается самими производителями СКУД, общее название функции — anti-passback.
Проектирование и реализация
Посмотрев структуру БД наиболее популярных производителей СКУД, стало понятно, что у всех она схожа, различия лишь в названии таблиц, столбцов и формате данных. Основная таблица входа-выхода обязательно имеет следующие поля:
userID /* ID-шник сотрудника */
checkTIME /* дата и время операции, различие в форматах записи даты между производителями*/
checkTYPE /* тип операции: success IN, success OUT и неверная попытка аутентификации (failed) */
scanerID /* уникальный серийный номер терминала, присваивается производителем */
Эти записи и будут использоваться для расчета времени. Остальные таблицы БД несут скорее вспомогательную функцию.
Задача приложения — получить доступ к БД входов-выходов, получить из нее необходимые данные, обработать их и результат вывести на html-страницу по запросу. Эту страницу с данными интегрируем в корпоративный сайт и даем доступ по красивой внешней ссылке, вроде mycompany.com/time, не забывая реализовать парольную авторизацию для доступа к странице.
Размышления на тему какую же полезную информацию можно получать из сырых данных и как отображать конечный результат, привели меня к трем страницам-отчетам (скриншоты кликабельны, прямо с демонстрационного сервера дорисованы лишь рамки устройств, внутри данные тестовой базы).
1. Персональный отчет за день
В табличном виде можно посмотреть статистику входов/выходов определенного сотрудника на данный момент или на конкретную дату. В итоговой строке представлено общее время в офисе и статус (in/out).
2. Отчет за день по всему офису
В табличном виде можно посмотреть текущее время нахождения в офисе каждого сотрудника на данный момент или на конкретную дату с указанием текущего статуса (in/out).
3. Месячный отчет по всему офису
В табличном виде можно посмотреть общее время нахождения в офисе каждого сотрудника за конкретный месяц. Итоговое значение можно развернуть кликом по нему и получить расшифровку по дням. Данные по всем сотрудникам за конкретный месяц можно выгружать в .xls файл.
Зачем это всё или кому полезен анализ посещаемости?
сотрудникам:
— удобный и точный способ отображения своих данных о проведенном внутри офиса времени;
— возможность следить за присутствием/отсутствием сотрудников в офисе (в т.ч. и удаленно!);
— работнику больше не нужно самостоятельно где-то вести подсчет отработанного времени;
Руководству
— real-time мониторинг (в т.ч. и удаленно) посещаемости офиса, также доступна история сотрудников на конкретную дату/месяц;
— если у сотрудников не гибкий график, то приложение может помочь искоренить прогулы;
— если заработная плата сотрудников привязана к фактически отработанному времени, то можно хорошо сэкономить ФОТ за счет выявления скрытых прогулов (например, опоздал утром, задержался на обеде, раньше ушел вечером, в какой-то из дней вообще не явился, а тебя коллеги прикрыли);
Бухгалтерии и отделу кадров
— постоянный и точный автоматизированный учет времени нахождения в офисе каждого сотрудника;
— исключается человеческий фактор при подсчете;
— возможность выгружать данные об отработанном времени всех сотрудников в электронные таблицы Excel (удобно при заполнении табеля УРВ);
— быстрая сверка фактически отработанного времени сотрудника с нормой;
Охране:
— можно быстро посмотреть сколько человек еще находится в офисе вечером/ночью/утром;
— в случае спорных и конфликтных ситуаций всегда есть возможность обратиться к данным по входу/выходу каждого сотрудника
Что можно было бы реализовать еще?
— разграничение прав пользователей на просмотр итоговых данные (руководитель/бухгалтерия/охрана/рядовой сотрудник);
— отправка e-mail уведомлений при срабатывании определенных условий, например, начальник отдела пришел в офис -> приходит уведомление на корп.почту -> можно отнести документы на подпись; сотрудник опоздал (пришел позже установленного времени) -> приходит уведомление на корп.почту начальнику отдела.
Буду благодарен на любые дополнительные идей в комментариях, ведь именно ради этого я и написал статью — получить свою порцию критики и новых идей.
Итог
Гипотезу о полезности разработанного решения проверял на других компаниях. Обошел четыре десятка интересных мне офисов, демонстрировал работу приложения, кое-где на месте опробовали его на 'боевых' данных, получил хорошую обратную связь, учел замечания, получил первых клиентов. Моя практика показывает, что больше всего внедрений приходится на офисы с биометрическими СКУД.
Хорошая статья об основах биометрии находится здесь, а узнать больше о современных биометрических методах идентификации можно здесь.
Автор: biryla