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

Функционал внешних преподавателей

Зачем нужно

Внешний преподаватель участвует в олимпиадах через преподавательский режим с выбранной организацией и должен управлять только своим разрешённым контуром Learning Groups, registration snapshots и помощников.

Кто использует

  • внешний преподаватель;
  • координатор олимпиады;
  • администратор;
  • support.

Сценарии

  • зарегистрироваться как внешний преподаватель;
  • подтвердить роль;
  • выбрать Learning Group;
  • создать season snapshot;
  • зарегистрировать участников на тур;
  • подать заявку на проведение первого тура;
  • открыть материалы олимпиады для анонса, проведения и отчёта;
  • добавить помощников с урезанными правами;
  • отслеживать статусы;
  • отправить ответы по ученикам с предупреждением и lock;
  • получить результаты;
  • скачать документы;
  • передать вопрос в support.

Данные

СущностьНазначение
external_teacher_profilecompetition-specific projection/access record внешнего преподавателя: identity_user_id, snapshot имени, организация, статус проверки
external_teacher_student_linkразрешённая связь преподавателя с участником
learning_group_idexternal ref на каноническую группу в Learning Workspace
competition_groupseason-specific snapshot/projection Learning Group
competition_group_helperпомощник с урезанными правами
competition_registrationрегистрация участника или группы
competition_teacher_conduct_applicationзаявка преподавателя на проведение тура для своих учеников
competition_teacher_materialteacher-facing материал сезона или тура
competition_resultрезультат, видимый по правилам публикации
competition_award_documentдокумент, доступный после публикации

Правила

  • Внешний преподаватель видит только связанных учеников и разрешённые олимпиады.
  • Канонический профиль преподавателя живёт в identity-owned EducatorProfile.
  • external_teacher_profile не является вторым canonical profile преподавателя.
  • Права не выдаются из факта наличия profile; они идут через selected organization, Learning Workspace, grants и capabilities.
  • Канонический список учеников живёт в Learning Workspace / Learning Group.
  • competition_group нельзя использовать как общий список «моих учеников».
  • Подтверждение роли должно иметь статус и источник.
  • Результаты показываются по правилам публикации конкретной олимпиады.
  • Преподаватель не может менять ответы, баллы и итоговые результаты.
  • Преподаватель может отправлять ответы за учеников только до lock и в рамках delivery policy.
  • Текстовое поле «учитель» в анкете участника не создаёт связь с внешним преподавателем.
  • Заявка на проведение не заменяет регистрацию учеников и competition_group snapshot.
  • Материалы тура открываются только по availability window и visibility.

Заявка преподавателя на проведение

Teacher conduct application — отдельный flow “Провести Олимпиаду” для первого тура или другого teacher-led тура.

Зачем нужна:

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

Минимальные поля:

ПолеОписание
season_id, tour_idкакая олимпиада и тур проводятся
identity_organization_idвыбранная организация преподавателя
location_textшкола, кабинет, адрес или текстовое описание
expected_participant_countпримерное количество участников
planned_date_from, planned_date_toдата или период проведения
grade_categoriesклассы
delivery_modeteacher_led, online_supervised, mixed
contact_snapshotemail, телефон, мессенджер
photo_report_requiredожидается ли фотоотчёт

Статусы: draft, submitted, approved, needs_changes, rejected, cancelled, completed. Для MVP достаточно submitted, approved, cancelled, completed.

approval_required определяется policy. В обычном первом туре submitted может быть достаточно для регистрации учеников и доступа к открытым материалам; approved нужен для закрытых материалов, официального финала, открытой площадки или risk/admin policy.

После submitted или approved согласно policy преподаватель всё равно выбирает Learning Group, создаёт competition_group snapshot, регистрирует учеников, проводит тур и отправляет ответы. Заявка не создаёт участников автоматически.

Материалы преподавателя

В преподавательском режиме нужен раздел “Материалы Олимпиады”. Это не только материалы тура, а полный набор для анонса, проведения и отчёта.

Типы материалов:

ТипНазначение
poster, bannerраспечатать, отправить в чат или опубликовать на сайте школы
announcement_text, school_news_textтекст анонса или новости
teacher_instruction, student_instruction, parent_instructionинструкции
tour_materialзадания, бланки, варианты, если открыты
participant_listсписок участников перед проведением
report_template, photo_reportотчётность после тура
results_news, gratitudeитоговая новость и благодарности

Правила доступности:

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

API

MethodEndpointНазначение
POST/api/v2/competitions/external-teachers/profileсоздать или обновить профиль
POST/api/v2/competitions/external-teachers/profile/verifyотправить подтверждение роли
POST/api/v2/competitions/external-teachers/studentsдобавить связь с учеником/participant
DELETE/api/v2/competitions/external-teachers/students/{participantId}отозвать связь
GET/api/v2/competitions/teacher/organizations/{organizationId}/learning-groupsвыбрать Learning Groups
POST/api/v2/competitions/teacher/competition-groupsсоздать snapshot сезона
POST/api/v2/competitions/teacher/competition-groups/{groupId}/helpersдобавить помощника
GET/api/v2/competitions/teacher/conduct-applicationsсписок заявок на проведение
POST/api/v2/competitions/teacher/conduct-applicationsподать заявку на проведение
GET/api/v2/competitions/teacher/seasons/{seasonId}/materialsматериалы сезона
GET/api/v2/competitions/teacher/tours/{tourId}/materialsматериалы тура
POST/api/v2/competitions/registrationsзарегистрировать ученика или группу
POST/api/v2/competitions/teacher/tours/{tourId}/group-submissionsотправить ответы по группе
GET/api/v2/competitions/external-teachers/resultsрезультаты доступных учеников

Permissions: competitions.external_teachers.manage.own, competitions.participants.manage.assigned, competitions.results.read.assigned.

Серверная часть

Серверная часть хранит профиль внешнего преподавателя, связи с участниками, season snapshots Learning Groups, статусы подтверждения и аудит действий с регистрациями.

Статусы профиля: pending -> verified -> revoked; pending -> rejected; rejected -> pending после новой заявки.

Интерфейс

  • кабинет внешнего преподавателя;
  • выбор организации;
  • список Learning Groups из Learning Workspace;
  • CompetitionGroup snapshots сезона;
  • регистрация на олимпиаду;
  • помощники;
  • заявки на проведение;
  • материалы олимпиады;
  • отправка ответов по группе с warning;
  • статусы участия;
  • результаты и документы;
  • состояния неподтверждённой роли.

Интеграции

  • identity — аккаунт и роль;
  • Learning Workspace — canonical groups and rosters;
  • CRM — контакты и обращения;
  • competitions — участники, туры, результаты;
  • storefront — публичная регистрация;
  • notifications — статусы и напоминания.

Безопасность

Нужны проверка связи с Learning Group/snapshot, ограничение видимости результатов, урезанные права помощников и аудит действий внешнего преподавателя.

Нестандартные случаи

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

Готовность

  • внешний преподаватель проходит регистрацию и подтверждение;
  • может вести своих учеников через Learning Groups и season snapshots;
  • может подать заявку на проведение и видеть её статус;
  • может открыть teacher materials по доступным сезонам и турам;
  • может добавить помощника с ограниченными правами;
  • не видит чужие данные;
  • получает статусы, результаты и документы по правилам публикации.