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

ADR-031. Участник олимпиады без identity и claim-доступ

Контекст

Олимпиады должны поддерживать учеников, которых добавил преподаватель или организация без аккаунта identity. При этом общий принцип identity остаётся: один identity-пользователь — один аккаунт.

Решение

  • competition_participant может существовать без identity_user_id;
  • claim-доступ связывает существующего participant с identity user через competition_access_claim;
  • после успешной привязки в одном season допускается только один активный competition_participant на identity_user_id;
  • если найден дубль, competitions выполняет merge до approve claim и пишет audit.

Последствия

  • external participant не нарушает identity invariant, потому что ещё не является identity user;
  • результаты и submissions сохраняют историю до и после claim;
  • schema обязана иметь partial unique index по (season_id, identity_user_id).

Связи

  • relates: ADR-016;
  • relates: ADR-017;
  • relates: ADR-024.