/rlebe[dev].dev
Система контроля доступа и учёта рабочего времени

Карту можно передать. Лицо — нет

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

ЛЕНТА СОБЫТИЙ · ПРОХОДНАЯ «ЦЕНТРАЛЬНАЯ» · ВХОД ОНЛАЙН
Николаев К. А. · Отдел логистики 18:46:02 · карта 0001688874 · контроллер 40003562 Камера: биометрия пройдена ДОСТУП
Николаев К. А. · Отдел логистики 18:45:31 · карта 0001688874 · контроллер 40003562 Камера: биометрия не пройдена — перед камерой другой человек ОТКАЗ
Не известный 18:43:10 · карта 0007339662 · контроллер 40003562 Ключ не найден в банке ключей ОТКАЗ
2 фактора
карта и лицо
14
типов событий контроллера
≤10 сек
от команды до контроллера
13
доменных модулей
01 · Что это на самом деле

Три системы, которые обычно покупают по отдельности

Классический СКУД отвечает на один вопрос: пускать или не пускать. Здесь то же самое железо — контроллеры, считыватели, камеры — даёт ещё два ответа, ради которых и затевается вся история с проходными.

Контроль доступакто и куда может

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

След человекагде он сейчас и где был

Каждое событие — это не строка «проход разрешён», а кадр с камеры в момент прохода, фото сотрудника из картотеки, направление, проходная, контроллер и причина принятого решения. По этой цепочке восстанавливается маршрут по территории, а не только факт входа.

Табельсколько отработал

Расписание сотрудника с перерывом, автоматическая отметка опозданий с точностью до минут и флаг нарушения очерёдности, когда цепочка ВХОД → ВЫХОД рвётся. Табельщику остаётся смотреть на исключения, а не сводить журнал вручную.

02 · Решение по доступу

Пять проверок, пока человек делает шаг к двери

Контроллер спрашивает сервер, и тот отвечает одним числом — можно или нельзя. За этим числом стоит последовательность, где каждая ступень может закончить разговор.

01 Карта известна системе и привязана к сотруднику? иначе отказ
02 Эта проходная есть в его профиле доступа, и профиль не заблокирован? иначе отказ
03 Направление настроено как однофакторное? тогда пропуск
04 У сотрудника стоит флаг «без проверки биометрии»? тогда пропуск
05 Лицо перед камерой совпало с фото владельца карты? доступ открыт
Главный сценарий

Чужой картой не пройти

Самая частая дыра любого пропускного режима — переданная карта. Здесь она закрывается по построению: карта опознаёт, кого система ожидает увидеть, камера показывает, кто пришёл на самом деле, и решение принимается по обоим.

Гибкость

Второй фактор включается по направлению

Выход с территории часто не требует биометрии, а вход — требует. Это настройка конкретного контроллера, а не всей системы: строгость расставляется там, где она нужна.

Честный отказ

Причина решения сохраняется вместе с событием

«Биометрия не пройдена», «ключ не найден в банке ключей», «доступ не разрешён», «без проверки биометрии» — по журналу видно не только что произошло, но и почему система решила именно так.

Доказательство

Кадр в момент события

Рядом с фото из картотеки лежит снимок с камеры проходной, сделанный в секунду прохода. Разбор инцидента — это два фото рядом, а не запрос в архив видеонаблюдения.

03 · Перехват

Один переключатель закрывает человеку всю территорию

Увольнение, утерянный пропуск, служебное разбирательство — ситуация, когда доступ нужно снять немедленно и везде. Обходить проходные и чистить банки ключей руками в этот момент никто не будет.

Работает и в офлайне

Дверь не откроется, даже если сервер потом отключат

Команда снимает карту из памяти самого контроллера, а не просто запрещает решение на сервере. Поэтому перехват переживает обрыв связи — контроллеру просто нечего искать в своём банке ключей.

Точечно

Смена профиля доступа не пересобирает всё заново

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

Обратимо

Снятие перехвата возвращает карты той же механикой

Тот же путь в обратную сторону: добавление ключей в банки нужных контроллеров. Восстановление доступа — это снятая галочка, а не повторный обход проходных.

Увольнение

Удаление сотрудника снимает доступ автоматически

Карты изымаются из контроллеров в момент удаления записи. Забытый пропуск бывшего сотрудника перестаёт быть классом инцидентов.

04 · Режимы работы

Что делает дверь, когда с сервером что-то не так

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

Онлайн

Решение принимает сервер

Контроллер спрашивает по каждому прикладыванию карты — тогда работают биометрия, профили доступа и все настройки целиком.

Офлайн

Решение принимает контроллер

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

Блокировка

Дверь закрыта для всех

Режим игнорирует любую логику. Нужен на время инцидента или в нерабочие часы, когда проход не предусмотрен ни для кого.

Свободный проход

Дверь открыта для всех

Эвакуация, приёмка большой партии, день открытых дверей. Замок держится открытым, но события всё равно пишутся в журнал.

Самоподключение

Новый контроллер появляется в системе сам

При включении он сообщает серийный номер, тип и адрес — и заводится в системе автоматически, получая в ответ стартовые настройки. Пока к нему не привязана проходная, его события намеренно игнорируются, чтобы стенд и монтаж не засоряли журнал.

Живой пульт

События появляются на экране без перезагрузки

Монитор охраны подписан на поток событий по вебсокету и собирается из нужных проходных: одному посту — центральный вход, другому — склад и ворота.

05 · Учёт рабочего времени

Табель собирается из тех же событий, что и охрана

Отдельная система учёта времени не нужна: проходы уже зафиксированы, и остаётся наложить на них график сотрудника. Причём график с перерывом — обед не превращается в прогул и не считается вторым рабочим днём.

Опоздание

Считается до минуты и объясняется словами

Первый вход дня сравнивается с началом смены по расписанию этого дня недели. В событие пишется не флаг, а формулировка вроде «опоздание на 0:17:00», понятная без расшифровки.

Перерыв

Возврат с обеда — тоже контрольная точка

Расписание знает начало и конец перерыва, поэтому поздний вход после обеда фиксируется отдельно и не путается с началом дня.

Аномалии

Нарушение очерёдности видно сразу

Ожидается цепочка ВХОД → ВЫХОД → ВХОД. Два входа подряд или выход без входа помечаются флагом: обычно за этим стоит либо проход «паровозиком», либо неучтённая точка.

Остаток смены

Сколько ещё работать — прямо в событии

При выходе в середине дня система подписывает, сколько времени остаётся до конца рабочего дня по графику. Ранний уход становится заметен в момент, а не в конце месяца.

06 · Видеоконтур

Свои камеры или чужая система видеонаблюдения — на выбор

Второй фактор нужен всем, но приходить с ним в объект можно двумя разными способами. Система поддерживает оба и переключается настройкой, не меняя остальную логику.

Свой контур

Распознавание внутри системы

Каждая камера обслуживается отдельным процессом: поток разбирается покадрово, лицо находится и кодируется, результат кладётся в общий кэш. Падение одной камеры не задевает остальные и не роняет сервер.

Готовность

Кадр уже лежит, когда приходит запрос

Контроллеру нельзя ждать: пока он спрашивает, человек стоит у двери. Поэтому кадр и распознанное лицо берутся из кэша, а не запрашиваются у камеры в момент решения.

Интеграция

Работа поверх существующей VMS

Если на объекте уже развёрнута система видеонаблюдения с распознаванием лиц, картотека выгружается в неё: департаменты становятся группами лиц, сотрудники — карточками с фотографиями, а система забирает готовые результаты.

Синхронизация

Картотека ведётся в одном месте

Сотрудник заводится в СКУД, его фото и принадлежность к подразделению уезжают во внешнюю систему автоматически. Двойного ввода людей в две системы нет.

07 · Как это выглядит

Журнал событий с фильтрами по всему, что важно охране

Рабочее место оператора — не отдельный фронтенд, а доведённая админка: фильтры по департаменту, контроллеру, проходной, направлению, решению по доступу и типу этого решения, плюс диапазон дат.

Журнал событий системы: три прохода по одной карте — успешный с пройденной биометрией, отказ из-за несовпадения лица и отказ по неизвестной карте; справа панель фильтров.
Демонстрационный стенд из репозитория: одна и та же карта, три исхода. Сверху — владелец карты перед камерой, доступ открыт. Ниже — попытка пройти чужой картой: лицо не совпало, отказ. Внизу — неизвестная карта.
08 · Стек

Django с каналами, компьютерное зрение и протокол контроллеров

Обмен с контроллерами — собственный слой поверх их протокола: разбор пакетов, таблица типов событий, очередь команд на каждый серийный номер и типизированный ответ, который контроллер понимает.

Ядро
Python 3.10Django 4.2DRFASGI / uvicorn
Реальное время
ChannelsWebSocketRedisочередь команд
Зрение
OpenCVdlibface_recognitionmediapipemultiprocessing
Железо и внешние
контроллеры СКУДIP-камерыVMS-интеграцияnginx
09 · Дальше

Железо на объекте уже стоит. Вопрос в том, что оно умеет

Контроллеры, считыватели и камеры продаются вместе с чужим софтом, который делает ровно то, что задумал производитель. Своя система поверх того же железа даёт то, чего в коробке нет: перехват, двухфакторный проход, табель и журнал, из которого видно причину каждого решения.

Интеграция с железомРазбор протокола контроллеров, очередь команд, режимы работы, устойчивость к обрывам связи.
БиометрияСвой контур распознавания или работа поверх уже развёрнутой системы видеонаблюдения.
Учёт и отчётностьГрафики, опоздания, аномалии проходов и журнал, пригодный для разбора инцидентов.
Обсудить проект →