krona-staff/apps/KronaStaffTerminal/README.md
Ochenstarik 4d37350757
Some checks are pending
ci / verify (push) Waiting to run
feat(terminal): update attendance terminal to 0.2.4
2026-09-20 23:40:43 +07:00

11 KiB
Raw Permalink Blame History

Krona Staff Terminal

Локальный терминал учёта прихода для USB-сканеров ZKTeco/BioLink SLK20R и ZKFinger SDK 5.3.

Возможности

  • повторный поиск сканеров по кнопке, ручной выбор одного из подключённых устройств и автоматический переход на рабочее устройство;
  • первичная настройка PIN и добавление первого сотрудника-администратора без подключённого сканера;
  • добавление и редактирование сотрудников с должностью, полом и правами администратора без потери отпечатков и журнала;
  • несколько отпечатков у одного сотрудника, каждый регистрируется по трём последовательным сканам;
  • чередование событий «Приход» и «Уход»;
  • настраиваемая защита от повторного сканирования, по умолчанию 120 секунд;
  • локальный журнал последних отметок;
  • экспорт журнала в CSV и резервные копии зашифрованного состояния;
  • защищённая очистка журнала без удаления сотрудников и отпечатков;
  • приватный режим, скрывающий полные имена на публичном экране;
  • личные уведомления сотрудников через Telegram, сообщения сообщества ВКонтакте и MAX;
  • блокировка сотрудника с отключением его отпечатков и безвозвратным удалением локальных привязок мессенджеров;
  • автозагрузка сразу в системный трей и постоянное фоновое сканирование, даже когда открыта другая программа;
  • закрытый экран входа, скрывающий сотрудников, журнал и настройки до проверки PIN или отпечатка администратора;
  • автоматическая блокировка всей программы при запуске, сворачивании и ручной блокировке;
  • автоматическая блокировка административного раздела через 5 минут бездействия;
  • шифрование сотрудников, токенов и шаблонов отпечатков средствами Windows DPAPI.
  • проверка новых релизов Forgejo при запуске и каждые шесть часов;
  • загрузка обновления только после входа администратора и обязательной проверки SHA-256.

Исходное изображение пальца не сохраняется. Шаблон отпечатка хранится только локально и может быть расшифрован текущей учётной записью Windows.

Запуск

Требуются Windows 10/11 x64, драйвер SLK20R и ZKFinger SDK 5.3. Сборка и запуск из корня репозитория:

dotnet run --project apps/KronaStaffTerminal/KronaStaffTerminal.csproj -c Debug -p:Platform=x64 --launch-profile "KronaStaffTerminal (Unpackaged)"

Для обычной установки скачайте из раздела Releases файл KronaStaffTerminal-Setup-<версия>.exe. В конце установки можно открыть официальную страницу ZKFinger SDK для Windows, где находится драйвер совместимого сканера SLK20R.

Драйвер не включается внутрь платного продукта: EULA из полученного SDK разрешает распространение в составе только бесплатных или некоммерческих пакетов. Для коммерческого комплекта требуется отдельное письменное право распространения от ZKTeco. Уже установленный драйвер продолжает работать как обычно.

Первый сотрудник

  1. Откройте вкладку «Сотрудники» и при первом входе создайте PIN длиной не менее шести символов.
  2. Введите табельный номер и имя, отметьте «Администратор терминала», затем нажмите «Добавить».
  3. Выберите сотрудника в списке и нажмите «Добавить отпечаток».
  4. Трижды приложите один и тот же палец, убирая его со стекла после каждого принятого скана.
  5. Для регистрации другого пальца повторно нажмите «Добавить отпечаток».

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

Администратор и работа в фоне

  1. Вкладки «Сотрудники» и «Уведомления и сканер» открываются только после входа администратора.
  2. Для входа достаточно PIN либо зарегистрированного отпечатка администратора.
  3. Кнопка «Заблокировать» и сворачивание скрывают весь интерфейс до повторного входа. Пять минут бездействия закрывают административные вкладки, не останавливая рабочий терминал.

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

При блокировке Windows (Win+L) терминал продолжает работать. При полном выходе из учётной записи Windows система завершает все пользовательские программы, поэтому сканирование останавливается до следующего входа. Для работы вообще без открытого сеанса потребуется отдельная Windows-служба сканера.

Уведомления

На вкладке «Уведомления и сканер» включите нужные каналы и укажите токены ботов. Затем выберите сотрудника, нажмите «Личные уведомления» и сохраните его личный chat_id Telegram, peer_id ВКонтакте или user_id MAX. Сотрудник должен предварительно начать личный диалог с ботом или разрешить сообщения сообщества. Кнопка «Тест выбранному сотруднику» отправляет сообщение только этому человеку. При успешной отметке сотрудник получает дату, время и тип собственного события без имени и данных других сотрудников.

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

Обновления

Пока репозиторий приватный, администратор терминала указывает в настройках токен Forgejo только с правом чтения репозитория. Токен хранится вместе с остальными настройками в зашифрованном Windows DPAPI-файле текущего пользователя и не встраивается в программу. Источник обновлений реализован отдельным адаптером: впоследствии Forgejo можно заменить публичным портом Бизнес Платформы.

Для сборки установщика и двух файлов релиза:

.\scripts\build-terminal-release.ps1

Скрипт публикует x64-приложение, создаёт установщик NSIS и соседний файл .sha256. В релиз нужно загружать оба файла; без контрольной суммы встроенное обновление откажется запускать установщик.