LMS/TZ.md

213 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Полное техническое задание (ТЗ) на 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-шаблоны и админку."