lms → storefront
Зачем нужно
LMS предоставляет витрине только публичную проекцию дорожной карты и факты для публичных страниц. Учебные группы, тренажёры, разборы, progress и личные результаты остаются в LMS/Learning Workspace.
На переходном этапе storefront admin может быть source of authoring для публичной дорожной карты и editorial-полей. LMS остаётся source of truth для нормализованной учебной модели, progress и completion.
Стороны
- источник: lms
- потребитель: storefront
- вид: event-driven (обновление read-model) + online read через API
События
| messageType | Когда |
|---|---|
lms.roadmap.published | опубликована новая версия дорожной карты |
lms.roadmap.topic_changed | изменения темы в опубликованной версии |
lms.fact.changed | создан, опубликован или обновлён публичный учебный факт без PII |
Payload lms.roadmap.published
{
"programRef": "string",
"version": "v1.2",
"subjectKey": "string",
"levelKey": "string",
"modules": [
{
"moduleKey": "string",
"title": "i18n",
"topics": [
{
"topicKey": "string",
"title": "i18n",
"shortDescription": "i18n",
"estimatedHours": 8,
"roadmapLayer": "core",
"pathways": [
{
"formatKey": "mini_group",
"productRefs": ["crm:product:..."],
"productRunRefs": ["crm:product_run:..."],
"groupRefs": ["lms:group:..."],
"sessionRefs": ["lms:session:..."],
"trackRef": "track-a",
"availabilityState": "available",
"completionContribution": "evidence_only",
"scheduledState": {
"moduleTitle": "i18n",
"topicTitle": "i18n",
"lessonNo": 2,
"lessonsInModule": 6,
"canJoinNow": true,
"catchupRequired": true
}
}
],
"publicVisible": true
}
]
}
],
"publishedAt": "ISO 8601"
}
Online read API
GET https://api.systematika.tld/api/v2/lms/public/roadmap/{programRef}
GET https://api.systematika.tld/api/v2/lms/public/programs
GET https://api.systematika.tld/api/v2/lms/public/facts
Используются витриной как fallback и в SSR-render.
Поведение storefront
- По событиям обновляет
storefront_blockс roadmap projection и связанныеstorefront_fact. - SSR-страницы кеширует представления и инвалидирует на событие.
- Не читает
learning_group,learning_group_participant, training attempts, review sessions или personal progress. - Показывает только записи со статусом public/published и source ref на LMS.
- Сохраняет
entry_requirements,catchup, CTA copy и SEO copy как editorial projection поверх LMS refs. - Собирает
product_trajectory_blockиз LMS roadmap projection и CRM product/product run data. - Не рассчитывает progress, completion, attendance или private recommendations.
Идемпотентность
- по
programRef + version.
Ошибки
| Сценарий | Поведение |
|---|---|
| schema-mismatch | DLQ, текущий storefront_block/storefront_fact cache сохраняется |
| topic не публичен | пропускается в read-model |
| payload содержит personal progress или group roster | событие отклоняется, DLQ + security alert |
| storefront authoring не содержит LMS source refs | запись не публикуется как canonical roadmap projection |
Retention
- события 90 дней.