Skip to content

fix: учесть дубли аккаунтов экспертов и пояснить недоступные проекты - #790

Merged
TThanos3000 merged 2 commits into
devfrom
fix/dev-expert-active-identity-20261018
Oct 18, 2026
Merged

TThanos3000 merged 2 commits into
devfrom
fix/dev-expert-active-identity-20261018

Conversation

@TThanos3000

@TThanos3000 TThanos3000 commented Oct 18, 2026 •

Copy link
Copy Markdown
Collaborator

Что изменено

Если email в старой базе соответствует активному аккаунту и неактивному дублю с другим регистром букв, приглашение показывает имя единственного активного аккаунта. Тот же выбор используется в login_email для входа по ссылке. Workspace и план также явно объясняют сданные проекты, недоступные к распределению из-за draft.

Зачем

Read-only проверка dev подтвердила активный mixed-case аккаунт №59 и неактивный lowercase дубль №80 с другим именем. Exact-case lookup показывал неактивного человека; первоначальный fix #789 безопасно убрал произвольное имя, но не разрешил этот конкретный случай.

Реализация

Общий resolver предпочитает единственный активный аккаунт. Если активных несколько, имя не угадывается. Для единственного существующего неактивного аккаунта сохранён прежний сценарий. Аккаунты не объединяются и не изменяются. Дополнительная read-only проверка dev выявила submitted=True у проекта №232, остающегося draft: теперь возвращается его имя/reason=draft без изменения публикации и eligibility.

API

Payload прежний. В workspace/plan совместимо добавлен unavailable_projects[{project_id,project_name,reason:draft}]. Согласованы источник имени workspace и login_email приглашения. Наличие аккаунта по-прежнему запрещает повторную регистрацию; принять приглашение может только активный пользователь с совпадающим email. Распределяются те же submitted + non-draft проекты, явный project_ids сохраняет прежнюю validation.

UI

Имя использует прежний контракт. Следующий Angular PR поясняет unavailable_projects и квалифицирует пустой план «для всех доступных к оценке проектов».

Permissions

Не менялись. Helper выбирает данные для отображения/входа, не создаёт членство и не меняет пользователя.

Проверки

  • 39 workspace/analytics tests на PostgreSQL 18, включая active mixed-case + inactive lowercase: корректные name/login_email, успешный вход активного аккаунта; submitted draft пояснён и не назначен, после публикации снова eligible.
  • Сохранены tests неизвестной почты, нескольких активных совпадений, invitation lifecycle и program scope.
  • Black, flake8, diff --check и review source цепочки preview→login→accept.

Acceptance criteria

  • Неактивный дубль не подменяет имя активного получателя и не направляет его на вход в неактивный аккаунт.
  • Несколько активных совпадений не приводят к произвольному выбору имени.
  • Учётные записи, пароли, основная роль и права программы сохраняются.
  • Пустой план объясняет исключённые черновики; автоматическая публикация не выполняется.

Не проверено

Окончательный результат на реальной строке dev — после деплоя. Внешние письма не отправлялись.

Риски / migration

Миграций нет, контракт совместим. Устранение старых дублей и case-insensitive uniqueness для обычной регистрации остаются отдельной задачей с проверкой связанных данных.

@TThanos3000 TThanos3000 changed the title fix: выбирать активный аккаунт эксперта при старом дубле email fix: учесть дубли аккаунтов экспертов и пояснить недоступные проекты Oct 18, 2026
@TThanos3000
TThanos3000 merged commit 996bd0e into dev Oct 18, 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