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

Data mapping — competitions

Источники

  • Мир Олимп: события, сезоны, туры, регистрации, участники, результаты, документы;
  • ручные таблицы по сезонам;
  • внешние данные комитетов и организаций;
  • архивы дипломов и грамот.

Mapping сущностей

Исходная сущностьЦелевая сущностьПравило
Мир Олимп eventcompetition_eventсохранить slug
seasoncompetition_season
tourcompetition_tour
track/categorycompetition_trackmapping категорий
venuecompetition_venueдля очных площадок
registrationcompetition_registrationсохраняем дату и платёж
participantcompetition_participantlinked to users.id или standalone
group (учителя)competition_group snapshotтолько event/season access snapshot; canonical roster переносится в LMS learning_group
group membercompetition_participantlinked to learning_group_participant_id или organization_student_id только как external ref
access claimcompetition_access_claimдля доступа к сканам
tour activity / task structurecompetition_tour_activity_binding, competition_tour_task_structure, competition_tour_task_itemrefs на LMS activity / temporary adapter и task-bank source refs; без competition-owned task runtime
Мир Олимп project task settask-bank problem_set или activity_template(type=competition_round) + competitions bindingcontent остаётся task-bank, проведение остаётся competitions
locked tour task contenttask-bank content_export_snapshot + competitions score snapshotspublished tour не меняется от будущих правок task-bank
submissioncompetition_submissionсохраняем refs/status на LMS/adapter attempt; файлы и сканы остаются в LMS/adapter/private storage
checkcompetition_checkstatus refs и imported/manual metadata; detailed checking живёт в LMS/adapter
score by itemcompetition_scoreimmutable score snapshot: task number, max score, item ref, score, checking status
resultcompetition_resultбаллы, место, статус финализации; publication отдельно
publicationcompetition_publicationфиксированная дата
diploma/awardcompetition_award_documentсвязь с участником

Сценарии

  • архивные сезоны переносятся как read-only исторические данные;
  • до разработки выбран ранний migration decision по Мир Олимп: new season only, archive only, import tasks, import seasons/results или hybrid;
  • активные сезоны — параллельно работают в Мир Олимп и целевом домене только если это выбранный migration path;
  • внешние преподаватели проходят мэтчинг с identity по email/phone и связываются с identity-owned educator_profile;
  • старые группы учителей разделяются: roster → LMS learning_group, олимпиадный доступ/история сезона → competition_group snapshot.

Стратегия

  • read-only mirror архива;
  • активные сезоны — постепенная параллельная работа только при выбранном hybrid/import path;
  • C32 реализует выбранный migration path, а не принимает решение впервые перед launch hardening;
  • write switch — после завершения текущего сезона по событию или после отдельного archive-only/new-season decision.

Риски и контроль

  • утрата ссылок на задачи → проверяется через task-bank import и locked activity binding/source refs;
  • изменение задач после lock тура → проверяется через content_export_snapshot.payload_hash;
  • неподписанные дипломы → пакетная проверка перед публикацией;
  • расхождение результатов между системами → согласование с комитетом.
  • competition_group случайно используется как учебный roster → migration check блокирует записи без LMS learning_group mapping.
  • historical submissions случайно становятся LMS training attempts → migration check блокирует запись без явного competition context и score snapshot mapping.

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