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

Связи задач

Зачем нужно

Связи задач нужны для дедупликации, методического проектирования, рекомендаций, prerequisites, построения подборок и подготовки вариантов туров. Слово variant нельзя использовать как общий термин для всех похожих задач.

Типы связей

ТипСмыслНаправленность
duplicateфактически та же задача или дубль записиsymmetric
analogта же задача с непринципиальными изменениями: числа, имена, декорацииsymmetric
parameterized_variantвариант из общей параметрической схемыsymmetric or generated_from
set_variantA/B вариант внутри набора, тура или activitycontext-bound
similarпохожая задача для рекомендаций, без editorial identitysymmetric
prerequisiteA полезно решить до Bdirected
same_methodрешается тем же методомsymmetric

Правила

  • Self-link запрещён.
  • duplicate, analog, similar, same_method нормализуются как symmetric.
  • prerequisite направленный и не должен создавать cycles.
  • similar может быть machine-suggested, но не становится analog без модерации.
  • duplicate может вести к merge/review flow, но merge не выполняется автоматически.
  • set_variant существует в контексте набора, activity или тура.

Moderation

Статусы:

  • suggested;
  • confirmed;
  • rejected;
  • hidden.

Связь должна хранить автора, модератора, вес и metadata с обоснованием. Для generated relations нужно хранить источник алгоритма и confidence.

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

  • Каталог показывает related tasks через public-safe subset.
  • Методист строит prerequisites для программ и занятий.
  • Competitions использует set_variant для main/reserve/tie-breaker/sample roles.
  • LMS recommendations могут читать confirmed/safe relations, но не менять canonical relation без task-bank permission.

Готовность

  • duplicate, analog, variant, similar and prerequisite имеют разные semantics;
  • prerequisite cycles отклоняются;
  • relation moderation есть в UI/API;
  • public catalog не раскрывает закрытые связанные задачи;
  • recommendations не подменяют editorial confirmation.