Skip to content

feat(programs): панель организатора — приватный API V1 - #779

Merged
TThanos3000 merged 1 commit into
devfrom
feature/dev-program-management-v1
Oct 16, 2026
Merged

TThanos3000 merged 1 commit into
devfrom
feature/dev-program-management-v1

Conversation

@TThanos3000

@TThanos3000 TThanos3000 commented Oct 16, 2026 •

Copy link
Copy Markdown
Collaborator

Что изменено

Организатор получает приватный API для панели программы: таблицы участников с почтой, проектов со сдачей/оцениванием и презентацией, состав команды и чтение оценок выбранного проекта. Настройки программы и материалы сохраняются через ограниченные program-scoped endpoints.

Зачем

Перенести согласованный V1 управления из разрозненных переходов в UI организатора. Утверждённый дизайн, контракт: docs/modules/program-management.md.

Реализация

Отдельные serializers/services/views, серверные поиск/пагинация/фильтры. Статусы проектов повторно используют существующую SQL-классификацию аналитики. Версии expected_updated_at, блокировка записей и 409 защищают от потери изменений; повторное открытие срока требует подтверждения. Удаление материала сохраняет UserFile. Добавлен точный project_id, сужающий существующий queryset оценивания.

API

Новые /programs/:id/management/ GET, scoped settings PATCH и materials POST/PATCH/DELETE. Существующие публичные DTO и scoring POST сохранены. Whitelist не допускает изменения managers, draft, конкурсности, критериев или участников/проектов.

UI

UI находится в Angular PR #428; реальная связка с API проверена локально в Chrome на desktop1440/mobile390/360.

Permissions

Manager именно этой программы либо существующий staff/superuser. Чужая программа403, отсутствующая404, чужой link/material404. Эксперт без manager не получает панель; manager без expert не получает право оценивать. Новый файл принадлежит автору либо сохраняется прежний источник материала.

Проверки

  • manage.py test partner_programs.tests.test_management_api partner_programs.tests.test_manager_analytics_api partner_programs.tests.test_case_analytics_api partner_programs.tests.test_assignment_analytics_api project_rates --noinput — 106 PASS, отдельный PostgreSQL18, settings_ci.
  • Полный Backend PostgreSQL CI — 1054 PASS, commit 58f460c; GitHub Lint PASS и legacy Tests PASS (14m47s).
  • makemigrations --check --dry-run — No changes detected.
  • Flake8 по всем изменённым Python; Black новых файлов; diff check.
  • Browser: таблицы/выбор/команда/readonly evaluation, настройки и 409 reopen, URL material CRUD, ошибки/403, обновление публичной страницы.

Acceptance criteria

  • Email/регистрация в этой программе; scoped readonly team/projects.
  • Сдача/оценивание раздельно, partial/не применимо, программа не смешивает оценки с чужой.
  • Settings whitelist/version/reopen и file ownership/retention.
  • Прямые запросы не расширяют права; совместная роль manager/expert проверена.

Не проверено

Реальная отправка файла в Selectel CDN не выполнялась; transport не менялся. Dev после merge и production требуют обычной приёмки.

Риски / migration

Миграций нет. Внедрять API раньше Angular. Merge и deployment выполняет пользователь. Индивидуальные действия участников, возврат/исключение проектов и массовые операции вне V1.

@TThanos3000
TThanos3000 merged commit 09b29bf into dev Oct 16, 2026
3 checks passed
Sign up for free to 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.

2 participants