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

task-bank → competitions

Зачем нужно

Task-bank поставляет задачи, подборки, версии задач, competition activity templates, locked content snapshots и source refs для LMS activity / temporary adapter. Task-bank не является runtime прохождения Олимпиады. Олимпиадный домен остаётся владельцем события, регистрации, допуска, submissions, score snapshots, итогового результата и публикации.

Стороны

  • источник: task-bank
  • потребитель: competitions
  • вид: online read + event-driven

API

GET /api/v2/task-bank/problem-sets/{id}
GET /api/v2/task-bank/activity-templates/{id}
POST /api/v2/task-bank/problem-sets/{id}/exports
POST /api/v2/task-bank/activity-templates/{id}/exports
GET /api/v2/task-bank/content-export-snapshots/{id}
GET /api/v2/task-bank/problems/{id}/versions/{versionId}
POST /api/v2/task-bank/problem-usages
POST /api/v2/task-bank/check (только как checking service для LMS/runtime или approved temporary adapter)
GET /api/v2/task-bank/problems/{id}/answer-schema (service-only; не делает competitions runtime)

События

messageTypeКогда
task-bank.problem_set.publishedопубликован/обновлён набор задач
task-bank.activity_template.publishedопубликован competition round design
task-bank.content_export_snapshot.lockedsnapshot набора или тура зафиксирован для competitions
task-bank.answer_check.completedlow-level check artifact для LMS/runtime или approved temporary adapter

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

  • Тур создаёт competition_tour_activity_binding, который хранит task_bank_source_ref, content_export_snapshot_id и LMS activity/item refs.
  • Competition round может быть построен из problem_set или activity_template(activity_type=competition_round).
  • Snapshot фиксирует problem version ids, item order, task roles (main, reserve, tie-breaker, sample), scoring rules, rubric refs, answer schema refs, embargo/publication policy and integrity hash.
  • Проверка ответов участников идёт в LMS activity runtime или temporary adapter; task-bank может быть checking/content service, но не owner attempt.
  • Для competitions-first MVP task-bank может быть отсутствующим: temporary content snapshot хранится внутри approved LMS-compatible adapter, а миграция в task-bank выполняется отдельной фазой после готовности task-bank.
  • competition_submission_id или LMS attempt ref передаётся в task-bank только как context ref для проверки; task-bank problem_attempt/answer_check не заменяют LMS activity attempt, competition_submission refs или competition_result.
  • Учебные тренажёры и разборы не создаются через competitions. Они живут в LMS/Learning Workspace и используют task-bank по task-bank--lms.md.
  • После завершения олимпиады можно создать отдельный training activity или public/training projection на основе competition snapshot. Competition submissions не переиспользуются как LMS attempts.

Locked competition snapshot

Locked snapshot immutable after tour lock/publication. Изменение исходной problem version, problem set или activity template создаёт новую версию и новый snapshot, но не меняет уже опубликованный тур.

Snapshot может содержать:

  • statement snapshot or immutable version refs;
  • answer schema secure refs;
  • scoring/rubric snapshot;
  • solution visibility policy;
  • role by item;
  • embargo/publication policy;
  • payload hash.

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

  • по context_domain + runtime_attempt_ref + problem_version_id.
  • task-bank не смешивает idempotency keys competition-mode attempts с LMS training attempts.

Ошибки

СценарийПоведение
problem set недоступен или не опубликованcompetitions блокирует activity binding до lock или показывает explicit issue администратору тура
activity template содержит unpublished problem versionexport snapshot не создаётся или остаётся failed с validation details
locked snapshot нужно исправитьсоздать новый snapshot и explicit competitions relink/relock decision
task-bank ещё не готов для первого запуска олимпиадыtemporary adapter использует только заранее утверждённый content snapshot; новые сезоны после task-bank readiness должны перейти на task-bank source refs
answer-schema запрошена без service token403, событие не публикуется
async check не завершён в SLALMS/runtime или adapter оставляет attempt/checking в pending; competitions синхронизирует status ref и создаёт alert

Scopes

ScopeДля чего
service:task-bank.problem_sets.readчитать опубликованные problem sets для тура
service:task-bank.activity_templates.readчитать competition round templates
service:task-bank.snapshots.readчитать locked snapshots
service:task-bank.answer_schemas.readчитать answer schema только backend-сервисом competitions
service:task-bank.checks.createзапускать автоматическую проверку ответов из LMS/runtime или approved adapter

Безопасность

  • доступ к problem_version для участников ограничен по правилам тура и времени тура;
  • competition embargo не должен утечь в storefront или LMS training до разрешённой даты;
  • answer-schema доступна только service-to-service runtime/checking layer; competitions не строит на нём собственный task runtime.
  • raw answers, answer keys и checking details не передаются в storefront или Learning Workspace как публичные данные.

Retention

  • task-bank source refs хранятся столько же, сколько сезон competitions;
  • content export snapshots хранятся не меньше срока хранения тура и результатов;
  • check events — 5 лет вместе с LMS/adapter attempts and competition submission refs;
  • локальный cache answer-schema очищается после закрытия тура.

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