О платформе Войти
← К списку версий
v0.85.0 30.09.2026 MINOR
Несколько email у человека: основной и дополнительные
ТЗ 260 «Несколько email». У человека на платформе задач может быть несколько email — один основной. Кнопка «Синхронизировать с платформы задач» привела email клиента и список всех его адресов к данным платформы: основной email (по нему уходят письма и идёт вход в кабинет) обновляется у той же записи, а полный список хранится в новой колонке clients.emails и виден в карточке пользователя (основной — с бейджем «основной»). История писем при смене ящика не теряется: она хранится по client_id и фактическому адресу в prepared_emails.to_email / mail_logs, поэтому старые отправленные письма остаются у старого ящика, а новые уходят на новый. Письма Егора Савинского (16 писем в очереди и черновиках) переадресованы на новый основной ящик esav2@yandex.ru. Версия v0.85.0.
Что сделано
  • Полный список адресов - Новая колонка clients.emails (JSON): основной email живет в clients.email (вход, верификация, адресация писем), остальные адреса подтягиваются с платформы задач и хранятся списком. Дубликаты по регистру отбрасываются, основной адрес всегда первый.
  • Синхронизация контактов кнопкой - Кнопка на карточке пользователя обновляет email и список адресов до импорта проектов: у проектов платформы задач есть только «человек_почта» (внешнего id человека на проекте нет), поэтому проект человека связывается с клиентом по актуальному email. В сообщении об успехе появилась строка «Email обновлён: … → …». Телефон и Telegram больше не затираются пустыми значениями, когда платформа их не прислала.
  • Карточка пользователя - В /admin/users/{id} основной email показан с бейджем «основной», дополнительные адреса — списком; текст кнопки «Синхронизировать с платформы задач» и подтверждение теперь упоминают контакты.
  • Переадресация писем Егора - 16 писем в очереди и черновиках (клиент 5, Егор Савинский) переписаны на новый основной ящик esav2@yandex.ru; отправленные письма остались в истории у старого ящика (egor@jetpeel.club).
Что не сломалось
  • Вход в кабинет - Пароль и email_verified_at при синхронизации не трогаются, вход не зависит от смены ящика.
  • История писем - Старые письма остались видны в карточке клиента: фильтр идёт по client_id, а фактический адрес хранится в prepared_emails.to_email / mail_logs.
Результат
  • У человека несколько email — один основной. Новые письма уходят на основной ящик, история старых ящиков сохраняется. Автотест AdminUserSyncFromTaskContactsTest (3/3) проверяет обновление email и списка адресов, привязку проекта по актуальному ящику и сообщение «Email обновлён».