Skip to content

feat: меню строк и массовый выбор в панели организатора - #467

Merged
TThanos3000 merged 2 commits into
devfrom
feat/dev-management-row-actions-20261020
Oct 20, 2026
Merged

TThanos3000 merged 2 commits into
devfrom
feat/dev-management-row-actions-20261020

Conversation

@TThanos3000

@TThanos3000 TThanos3000 commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Что изменено

Меню трех точек заменяет одиночные плашки действий в строках участников, проектов, экспертов, организаторов, материалов и распределения. Чекбоксы включают отдельную плавающую панель массовых действий, которая не двигает таблицу.

Зачем

Добавить действия без перегрузки строк и сохранить стабильную таблицу при выборе. «Выбрать все» охватывает всю выборку по фильтрам, включая другие страницы.

Реализация

  • Участники, проекты и эксперты по 20 записей; выбор сохраняется при пагинации и сбрасывается при изменении фильтра. Поздний ответ старого select-all не восстанавливает выбор.
  • Участники: «Дата регистрации», имя ведет в профиль, анкета из меню; дата последней активности остается. Массовая выгрузка и удаление регистрации через серверный preview. Лидер получает предупреждение с точными заявками; общая команда и аккаунты сохраняются.
  • Проекты: фильтр «Оцененные / Неоцененные», массовое назначение через существующий редактор с глобальными ID проектов. Несданные проекты, разные кейсы и недоступные команды имеют понятные ограничения.
  • Эксперты: массовое изменение кейсов, повторная отправка/отзыв приглашений. Защита оценивших экспертов и последнего организатора сохраняется.
  • Общий RowActions на Angular CDK Menu: overlay вне overflow таблицы, keyboard, Escape/focus, читаемые причины недоступных действий. На телефоне область нажатия меню и чекбоксов 44px; кнопки остаются тонкими.

API

Использует новые program-scoped selection/export/removal/experts-bulk endpoints из API #804. Запросы удаления и экспорта выбранных выполняются без retry; camel/snake преобразование и Blob проверены тестами. Сначала требуется API deploy.

UI

Выбранный вариант 3. Существующие Mont, кнопки, поля, модалки и токены PROCOLLAB сохранены. Browser QA 1440/390/360: меню, стабильные строки, выбор всех страниц, Excel, модалки, удаление и массовые операции на изолированном API.

Permissions

Существующие guards сохраняются; все записи дополнительно проверяет API по программе, роли, revision и подписанному preview. Самостоятельно изменить состав команды или удалить аккаунт интерфейс не предлагает.

Проверки

  • npm run test:ci -- --maxWorkers=2 --minWorkers=1 — 2295 tests /437 files passed.
  • npm run lint:ts — 0 ошибок, 6 прежних предупреждений вне diff.
  • stylelint измененных SCSS — успешно.
  • npm run build:pr — успешно.
  • После увеличения области нажатия чекбоксов: 24 теста экспертов, stylelint и повторная сборка — успешно.
  • Browser 1440/390/360 — успешно; экспорт 42 выбранных, фильтр21, проекты27, эксперты27 и локальные тестовые письма3, обычный участник/лидер, последний организатор.

Acceptance criteria

  • AC1: меню строк вместо одиночных плашек, включая распределение/организаторов/материалы.
  • AC2/3: страницы20, выбор всех по фильтрам, сохранение между страницами, таблица без сдвига.
  • AC4/5: кликабельное имя, дата регистрации, дата активности и Excel.
  • AC6/7: безопасное удаление только из программы, отдельное предупреждение лидера.
  • AC8/9/10: фильтр оценивания, массовые действия экспертов и назначение проектов с прежними ограничениями.
  • AC11: overlay, keyboard/Escape, disabled reasons и телефон.
  • AC12: DEV deploy39502018339 успешно выполнил format/lint, 437 файлов/2295 тестов, сборку и публикацию. Опубликованные assets проверены1440/390/360, без runtime/5xx ошибок и сдвигов таблицы.

Не проверено

Изменяющие операции над реальными dev-пользователями и настоящая почтовая доставка не проверялись: browser QA использует изолированные Django/PostgreSQL и locmem email. Настоящие dev API/SPA маршруты отдельно проверены анонимно.

Риски / migration

Сначала развернуть API. Новых миграций нет. Выбор для передачи в редактор назначений кратковременный и очищается после использования; при перезагрузке нужен повторный выбор. Production не входит в этот PR.

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