213 lines
10 KiB
Markdown
213 lines
10 KiB
Markdown
|
||
Полное техническое задание (ТЗ) на 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, валидация <script> и потенциально опасного JS.
|
||
|
||
Очереди (Laravel Queues) для:
|
||
|
||
массовых назначений,
|
||
|
||
экспорта отчётов,
|
||
|
||
уведомлений.
|
||
|
||
Кэширование: права, категории курсов, отчёты.
|
||
|
||
11. UX/UI
|
||
|
||
Bootstrap 5, адаптивность (mobile/tablet/desktop).
|
||
|
||
WCAG 2.1 доступность.
|
||
|
||
Темизация (light/dark).
|
||
|
||
Макеты: личный кабинет ученика, карточка курса, прохождение теста, отчёты куратора, админка.
|
||
|
||
12. Миграция и развёртывание
|
||
|
||
Git flow: develop → тестовая среда, main → продакшн.
|
||
|
||
Миграции Laravel для всех таблиц, rollback при откате.
|
||
|
||
Seeder для тестовых данных и фабрики для E2E тестов.
|
||
|
||
13. Этапы разработки
|
||
|
||
Этап 1 (MVP)
|
||
|
||
Авторизация, роли, CRUD пользователей/организаций.
|
||
|
||
Курсы, категории, SCORM-плеер с базовым отслеживанием.
|
||
|
||
Назначения курсов (организациям и индивидуально).
|
||
|
||
Тесты: single/multiple choice, input.
|
||
|
||
Отчёты: прогресс, CSV экспорт.
|
||
|
||
Этап 2
|
||
|
||
Matching-вопросы, откаты результатов.
|
||
|
||
Группы внутри организаций, массовые назначения.
|
||
|
||
Расширенные отчёты, PDF/Excel.
|
||
|
||
Логирование действий.
|
||
|
||
Этап 3
|
||
|
||
Встроенный редактор курсов (текстовый или drag&drop).
|
||
|
||
Интеграции календарей, уведомления, заявки на курсы.
|
||
|
||
API для внешних систем.
|
||
|
||
14. Тестирование
|
||
|
||
Unit и Feature тесты (PHPUnit/Pest) для ключевых сценариев.
|
||
|
||
E2E тестирование (Laravel Dusk) для прохождения курса, тестирования, SCORM/H5P.
|
||
|
||
15. ER-диаграмма и API
|
||
|
||
ER-диаграмма: пользователи, организации, группы, курсы, модули, тесты, вопросы, ответы, назначения, заявки, SCORM/H5P, логирование.
|
||
|
||
Примеры REST API: GET/POST/PUT/DELETE курсы, тесты, назначения, заявки, SCORM/H5P runtime endpoints.
|
||
|
||
16. Готовый промпт для ИИ-разработчика
|
||
|
||
"Ты — опытный PHP/Laravel разработчик. Создай LMS на Laravel 10+, PHP 8.2+, MySQL, Bootstrap 5 с ролями: Администратор, Менеджер, Ответственный (куратор), Учащийся (организация), Индивидуальный учащийся.
|
||
Курсы: категории, модули/уроки, SCORM/H5P (SCORM через pipwerks с серверной частью и таблицей scorm_data), пробные и итоговые тесты.
|
||
Заявки организаций: workflow с подтверждением и автоматическим распределением.
|
||
Назначения: course_assignments для пользователей, групп, организаций, с периодом доступа.
|
||
Тесты: single/multiple choice, input, matching, с хранением ответов и оценкой.
|
||
Отчёты: фильтры по организации, группе, пользователю; экспорт CSV/Excel/PDF.
|
||
Откат результатов: тесты, SCORM/H5P, история откатов.
|
||
Безопасность: middleware, Hash, CSRF, XSS, sandbox SCORM/H5P, Policies.
|
||
Производительность: очереди для массовых операций, кэширование прав и отчётов.
|
||
Архитектура: MVC, REST API, сервис-провайдеры, события/слушатели.
|
||
Создай ER-диаграмму, модели, миграции, контроллеры, маршруты, Blade-шаблоны и админку."
|
||
|