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

ADR-038. Learning Workspace и преподавательский контекст

Контекст

Преподавательские сценарии проходят через несколько контуров: собственные учебные группы, ученики без официальной связи с организацией, приглашения, назначения, тренажёры, прогресс, связь с семьёй, участие в олимпиадах, организация и очные площадки. Если сделать отдельные пользовательские контексты "преподаватель", "организация" и "площадка", пользователь будет переключаться между техническими моделями вместо одной рабочей среды.

При этом глобальная роль teacher была уже запрещена ADR-016 и ADR-037: преподавательский доступ должен зависеть от конкретной связи, ресурса и permission продуктового домена. Нужна модель, которая сохраняет единый преподавательский рабочий слой, но не превращает анкету преподавателя или указанную организацию в источник прав.

Решение

  • В пользовательском интерфейсе есть один крупный преподавательский режим: Learning Workspace.
  • Внутри Learning Workspace пользователь выбирает организацию, если работает в организационном контуре. Выбор организации не создаёт отдельный верхнеуровневый пользовательский контекст.
  • Внутри выбранной организации могут быть подслои по ролям: преподавательский, административный и площадочный. Эти подслои являются product/resource scopes, а не отдельными identity-контекстами рядом с преподавательским.
  • Глобальной роли teacher нет. Преподавательский доступ складывается из educator_profile, active assignment/membership, grants и permissions домена-владельца.
  • educator_profile — анкета пользователя: контакты, предметы, классы, заявленная организация и trust status. Он не выдаёт прав сам по себе.
  • Learning Workspace не равен identity, организации, LMS-группе живого курса, олимпиадной группе или семье. Это рабочий слой преподавателя для групп, учеников, приглашений, назначений, олимпиад, тренажёров, прогресса и связи с семьёй.
  • Самозаявленный преподаватель может заполнить educator_profile, указать организацию, создать свои learning_group и работать со своими learning_group_participant. Он не получает доступ к чужим группам, официальной статистике или официальному контуру организации без active membership, assignment, grant или permission продуктового домена.
  • organization_student — официальная или подтверждённая запись ученика в организационном контуре. Это не универсальный список всех учеников всех преподавателей.
  • Обычные рабочие ученики преподавателя идут через learning_group_participant.
  • Родитель действует в родительском режиме и не становится ребёнком. Если родитель зарегистрировал ребёнка на олимпиаду, прохождение ребёнком идёт в детском режиме; audit сохраняет реального adult actor, если переход выполнен через delegated/session механизм.
  • Для официальных олимпиад учитель может инициировать сбор данных родителя и ребёнка только через разрешённый official flow. Learning Workspace не становится владельцем СНИЛС, даты рождения, email или телефона родителя; identity хранит protected attributes/contact records и pending parent invite.

Последствия

  • Identity хранит аккаунт, educator_profile, family, organization access layer и actor context, но не владеет Learning Workspace.
  • LMS владеет рабочим слоем Learning Workspace, learning_group и learning_group_participant; продуктовые сущности внутри workspace остаются у своих доменов.
  • Competitions владеет олимпиадными участниками, регистрациями, площадками и результатами, но не использует organization_student как универсальный список учеников преподавателя.
  • Площадочный слой доступен только как подслой выбранной организации или product scope домена competitions, а не как отдельный пользовательский контекст.
  • Pending parent invite, созданный из teacher official flow, не является родительским доступом до подтверждения родителем или trusted flow.
  • Management и CRM могут строить официальные отчёты только по подтверждённым organizational/product facts, а не по самозаявленной анкете преподавателя.

Альтернативы

АльтернативаПочему отвергнута
Сделать глобальную роль teacherРоль не описывает область доступа и нарушает ADR-016
Сделать отдельные пользовательские контексты "организация" и "площадка"Пользовательский режим дробится на технические access scopes; площадка становится конкурентом преподавательского workspace
Использовать organization_student для всех учеников преподавателяОфициальный организационный список смешивается с рабочими учениками самозаявленных преподавателей
Делать Educator Profile источником правАнкета и trust status становятся неявным RBAC без membership, assignment и audit
Считать Learning Workspace LMS-группой живого курсаWorkspace шире LMS-группы: он содержит рабочие группы, олимпиады, тренажёры, прогресс и коммуникации

Связи