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

Статусные модели

Problem

draft -> review -> published -> archived
published -> retired
archived -> published

Правила:

  • published означает, что у problem есть хотя бы одна published version;
  • retired запрещает новые usage, но не ломает historical attempts;
  • archive скрывает из редакционных списков по умолчанию.

Problem version

draft -> review -> published -> retired
review -> draft

Правила:

  • published version immutable;
  • новая редакция условия создаёт новую version;
  • version нельзя published без statement, answer schema, checking rule и taxonomy minimum;
  • retired version сохраняется для history.

Problem set

draft -> review -> published -> archived
review -> draft

Правила:

  • published set должен иметь хотя бы один item;
  • competition set может быть hidden до завершения события;
  • изменение published set создаёт новую редакцию или требует explicit audit.

Activity template

draft -> review -> approved -> published -> retired
review -> draft
published -> archived
archived -> published

Правила:

  • published activity template immutable или получает новую version;
  • template не содержит roster, schedule, attendance или assignment;
  • export во внешний домен создаёт content_export_snapshot;
  • competition round design может быть hidden/embargoed до lock тура.

Program template

draft -> review -> approved -> published -> retired
review -> draft
published -> archived
archived -> published

Правила:

  • published program template immutable или получает новую version;
  • program не содержит enrollment, calendar, teacher assignment или progress;
  • изменение tracks, modules, sequence or replacements создаёт новую version;
  • LMS course/course plan создаётся только из snapshot.

Content export snapshot

draft -> exported -> locked -> active -> retired
draft|exported -> failed
failed -> draft

Правила:

  • locked snapshot immutable;
  • snapshot фиксирует problem versions, order, roles, policies, scoring and lineage;
  • target domain не должен зависеть от mutable draft;
  • payload не содержит answer key, hidden solution, teacher notes or rubric без target scope/policy;
  • исправление locked snapshot требует нового snapshot and explicit target relink/relock.

Problem relation

suggested -> confirmed
suggested -> rejected
confirmed -> hidden
rejected -> suggested

Правила:

  • self-link forbidden;
  • prerequisite directed and acyclic;
  • machine-suggested similar не становится analog без moderation;
  • hidden relation не показывается public catalog and recommendations.

Publication profile

draft -> candidate -> ready -> published
published -> hidden
published -> embargoed -> published
ready -> hidden

Правила:

  • public task requires primary topic;
  • canonical URL remains /tasks/<taskId>;
  • source license/status must allow publication;
  • answer key and hidden solutions are excluded from public projection.

Problem usage

draft -> active -> locked -> archived
active -> suspended -> active

Правила:

  • active usage имеет scoring rule snapshot;
  • locked usage запрещает менять problem version;
  • archived usage не создаёт новые attempts.

Attempt

started -> submitted -> checking -> checked
started|submitted -> cancelled
submitted|checking -> void

Правила:

  • submitted attempt immutable для ученика;
  • checked attempt имеет answer check;
  • void требует reason;
  • retry создаёт новый attempt, если context policy разрешает.

Answer check

pending -> checked
pending -> needs_manual_review -> checked
pending -> failed
checked -> overridden

Правила:

  • failed check может быть retried без изменения attempt;
  • overridden требует permission, actor и reason;
  • checked result создаёт evidence, если usage policy разрешает.

Manual review

open -> assigned -> checked
assigned -> returned
returned -> assigned
open|assigned -> cancelled

Правила:

  • assigned review имеет проверяющего;
  • checked review создаёт answer check или override;
  • returned требует комментария.

Fact visibility

Решения, ключи и подсказки не имеют отдельного простого статуса. Их доступ рассчитывается из:

  • problem version status;
  • usage visibility policy;
  • actor permissions;
  • context status из LMS/competitions;
  • release time или publication rule.

Import job

uploaded -> parsed -> validated -> imported
uploaded|parsed|validated -> failed
validated -> cancelled

Правила:

  • imported job пишет audit и source refs;
  • failed job хранит ошибки без раскрытия закрытых answer keys наружу.