Skip to content

antonchuvashow/exam

Repository files navigation

Система Тестирования "Exam"

Обзор

"Exam" - это веб-приложение для создания и проведения онлайн-тестирований, разработанное на Django. Система предназначена для образовательных учреждений и других организаций, где требуется контролировать процесс прохождения тестов.

Ключевые особенности:

  • Прокторинг: Отслеживание переключений вкладок и времени, проведенного вне страницы с тестом.
  • Гибкая настройка тестов: Различные типы вопросов, включая семантическую оценку текстовых ответов.
  • Управление пользователями: Интеграция с группами Django для разграничения доступа к тестам.
  • Автоматическая и ручная оценка: Возможность автоматического подсчета баллов и их ручной корректировки.

Архитектура

Проект использует Docker для контейнеризации и состоит из следующих сервисов:

  • web: Django-приложение.
  • db: База данных PostgreSQL.
  • nginx: Веб-сервер и обратный прокси.
  • tailwind: Сервис для сборки CSS и обфускации JS.

Функционал

Прокторинг

Система отслеживает следующие действия пользователя во время прохождения теста:

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

Эти функции реализованы с помощью JavaScript на стороне клиента (ui/static_src/js/test-page.js) и обрабатываются на стороне сервера в UserTestSession.

Обфускация кода

Для защиты от анализа и модификации, клиентский JavaScript-код (ui/static_src/js/test-page.js) подвергается обфускации в процессе сборки Docker-контейнера. Обфускация выполняется с помощью javascript-obfuscator согласно конфигурации в ui/static_src/obfuscator.config.json и запускается командой npm run build в ui/static_src/package.json.

Типы вопросов

Система поддерживает следующие типы вопросов:

  • Один верный ответ: Радио-кнопки.
  • Несколько верных ответов: Чекбоксы.
  • Короткий текстовый ответ: Однострочное текстовое поле с семантической оценкой.
  • Развёрнутый ответ: Многострочное текстовое поле с семантической оценкой.
  • Числовой ответ: Поле для ввода числа с возможностью указания допуска.
  • Упорядочивание: Сортировка элементов в правильном порядке.

Оценка

  • Баллы: Каждому вопросу можно присвоить определенное количество баллов.
  • Семантическая оценка: Для развернутых текстовых ответов используется модель для семантического сравнения ответа пользователя с эталонными ответами.
  • Оценки: Система позволяет настраивать шкалу оценок (например, "отлично", "хорошо" и т.д.) в зависимости от набранных процентов.

Установка и запуск

  1. Склонируйте репозиторий:

    git clone https://github.com/antonchuvashow/exam
    cd exam
  2. Создайте и настройте .env файл: Скопируйте env.example в .env и заполните необходимые переменные окружения (секретные ключи, настройки базы данных и т.д.).

  3. Запустите проект с помощью Docker Compose:

    docker-compose up --build
  4. Создайте суперпользователя:

    docker-compose exec web python manage.py createsuperuser
  5. Откройте админ-панель в браузере по адресу {SITE_URL}/{ADMIN_URL}.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors