При разработке экзаменационной платформы для технического вуза мы столкнулись с требованиями: 10 000 студентов, 200 предметов, 50 типов заданий, пиковая нагрузка 500 одновременных сессий. Система должна гарантировать сохранность данных при сбоях и защиту от списывания. Цена ошибки — не просто оценка, а репутация учебного заведения или сертификация специалиста. Рассказываем, как мы решаем эти задачи на практике.
Мы проектируем модульную архитектуру, где каждый тип экзамена изолирован в свой сервис: автопроверяемые тесты, задания с ручной проверкой, адаптивные (CAT) и прокторируемые экзамены. Такой подход упрощает масштабирование и добавление новых типов. Например, для одного заказчика мы реализовали поддержку 12 языков программирования в coding tasks, каждый — в Docker-контейнере с изоляцией.
Типы экзаменов и их компоненты
| Тип | Особенности | Количество вопросов в типовом тесте |
|---|---|---|
| Автопроверяемый | Тесты, задачи с вариантами, краткие ответы | 30–60 |
| С ручной проверкой | Эссе, coding tasks, кейсы | 3–10 |
| Адаптивный (CAT) | Сложность подстраивается под ответы | 15–25 (на 30% меньше, чем линейный) |
| Прокторируемый | С наблюдателем (online или offline) | любой |
| Open-book | Допускается использование материалов | любой |
Каждый тип требует своих компонентов: для эссе — редактор с проверкой плагиата, для coding tasks — запуск кода в изолированном контейнере. Банк вопросов формируется от 500 до 5000 единиц.
Как устроена защита от списывания?
Режим киоска блокирует 99% попыток переключения вкладок. Реализация через document.onfullscreenchange + детектирование visibilitychange:
document.addEventListener('visibilitychange', () => { if (document.hidden && examInProgress) { recordViolation('tab_switch', { timestamp: Date.now() }); } }); Рандомизация: порядок вопросов и вариантов ответов перемешивается для каждого испытуемого — shuffle_seed генерируется при старте и сохраняется. Вероятность совпадения вариантов у двух студентов — менее 1 на миллион. Лимит времени хранится на сервере, клиент синхронизирует каждые 30 секунд. При истечении времени — автоматическая отправка. Комплекс мер снижает количество нарушений на 80% по сравнению с простым таймером.
Как работает адаптивное тестирование?
Computer Adaptive Testing (CAT) подбирает вопросы на основе оцениваемого уровня. Алгоритм использует Item Response Theory (IRT), согласно Item Response Theory (Wikipedia): каждый вопрос в банке имеет параметры сложности (b), дифференцирующую способность (a) и вероятность угадывания (c). Мы реализуем модель 3PL.
Процесс:
- Начинаем со среднего вопроса (θ = 0).
- Правильный ответ → следующий вопрос сложнее.
- Неправильный → проще.
- Оценка знания (θ) пересчитывается после каждого ответа.
Для расчётов используем библиотеку catirt (R) или самописную реализацию. Результат — точная оценка за 15–25 вопросов вместо 40–60 при линейном тесте, что сокращает время на 40%.
Пример оценки параметров вопроса по IRT
Для каждого вопроса вычисляется трёхпараметрическая логистическая функция: P(θ) = c + (1-c) / (1 + exp(-1.7*a*(θ-b))). Параметры оцениваются методом максимального правдоподобия по калибровочной выборке (не менее 200 ответов на вопрос).Надёжность и восстановление
Экзамен нельзя потерять. Автосохранение текущих ответов каждые 30 секунд (POST на сервер). При обрыве соединения — продолжение после переподключения с сохранённого состояния. На практике 99.9% сессий завершаются без потери данных. При технической проблеме — процедура повторного допуска (reopening exam session). Ответы хранятся в exam_answers с submitted_at, отдельно от итоговой оценки.
Онлайн-прокторинг
Два уровня:
| Уровень | Технология | Точность детекции нарушений | Относительная стоимость |
|---|---|---|---|
| AI-прокторинг | MediaPipe/OpenCV self-hosted | 70% | 1x |
| Живой прокторинг | WebRTC | 95% | 3x |
| Гибрид (AI + live) | Комбинация | 95% | 1.5x |
Self-hosted решение на MediaPipe/OpenCV снижает затраты в 3 раза по сравнению с коммерческими сервисами. Данные с веб-камеры записываются и анализируются постфактум — это снижает нагрузку на сервер во время экзамена.
Что входит в результат
В базовую комплектацию входят: банк вопросов, система автопроверки, античит-модуль, генерация сертификатов, а также документация по развёртыванию и API. Расширенная комплектация дополнительно включает адаптивное тестирование (CAT), прокторинг, интеграцию с LMS, кастомные типы вопросов и обучение до 5 сотрудников. Всегда предоставляем исходный код без ограничений и гарантийную поддержку 3 месяца.
Этапы разработки
- Аналитика: сбор требований, профилирование нагрузки, проектирование архитектуры.
- Проектирование: прототип UI, модель данных, API-спецификация.
- Реализация: итеративная разработка с демо каждые 2 недели.
- Тестирование: нагрузочное до 1000 одновременных сессий, security audit.
- Деплой: развёртывание на вашей инфраструктуре и передача документации.
Сроки и состав работ
| Комплектация | Срок | Состав |
|---|---|---|
| Базовая | 3–4 месяца | Банк вопросов, таймер, автопроверка, античит, сертификаты |
| Расширенная | 5–8 месяцев | Всё из базовой + прокторинг, CAT, ручная проверка эссе, интеграции |
В стоимость входит: документация, исходный код, обучение до 5 сотрудников, гарантийная поддержка 3 месяца. Конкретная стоимость рассчитывается индивидуально после анализа требований.
Наша экспертиза
5+ лет опыта в разработке высоконагруженных образовательных платформ. Выполнили 30+ проектов для вузов и онлайн-школ с аудиторией от 500 до 50 000 пользователей. Стек: React/Next.js, Node.js/Nest.js, PostgreSQL, Redis, Docker, Kubernetes. Оценим ваш проект бесплатно — свяжитесь для консультации и получите демо-доступ к прототипу.







