competitions → management
Зачем нужно
Management получает результаты олимпиад и факты участия для аналитики, целей и dashboards. Эта интеграция не передаёт канонический список учеников или учебные группы: такие списки живут в LMS/Learning Workspace.
Стороны
- источник: competitions
- потребитель: management
- вид: event-driven + sync snapshot
События
| messageType | Когда |
|---|---|
competitions.registration.created | новая регистрация |
competitions.participant.joined | участник принят |
competitions.submission.received | получен submission |
competitions.result.published | опубликован результат |
competitions.award.issued | выдан наградной документ |
competitions.season.closed | сезон закрыт |
Online read
GET /api/v2/competitions/events/{eventRef}/results
GET /api/v2/competitions/participants/{userId}/history
Поведение management
- агрегаты по олимпиадам в dashboards;
- результаты учитываются как
goal_evidenceдля целейgoal_subject; - learning recommendations могут опираться на результаты участия, но назначение тренажёра/разбора выполняется через LMS/Learning Workspace;
- management не создаёт
competition_groupи не использует его как список «мои ученики».
Идемпотентность
- по
messageId; - результаты — по
competition_result_id+messageVersion.
Ошибки
| Сценарий | Поведение |
|---|---|
| result без participant/user mapping | сохранить как anonymous competition evidence, не создавать goal evidence |
| result с group-only mapping без Learning Workspace/user ref | сохранить только aggregate competition evidence |
| season неизвестен management | DLQ + alert для синхронизации reference |
| повторная публикация результата | обновить projection по competition_result_id |
Scopes
| Scope | Для чего |
|---|---|
service:competitions.results.read | читать published/personal result snapshots |
service:competitions.participants.read | читать history участника |
Связанные ADR
Retention
- события 5 лет (история участия);
- агрегаты — постоянно.