LMS/TZ.md

10 KiB
Raw Permalink Blame History

Полное техническое задание (ТЗ) на LMS

  1. Цель системы

    Создание LMS для организаций и индивидуальных пользователей.

    Управление курсами, тестами, назначениями, прогрессом.

    Поддержка SCORM 1.2/2004 через pipwerks SCORM API Wrapper с серверной частью и H5P (через H5P Core или сторонний сервис).

    Масштабируемость и расширяемость (календари, уведомления, заявки, API).

    Работа через веб-интерфейс на Laravel 10+, PHP 8.2+, Bootstrap 5.

  2. Пользователи и роли Роль Возможности Администратор Полный доступ: CRUD всех сущностей, настройки системы, роли, интеграции, логирование, отчёты Менеджер Почти как админ, кроме системных настроек Ответственный (куратор) Управление организацией, пользователями, группами, курсами, тестами, назначениями; просмотр прогресса учеников; обработка заявок; откат результатов Учащийся (организация) Прохождение курсов и тестов, просмотр результатов Индивидуальный учащийся Регистрация через форму (или создание админом); прохождение курсов и тестов; просмотр результатов

    Все роли управляются через Spatie Laravel Permission или кастомную систему прав.

    API доступ контролируется через Policies/Abilities.

  3. Курсы

    Категории курсов (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 или отдельной таблице.
    

    Пройденный курс включает пробный и итоговый тесты.

    Возможность повторного открытия курса/теста.

    Поддержка пересекающихся периодов для разных пользователей/организаций.

  4. Тестирование

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

     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.

  5. 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.

  6. Назначения курсов

    Таблица 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

    Логика:

     Назначение на организацию → все пользователи получают доступ; новые пользователи получают доступ автоматически.
    
     Пересекающиеся периоды → отображается ближайший или актуальный период.
    
  7. Откат результатов

    Возможность отката: тесты, прогресс SCORM/H5P, или все вместе.

    История откатов фиксируется в logs.

  8. Отчёты и аналитика

    Прогресс учеников: фильтры по организации, группе, курсу, пользователю.

    История изменений результатов и откатов.

    Экспорт: CSV/Excel (laravel-excel), PDF (dompdf/wkhtmltopdf).

    Учёт заявок организаций и распределение курсов по пользователям.

  9. Архитектура и расширяемость

    MVC, Eloquent ORM, REST API-готовность.

    Интерфейсы для типов курсов, тестов, интеграций.

    События и слушатели для логирования и уведомлений.

    Сервис-провайдеры для подключения новых модулей.

    API через Laravel Sanctum/Passport.

  10. Безопасность и производительность

    Middleware, Hash, CSRF, XSS, контроль доступа через Policies.

    SCORM/H5P: проверка MIME-типа, sandbox, валидация