Перейти к основному содержимому

Границы LMS

Зачем нужно

Документ фиксирует, чем владеет LMS, какие факты считаются каноническими внутри домена и где проходят границы с identity, CRM, task-bank, storefront, competitions и management.

Если разработчик строит LMS с нуля, этот документ определяет, какие таблицы, API, события и проверки должны жить в LMS, а какие должны приходить из соседних доменов.

Назначение домена

LMS отвечает за внутреннюю учебную систему:

  • структуру курсов, модулей, уроков и вложенных блоков;
  • версии учебного контента;
  • доступ ученика к учебному контенту после подтверждения права на обучение;
  • учебные активности, попытки, сдачи и обратную связь;
  • прогресс внутри LMS-курса и урока;
  • Learning Workspace: рабочие группы, приглашения и назначения преподавателя;
  • дорожную карту обучения: programs, modules, topics, pathways, completion и enrichment;
  • live delivery: sessions, attendance, makeup и связь занятия с темой;
  • рабочие тетради, учебные проекты и учебные чаты;
  • учебную запись на слоты, если слот является частью LMS-сценария;
  • импорт и нормализацию данных из внешней LMS на переходном этапе.

Канонические факты LMS

LMS является источником истины для следующих фактов:

ФактОписание
Courseучебный курс или программа внутри LMS
Course versionопубликованная версия структуры и контента курса
Learning nodeузел дерева курса: модуль, урок, секция, день интенсива
Content blockотображаемый блок урока или активности
Enrollmentсвязь ученика с LMS-курсом и состоянием прохождения
Activity attemptпопытка выполнить учебную активность
Submissionотправленная работа ученика
Feedbackоценка, комментарий или решение преподавателя по работе
Progress snapshotагрегированное состояние прохождения
Roadmap programканоническая программа дорожной карты
Roadmap moduleмодуль дорожной карты
Roadmap topicтема дорожной карты, не равная lesson или session
Topic pathwayспособ пройти тему через формат/продукт/контент
Mini-group trackчастный pathway для прохождения темы в мини-группе
Topic progressсостояние движения student profile по теме
Topic completionфакт закрытия темы по правилам completion
Topic enrichmentдополнительное evidence после формального закрытия темы
Sessionучебное занятие в live delivery
Attendanceфакт присутствия/отсутствия на занятии
Makeup assignmentназначение отработки или компенсационного занятия
Workbookперсональная учебная тетрадь ученика
Course projectдолгоживущий проект внутри курса
LMS chatучебная коммуникация в контексте курса, урока или сопровождения

Learning Workspace является источником истины только для рабочего контура преподавателя:

ФактОписание
Learning Groupобщий список “мои ученики/мои группы” в выбранной организации
Learning Group Participantссылка на student_profile_id внутри рабочей группы
Learning Group Inviteприглашение ученика, родителя или семьи в рабочую группу
Learning Group Assignmentназначение курса, урока, тренажёра, разбора или task-bank set группе

Эти факты не являются canonical student registry, LMS enrollment, progress или competition result.

Что входит в домен

Учебная структура

LMS хранит дерево курса и его версий:

  • курс;
  • версия курса;
  • модуль;
  • раздел;
  • урок;
  • дневной блок интенсива;
  • вложенная секция;
  • блок контента.

Структура должна поддерживать произвольную вложенность, но MVP может ограничить UI и валидаторы шаблоном course -> module -> lesson -> block.

Контент

LMS хранит учебные блоки:

  • текст;
  • видео;
  • файл;
  • изображение;
  • embed;
  • quiz;
  • интерактив;
  • reference на task-bank problem;
  • assignment;
  • workbook prompt;
  • project milestone.

Учебная активность

LMS фиксирует действия ученика:

  • открыл урок;
  • просмотрел блок;
  • начал попытку;
  • отправил ответ;
  • сдал домашнюю работу;
  • обновил тетрадь;
  • отправил проектный milestone;
  • получил feedback;
  • завершил урок или курс.

Прогресс

LMS считает progress только внутри LMS-контента:

  • lesson progress;
  • course progress;
  • activity completion;
  • score summary;
  • evidence summary;
  • last activity timestamp;
  • completion status.

Roadmap mastery может использовать LMS evidence, но не является фактом LMS.

Roadmap

Roadmap — подсистема LMS по ADR-029. LMS владеет:

  • roadmap_program;
  • roadmap_module;
  • roadmap_topic;
  • topic_pathway;
  • mini_group_track;
  • topic_progress;
  • topic_completion;
  • topic_enrichment.

roadmap_topic не является lesson или session. Связи с уроками и занятиями задаются явно через topic_pathway, session_topic_link и content references.

На переходном этапе storefront admin может быть source of authoring для публичной дорожной карты, модулей, тем и редакционных текстов. Это не меняет source of truth: LMS остаётся владельцем нормализованной учебной модели, progress, completion, evidence и связей с live delivery. Storefront может хранить entry_requirements, catchup, CTA copy и SEO copy как projection/editorial поля, но не рассчитывает topic progress или completion.

Преподавательский контур

LMS хранит назначения и учебные действия преподавателя, если они нужны для проверки работ и сопровождения:

  • teacher assignment на курс, поток, группу или ученика;
  • очередь работ на проверку;
  • feedback;
  • комментарии;
  • visibility для преподавателя;
  • audit проверок.

Learning Workspace задаёт общий рабочий контур преподавателя:

  • преподаватель работает в teacher mode и выбирает организацию;
  • видит разрешённые Learning Groups и participants;
  • приглашает учеников и родителей через identity-backed invite;
  • назначает LMS course/lesson, олимпиадный тренажёр, разбор или task-bank assignment;
  • смотрит progress по группе только при наличии lms.progress.read и teacher assignment на соответствующие учебные объекты.

Learning Group не равна LMS live group: live group/session описывает расписание и факт занятия, а Learning Group описывает рабочий список “мои ученики/мои группы”.

Что не входит в домен

Не входитВладелецКак LMS использует
пользователь, семья, роли входа, сессии, организации и канонический список учениковidentityчитает student_profile_id, organization_id, family context, membership и роли
счета, оплаты, возвраты, финансовые entitlementCRMполучает право открыть доступ и синхронизирует enrollment
канонические задачи, эталоны, проверка решенийtask-bankхранит reference и получает результат проверки
публичные страницы курсов и SEOstorefrontотдаёт публичные course projections без приватного прогресса
олимпиады, туры, соревновательные attempts/submissions/resultscompetitionsможет публиковать тренировочные материалы и разборы в LMS/learning контур
управленческие dashboards и планыmanagementотдаёт агрегированные события и метрики
каноническое расписание live-занятийLMS live delivery подсистемаLMS владеет session, attendance, schedule_rule, room; CRM владеет финансовым entitlement

Границы с CRM

CRM владеет коммерческим правом: покупкой, оплатой, возвратом, заморозкой, ручным открытием доступа.

LMS владеет учебным enrollment:

  • pending — право ожидает активации или синхронизации;
  • active — ученик может проходить курс;
  • paused — учебный доступ временно остановлен;
  • completed — курс завершён;
  • revoked — доступ отозван, история сохраняется.

LMS не должна самостоятельно считать оплату успешной. Она принимает событие или команду из CRM и применяет его к enrollment.

Границы с task-bank

Task-bank владеет:

  • задачей;
  • вариантом;
  • правильным ответом;
  • checker;
  • canonical solution;
  • таксономией задач.

LMS владеет:

  • тем, где задача встроена в урок;
  • попыткой ученика в учебном контексте;
  • назначением task-bank set в Learning Workspace, если это учебная тренировка;
  • связью попытки с enrollment, lesson и progress;
  • отображением feedback в уроке.

Если задача меняется в task-bank, опубликованная версия курса должна оставаться воспроизводимой через pinned reference: problem_id, variant_id, revision_id или другой стабильный идентификатор.

Границы с identity

LMS не создаёт пользователей и не хранит роли входа. В LMS допускаются внешние ключи:

  • student_profile_id;
  • family_group_id;
  • organization_id;
  • teacher_user_id;
  • created_by_user_id;
  • updated_by_user_id.

Все проверки вида “родитель видит прогресс ребёнка” выполняются через identity context.

Learning Workspace не создаёт student_profile и не хранит организационных учеников как source of truth. Он использует student_profile_id, organization_id и identity membership как внешние ссылки.

Границы с Learning Workspace

Learning Workspace находится в LMS-документах как преподавательский рабочий контур, но не подменяет учебные факты LMS.

Learning Workspace владеет:

  • learning_group;
  • learning_group_participant;
  • learning_group_invite;
  • learning_group_assignment;
  • audit изменений рабочего контура.

LMS course/progress слой владеет:

  • lms_enrollment;
  • lesson/course progress;
  • activity attempts;
  • submissions;
  • feedback;
  • evidence.

Правила:

  • Learning Group используется LMS, олимпиадами, тренажёрами и task-bank assignments как общий список аудитории.
  • Learning Group Participant — это ссылка на ученика, а не отдельная карточка ученика.
  • Learning Group Assignment может запускать создание LMS enrollment только через LMS/CRM entitlement policy; само назначение не открывает учебный доступ.
  • Progress по Learning Group строится как read-model поверх LMS progress и не хранится отдельно.

Границы с competitions

Competitions владеет соревновательной попыткой, submission, check, result, ranking и award documents.

LMS/learning контур владеет:

  • тренировочным материалом после публикации;
  • разбором олимпиадного комплекта как учебным content/node;
  • тренировочной попыткой как учебным attempt/evidence;
  • progress по тренировке, если материал назначен через Learning Workspace или enrollment.

Тренировочная попытка не равна олимпиадной попытке. Она не меняет competition_submission, competition_check, competition_result, ranking или award status.

Границы с GetCourse и внешними LMS

На переходном этапе LMS может импортировать данные из внешней LMS.

Правила:

  • импортированный факт хранит external_system, external_id, synced_at;
  • нормализация не должна терять исходный статус;
  • внешний progress не должен перезаписывать внутреннюю историю без audit;
  • после миграции внутренний LMS fact становится приоритетным;
  • конфликт между внешним и внутренним progress требует отдельного reconciliation event.

Инварианты

  • Опубликованная версия курса immutable: изменения идут через новую draft version.
  • Progress ученика привязан к конкретной версии курса.
  • Enrollment не удаляется физически, если по нему есть progress, submissions, feedback или audit.
  • Отзыв доступа не удаляет историю обучения.
  • Ученик не видит чужие работы, тетради, проекты и учебные чаты.
  • Родитель видит данные только связанных детей.
  • Преподаватель видит только назначенные контексты.
  • Learning Group не даёт доступ к progress без отдельного teacher assignment.
  • LMS live group/session не равны Learning Group.
  • Олимпиадный тренажёр и разбор живут в LMS/learning контуре; competition attempt/result остаются в competitions.
  • LMS events не содержат полные ответы ученика, приватные комментарии и персональные данные сверх идентификаторов.
  • Gamification не подменяет completion, score и академический результат.

Минимальная готовность границ

Домен считается отделённым правильно, если:

  • ни один API LMS не принимает оплату как факт без CRM source;
  • ни один API LMS не создаёт identity user;
  • задача из task-bank используется по стабильной ссылке;
  • progress не смешан с roadmap mastery;
  • Learning Group не смешан с live group/session, enrollment или canonical student registry;
  • тренировочные олимпиадные attempts не смешаны с competition submissions/results;
  • опубликованная course version не редактируется напрямую;
  • все приватные учебные объекты проверяют owner, family или teacher assignment.