krona-staff/apps/KronaStaffTerminal/README.md
Ochenstarik 827d321a1a
Some checks failed
ci / verify (push) Has been cancelled
feat(terminal): add secure release updates and installer
2026-09-19 02:08:26 +07:00

8.6 KiB
Raw Permalink Blame History

Krona Staff Terminal

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

Возможности

  • выбор одного из подключённых сканеров с автоматическим переходом на рабочее устройство;
  • добавление и редактирование сотрудников с должностью, полом и правами администратора без потери отпечатков и журнала;
  • несколько отпечатков у одного сотрудника, каждый регистрируется по трём последовательным сканам;
  • чередование событий «Приход» и «Уход»;
  • настраиваемая защита от повторного сканирования, по умолчанию 120 секунд;
  • локальный журнал последних отметок;
  • экспорт журнала в CSV и резервные копии зашифрованного состояния;
  • защищённая очистка журнала без удаления сотрудников и отпечатков;
  • приватный режим, скрывающий полные имена на публичном экране;
  • уведомления через Telegram Bot API и MAX Bot API;
  • автозагрузка сразу в системный трей и постоянное фоновое сканирование, даже когда открыта другая программа;
  • закрытый административный раздел с входом по 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-служба сканера.

Уведомления

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

Обновления

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

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

.\scripts\build-terminal-release.ps1

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