10 KiB
Полное техническое задание (ТЗ) на LMS
-
Цель системы
Создание LMS для организаций и индивидуальных пользователей.
Управление курсами, тестами, назначениями, прогрессом.
Поддержка SCORM 1.2/2004 через pipwerks SCORM API Wrapper с серверной частью и H5P (через H5P Core или сторонний сервис).
Масштабируемость и расширяемость (календари, уведомления, заявки, API).
Работа через веб-интерфейс на Laravel 10+, PHP 8.2+, Bootstrap 5.
-
Пользователи и роли Роль Возможности Администратор Полный доступ: CRUD всех сущностей, настройки системы, роли, интеграции, логирование, отчёты Менеджер Почти как админ, кроме системных настроек Ответственный (куратор) Управление организацией, пользователями, группами, курсами, тестами, назначениями; просмотр прогресса учеников; обработка заявок; откат результатов Учащийся (организация) Прохождение курсов и тестов, просмотр результатов Индивидуальный учащийся Регистрация через форму (или создание админом); прохождение курсов и тестов; просмотр результатов
Все роли управляются через Spatie Laravel Permission или кастомную систему прав.
API доступ контролируется через Policies/Abilities.
-
Курсы
Категории курсов (course_categories) с возможностью вложенности.
Структура курса: модули/уроки (course_modules).
SCORM/H5P:
SCORM: pipwerks SCORM API Wrapper (клиент) + серверные эндпоинты /scorm/{package_id}/{sco_id} для обработки LMSSetValue, LMSCommit, LMSFinish. Таблица scorm_data: id (PK), user_id (FK), course_id (FK), package_id, sco_id, data (JSON), last_access, created_at, updated_at Контроллер для выдачи SCO с проверкой прав доступа. H5P: интеграция через H5P Core или сторонний сервис, хранение прогресса в JSON или отдельной таблице.Пройденный курс включает пробный и итоговый тесты.
Возможность повторного открытия курса/теста.
Поддержка пересекающихся периодов для разных пользователей/организаций.
-
Тестирование
Типы вопросов:
Single choice (выбор одного), Multiple choice (множественный выбор), Input (ввод текста), Matching (соответствие).Для matching: таблица question_matching_pairs с полями question_id, left_text, right_text, match_score.
Поддержка ограничений времени, истории попыток, отката.
Таблицы: tests, questions, answers, test_attempts, test_responses.
-
Workflow заявок организаций
Таблицы:
course_requests: id, organization_id, requested_by_user_id, status (pending, approved, rejected), approved_by, approved_at, created_at, updated_at. course_request_items: связывает заявки, курсы и пользователей.Состояния заявки: создана → на подтверждении → одобрена/отклонена → назначена.
Автоматическое распределение после подтверждения → записи в course_assignments.
-
Назначения курсов
Таблица course_assignments:
id, course_id, organization_id (nullable), group_id (nullable), user_id (nullable), type ('individual','group','organization'), start_date, end_date, note, created_by
Логика:
Назначение на организацию → все пользователи получают доступ; новые пользователи получают доступ автоматически. Пересекающиеся периоды → отображается ближайший или актуальный период. -
Откат результатов
Возможность отката: тесты, прогресс SCORM/H5P, или все вместе.
История откатов фиксируется в logs.
-
Отчёты и аналитика
Прогресс учеников: фильтры по организации, группе, курсу, пользователю.
История изменений результатов и откатов.
Экспорт: CSV/Excel (laravel-excel), PDF (dompdf/wkhtmltopdf).
Учёт заявок организаций и распределение курсов по пользователям.
-
Архитектура и расширяемость
MVC, Eloquent ORM, REST API-готовность.
Интерфейсы для типов курсов, тестов, интеграций.
События и слушатели для логирования и уведомлений.
Сервис-провайдеры для подключения новых модулей.
API через Laravel Sanctum/Passport.
-
Безопасность и производительность
Middleware, Hash, CSRF, XSS, контроль доступа через Policies.
SCORM/H5P: проверка MIME-типа, sandbox, валидация