Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Биометрическая система контроля и управления доступом (СКУД) для университета

1. Введение

В рамках курсового проекта разрабатывается прототип информационной системы контроля и управления доступом (СКУД) для университета.

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

Основные задачи системы:

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

2. Технологический стек

  • Язык программирования: Python
  • Backend-фреймворк: FastAPI
  • СУБД: MongoDB
  • Аутентификация: JWT (логин/пароль)
  • Контейнеризация: Docker + docker-compose
  • Формат импорта/экспорта: JSON

3. Роли пользователей

3.1 Администратор

Администратор системы имеет полный доступ к функциональности:

  • создание и редактирование профилей пользователей;
  • добавление и удаление биометрических шаблонов;
  • управление зонами и устройствами доступа;
  • назначение и изменение политик доступа;
  • просмотр всех логов системы;
  • выполнение массового импорта и экспорта данных.

3.2 Оператор безопасности

Оператор безопасности имеет доступ к:

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

4. Модель данных

4.1 Person

Сущность описывает пользователя системы.

Поля:

  • person_id
  • full_name
  • role (student / staff / guest)
  • department
  • status (active / blocked)
  • created_at
  • updated_at

4.2 BiometricTemplate

Сущность описывает биометрический шаблон пользователя.

Поля:

  • template_id
  • person_id
  • type (face / voice)
  • quality_score
  • device_id
  • created_at
  • version

4.3 Zone

Описывает зону доступа (корпус, помещение).

Поля:

  • zone_id
  • name
  • building
  • class

4.4 Device

Описывает устройство контроля доступа (терминал).

Поля:

  • device_id
  • type (camera / microphone / terminal)
  • zone_id
  • firmware_version

4.5 AccessPolicy

Описывает правила доступа пользователя к зонам.

Поля:

  • policy_id
  • person_id
  • allowed_zone_ids
  • schedule (дни недели и временные интервалы)
  • valid_from
  • valid_to

4.6 AccessEvent

Фиксирует попытку прохода через точку доступа.

Поля:

  • event_id
  • timestamp
  • person_id (может быть null)
  • device_id
  • zone_id
  • auth_method (face / voice / card)
  • decision (ALLOW / DENY)
  • reason
  • recognition_score

5. Логика работы системы

5.1 Регистрация пользователя

  1. Администратор создаёт профиль пользователя.
  2. Добавляет один или несколько биометрических шаблонов.
  3. Назначает пользователю политику доступа.

5.2 Попытка прохода (симуляция терминала)

  1. Устройство доступа отправляет запрос в API /device/access-attempt.
  2. Система:
    • идентифицирует пользователя,
    • проверяет статус профиля,
    • проверяет наличие действующей политики доступа,
    • проверяет соответствие расписанию.
  3. В системе создаётся запись AccessEvent.
  4. Возвращается решение ALLOW или DENY.

5.3 Логирование

Каждая попытка прохода фиксируется вне зависимости от результата.
Это обеспечивает возможность последующего аудита и анализа.


6. API

Аутентификация

  • POST /auth/login
  • GET /auth/me

Пользователи

  • GET /people
  • POST /people
  • GET /people/{id}
  • PUT /people/{id}

Биометрия

  • POST /people/{id}/biometrics
  • GET /people/{id}/biometrics
  • DELETE /biometrics/{id}

Зоны и устройства

  • GET /zones
  • POST /zones
  • GET /devices
  • POST /devices

Политики доступа

  • POST /policies
  • GET /policies
  • PUT /policies/{id}

События

  • GET /events (фильтрация по периоду, зоне, решению)
  • POST /device/access-attempt

Импорт и экспорт

  • POST /export — экспорт всей базы данных
  • POST /import — очистка базы и восстановление из JSON

7. Аналитика

Аналитика реализуется с использованием MongoDB Aggregation Pipeline.

Планируемые отчёты:

  1. Топ зон по количеству отказов.
  2. Распределение отказов по причинам.
  3. Количество проходов по зонам за выбранный период.
  4. Процент отказов по устройствам.

8. Массовый импорт и экспорт

Экспорт:

  • выгрузка всех коллекций в единый JSON-файл.

Импорт:

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

About

Education

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages