Skip to content

Add program analytics access contract - #695

Merged
TThanos3000 merged 1 commit into
masterfrom
feature/dev-091-analytics-contract-api
Aug 13, 2026
Merged

Add program analytics access contract#695
TThanos3000 merged 1 commit into
masterfrom
feature/dev-091-analytics-contract-api

Conversation

@TThanos3000

Copy link
Copy Markdown
Collaborator

Что изменено

  • GET /programs/<program_id>/manager-overview/ дополнен полем participants.total.
  • Участники считаются как уникальные ненулевые PartnerProgramUserProfile.user_id внутри существующей агрегации регистраций.
  • Добавлен authenticated endpoint GET /programs/managed/ для списка программ организатора.
  • Менеджер видит только назначенные ему программы, включая черновики; staff и superuser видят все программы.
  • Публичный контракт GET /programs/ не изменён, моделей и миграций нет.

Контракты и безопасность

Сводка сохраняет все существующие поля. registrations.total продолжает считать все записи регистрации, включая записи с удалённым пользователем, а participants.total исключает user=null и считает пользователя один раз.

Список управляемых программ возвращает только id, name и draft, стабильно сортируется по name, затем id, и выполняется одним SQL-запросом без N+1.

Проверки

  • Black для изменённых Python-файлов — пройден.
  • Flake8 для изменённых Python-файлов — пройден.
  • py_compile — пройден.
  • model checks — пройдены.
  • проверка состояния миграций — новых миграций нет.
  • git diff --check — пройден.

Локальный targeted и полный suite не смогли подключиться к PostgreSQL на localhost:5432; окончательная проверка выполняется в PostgreSQL CI.

@TThanos3000
TThanos3000 marked this pull request as ready for review August 13, 2026 15:22
@TThanos3000
TThanos3000 merged commit 969f5b1 into masterAug 13, 2026
5 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@TThanos3000