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

task-bank → lms

Зачем нужно

Task-bank поставляет задачи, подборки, activity templates, program templates, locked snapshots и проверки для уроков, домашек, тренажёров, разборов и диагностики LMS. Learning Workspace остаётся владельцем учебных групп, назначений, тренировочных попыток и учебного evidence.

Стороны

  • источник: task-bank
  • потребитель: lms
  • вид: online read + event-driven
  • snapshot flow: content_export_snapshot для grouped activity/program content

API (online read)

GET /api/v2/task-bank/problems/{id}?version=current
GET /api/v2/task-bank/problems/{id}/versions/{versionId}
GET /api/v2/task-bank/problem-sets/{id}
GET /api/v2/task-bank/activity-templates/{id}
GET /api/v2/task-bank/program-templates/{id}
POST /api/v2/task-bank/activity-templates/{id}/exports
POST /api/v2/task-bank/program-templates/{id}/exports
GET /api/v2/task-bank/content-export-snapshots/{id}
GET /api/v2/task-bank/variants/{id}
POST /api/v2/task-bank/check
{
"problemUsageId": "uuid",
"answer": { ... },
"context": { "lmsActivityAttemptId": "uuid", "userId": "uuid" }
}

POST /check — синхронная проверка простых типов; для сложных — через событие.

События

messageTypeКогда
task-bank.problem.publishedновая опубликованная версия
task-bank.problem.retiredзадача больше не используется в новых назначениях
task-bank.answer_check.completedрезультат отложенной проверки

Payload task-bank.answer_check.completed

{
"problemUsageId": "uuid",
"attemptId": "uuid",
"userId": "uuid",
"result": {
"verdict": "correct|incorrect|partial",
"score": 1.0,
"feedback": "string?"
},
"checkedAt": "ISO 8601"
}

Использование

  • LMS создаёт problem_usage в task-bank при добавлении задачи в урок/домашку;
  • LMS импортирует activity_template snapshot для lesson, homework, trainer, diagnostic или review context;
  • LMS импортирует program_template snapshot для course plan/course template, но не создаёт course напрямую из mutable program;
  • Для каждой problem version внутри snapshot LMS может создавать problem_usage records или хранить mapping snapshot item → LMS item.
  • Для тренажёра или разбора LMS создаёт usage context learning_training / learning_review; task-bank не создаёт learning group и не назначает ученика преподавателю.
  • При попытке решения LMS пишет lms_activity_attempt или learning_training_attempt, отправляет ответ в task-bank через /check или асинхронно.
  • Результат сохраняется в LMS как learning evidence; task-bank хранит только low-level problem_attempt + answer_check для воспроизводимости проверки.
  • Competition attempts/results не пишутся в LMS training tables; они приходят из competitions только как отдельный competition signal по competitions--lms.md.

Activity template import flow

  1. Методист публикует activity_template в task-bank.
  2. LMS запрашивает export snapshot для target lesson, homework, training или diagnostic.
  3. Snapshot фиксирует problem versions, sections, roles, scoring, visibility and comments.
  4. LMS создаёт lesson/homework/trainer object у себя.
  5. LMS назначает группу, расписание, преподавателя и attempts только в своём домене.

Program template import flow

  1. Методист публикует program_template.
  2. Program содержит tracks/modules/activity template sequence.
  3. LMS импортирует locked program snapshot.
  4. LMS создаёт course plan или course template.
  5. Enrollment, calendar, teacher assignment, progress and completion остаются LMS-owned.

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

  • attemptId — общий ключ;
  • проверка идемпотентна по (problemUsageId, attemptId).
  • namespace attempts должен различать lms_activity_attempt, learning_training_attempt и competition_submission.
  • export snapshot creation идемпотентен по (source_type, source_id, source_version, target_domain, target_type, target_id).

Retention

  • события — 90 дней;
  • task-bank problem_attempt/answer_check — по retention банка задач;
  • content export snapshots — не меньше retention LMS lesson/course objects, которые на них ссылаются;
  • LMS training attempts и learning evidence — по retention LMS/Learning Workspace.

Связанные ADR

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