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

lms → crm

Зачем нужно

LMS сообщает CRM о фактах потребления entitlement (списания за занятие, активацию доступа, использование слота) и о фактах, влияющих на расчёт выплат преподавателям.

CRM product/product run может ссылаться на LMS roadmap program/module/topic/pathway, course version, group, session или track как на способ прохождения. Эти refs не передают CRM владение progress, completion или scheduled educational facts.

Стороны

  • источник: lms
  • потребитель: crm
  • вид: event-driven

События

messageTypeКогда
lms.entitlement.consumedсписано право доступа
lms.entitlement.consumption_revertedсписание отменено (отработка, исправление)
lms.attendance.recordedзафиксирована посещаемость, влияет на payout
lms.session.completedзанятие завершено
lms.teacher_session.completedданные для расчёта выплаты преподавателю

Payload lms.entitlement.consumed

{
"entitlementId": "uuid",
"consumedBy": {
"userId": "uuid",
"actorContext": "personal|child_delegated|admin"
},
"consumedAt": "ISO 8601",
"amount": 1,
"reason": "session_attendance|content_unlock|booking",
"context": {
"sessionId": "uuid?",
"groupId": "uuid?",
"courseRef": "string?",
"lessonId": "uuid?"
},
"idempotencyKey": "string"
}

Payload lms.teacher_session.completed

{
"sessionId": "uuid",
"teacherUserId": "uuid",
"groupId": "uuid?",
"studentsCount": 5,
"attendanceCount": 4,
"durationMin": 60,
"format": "format_key",
"completedAt": "ISO 8601"
}

Поведение CRM

  • Получив lms.entitlement.consumed, CRM пишет crm_entitlement_consumption_log и обновляет балансы entitlement.
  • Получив lms.teacher_session.completed, CRM запускает расчёт crm_teacher_payout по правилам.
  • Reverted потребление компенсируется отдельной строкой в логе.
  • Entitlement открывает доступ или enrollment, но не создаёт topic_completion.
  • Бесплатный product может открыть enrollment или pathway access; completion создаётся только LMS rule или audited manual override.

Идемпотентность

  • по idempotencyKey потребления;
  • lms.teacher_session.completed — по sessionId + messageVersion.

Ошибки

СценарийПоведение
entitlementId не найденDLQ + операционный алерт
дублирующее списаниеигнор по idempotencyKey
баланс ушёл в минуспишется, но генерируется алерт crm.entitlement_balance.overdrawn

Retention

  • события 7 лет (финансовые);
  • payout-связанные события — 7 лет.

Связанные ADR

Связанные документы