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

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

Event

draft -> active -> archived

Season

draft -> registration_open -> running -> checking -> results_review -> published -> archived
draft|registration_open|running -> cancelled

Правила:

  • registration_open требует registration policy;
  • running требует хотя бы один scheduled/open tour;
  • published требует publication decision;
  • cancelled season не удаляет registrations и payments.

Tour

draft -> scheduled -> open -> closed -> checking -> results_ready -> published -> archived
draft|scheduled|open -> cancelled

Правила:

  • open требует locked tour activity binding или explicit no-task policy;
  • closed запрещает новые submissions, кроме admin override;
  • published не равен public results: публикация результатов отдельная.

Registration

draft -> pre_submitted -> needs_completion -> submitted -> pending_review -> approved
submitted -> approved
submitted|pending_review -> rejected
pre_submitted|needs_completion|submitted|pending_review -> duplicate_hold
duplicate_hold -> needs_completion
duplicate_hold -> rejected
pre_submitted|needs_completion|submitted|pending_review|duplicate_hold -> cancelled
approved -> cancelled

Правила:

  • предварительная регистрация фиксирует намерение участвовать, но не даёт полный допуск;
  • needs_completion означает дозаполнение обязательных полей регламента или оплаты;
  • pending_review означает ручную проверку данных, оплаты, official data package или duplicate decision;
  • duplicate_hold блокирует approval до ручного решения по дублю участника;
  • stage остаётся отдельным two-step измерением: pre_registration, details_required, ready_for_review, complete;
  • official data package требуется только если registration policy помечает сценарий как официальный;
  • paid season может требовать CRM payment/entitlement before approval;
  • parent registration создаёт участие ребёнка, но прохождение тура открывается ребёнку в child mode;
  • teacher registration использует Learning Group; competition_group фиксирует snapshot сезона.

Official data package

not_required
not_filled -> incomplete -> needs_verification -> confirmed
not_filled|incomplete|needs_verification -> rejected
rejected -> incomplete

Правила:

  • package состоит из СНИЛС ребёнка, даты рождения ребёнка, email родителя и телефона родителя;
  • сырые official-поля живут в identity/protected attributes;
  • competitions хранит только requirement/status/ref/audit: official_data_ref, parent_contact_ref, parent_invite_ref, collector/verifier fields;
  • confirmed требует protected identity ref и audit проверки;
  • teacher collection возможен только через разрешённый official flow и не выдаёт родительские права.

SeasonParticipation

pending -> active -> completed
pending|active -> withdrawn
active -> disqualified

TourParticipation

pending -> admitted -> active -> completed
pending|admitted|active -> withdrawn
active -> disqualified

Правила:

  • delivery mode задаётся на TourParticipation;
  • track может изменяться только с audit до finalization.

Submission

not_started -> started -> submitted -> locked -> checking -> checked
started|submitted -> void
submitted -> locked

Правила:

  • после locked участник не редактирует работу;
  • raw attempt/response может жить в LMS activity runtime или temporary adapter; competitions хранит competition-facing status/ref;
  • отправка первым туром по группе блокирует работы отправленных учеников, но не запрещает досылку новых учеников до окончания окна тура, если регламент разрешает;
  • перед пакетной отправкой ответов нужен warning с числом учеников, незаполненными ответами и необратимостью lock;
  • void требует reason;
  • checked submission или finalized runtime score snapshot может участвовать в result calculation.

Photo report

submitted -> confirmed
submitted -> unconfirmed
unconfirmed -> submitted

Правила:

  • unconfirmed требует комментарий проверяющего;
  • повторная отправка не удаляет предыдущий audit;
  • подтверждение фотоотчёта не меняет баллы и результаты.
  • фотоотчёт может быть связан с venue_id, competition_group_id и/или teacher_conduct_application_id.

Tour activity binding

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

Правила:

  • locked activity binding / task structure нельзя менять без новой версии или admin audit;
  • binding хранит LMS activity ref или temporary adapter ref;
  • score snapshots должны ссылаться на locked activity item refs;
  • published training material не влияет на competition result.

Training publication

draft -> scheduled -> published
draft -> published
published -> paused -> published
draft|scheduled|published|paused -> archived

Правила:

  • lms_ref обязателен для LMS-разбора, тренажёра или mock contest;
  • storefront_ref является публичной проекцией и не заменяет lms_ref;
  • training_mode: practice, timed_practice, review_mode, mock_contest;
  • опубликованный тренажёр не создаёт competition attempt/submission и не влияет на соревновательный результат.

Result

draft -> calculated -> review -> finalized
draft|calculated|review -> void
review|finalized -> review [is_withheld=true]
review [is_withheld=true] -> review [is_withheld=false]

Правила:

  • finalized result нельзя менять без recalculation/amendment и audit;
  • finalized result видим только после отдельной publication action.
  • withheld result не попадает в публикацию класса/зачёта до ручного решения.
  • award status выбирается из справочника: diploma_1, diploma_2, diploma_3, honorable_mention_1, honorable_mention_2, participation_certificate, no_award.
  • отдельная reference table предпочтительнее enum-only поля, чтобы хранить порядок, display name и тип документа.

Publication

draft -> scheduled -> published -> archived
published -> hidden
hidden -> published

Правила:

  • public publication requires finalized results;
  • результаты публикуются отдельно по классам и зачётам;
  • процентные ориентиры наград должны быть зафиксированы в threshold snapshot и утверждены вручную;
  • work publication can be personal-only.

Venue application

draft -> submitted -> approved
submitted -> needs_changes -> submitted
submitted -> rejected
draft|submitted|needs_changes|approved -> cancelled

Правила:

  • approved application может создать или обновить competition_venue;
  • опубликованная площадка может быть видна списком, на карте или в обоих представлениях;
  • вместимость нельзя уменьшить ниже текущего числа активных участников без admin transfer process.
  • заявка хранит условия прихода участника: access_rules, required_documents, guardian_policy, facility_rules, technical_capabilities, participant_public_comment, admin_internal_comment.
  • participant/public payload не включает technical_capabilities и admin_internal_comment.

Teacher conduct application

draft -> submitted -> approved -> completed
submitted -> needs_changes -> submitted
submitted -> rejected
draft|submitted|needs_changes|approved -> cancelled

Правила:

  • заявка преподавателя на проведение отделена от регистрации учеников;
  • approval_required определяется policy; submitted может разрешать обычный first-tour operational flow, но участники всё равно регистрируются через competition_registration;
  • approved нужен для закрытых материалов, официального финала, открытой площадки или risk/admin policy;
  • заявка связана с season, tour, organization, submitted_by, location, expected count, planned dates, grades, delivery mode, contact snapshot and photo report policy;
  • completed не меняет результаты напрямую и используется для отчётности, материалов и благодарностей.

Teacher material

draft -> published -> archived
draft -> archived

Правила:

  • доступность материала дополнительно ограничивается visibility, available_from, available_until, season/tour status and teacher organization access;
  • материалы преподавателя могут ссылаться на conduct application, tour, generated document or file ref;
  • closed material access is audited.

Venue assignment

assigned -> confirmed -> attended
selected -> assigned
selected|assigned|confirmed -> transferred
selected|assigned|confirmed -> cancelled
confirmed -> no_show

Правила:

  • у участника может быть только одно активное назначение на площадку одного тура;
  • смена площадки после закрытия выбора требует правила сезона или действия администратора.

Access claim

requested -> approved
requested -> rejected
requested -> cancelled

Правила:

  • approved claim links access context через identity/family contract;
  • все решения аудируются.

Appeal

draft -> submitted -> in_review -> accepted
submitted|in_review -> rejected
draft|submitted -> cancelled

Правила:

  • MVP-апелляция относится к несогласию с проверкой или результатом;
  • UI-статус “Новая” мапится на технический submitted; отдельный technical new не вводится;
  • accepted appeal создаёт новую score/check версию или recalculation run;
  • appeal не используется для подозрительных работ и дисциплинарных решений.

Arbitration case

opened -> in_review -> cleared
opened|in_review -> sanctioned
cleared|sanctioned -> closed

Правила:

  • arbitration case относится к подозрительным работам, нарушениям регламента и санкциям;
  • арбитраж может удержать результат от публикации;
  • арбитраж не заменяет пользовательскую апелляцию.

External teacher profile

pending -> verified
pending -> rejected
verified -> revoked
rejected -> pending

Правила:

  • только verified профиль может регистрировать участников от имени группы;
  • revoked сохраняет историю связей и audit;
  • повторная заявка после rejected создаёт новую проверку без удаления старого audit.
pending -> active
pending -> rejected
active -> revoked
revoked -> pending

Правила:

  • active link уникален для пары external_teacher_profile_id + participant_id;
  • связь не даёт доступ к результатам до публикации и проверки visibility gates;
  • revoke не удаляет историю регистраций.

Award document

pending -> generated
pending -> failed
generated -> revoked
failed -> pending

Правила:

  • generated document references finalized result;
  • revoked document сохраняет verification history.