Перейти к основному содержимому

Матрица уведомлений

Актуально для: SimpleTwo 0.9.x · Проверено: 20.09.2026

Два вопроса, которые стоит держать раздельно: придёт ли уведомление вообще и что в нём написано. Ниже оба, и первый — в виде таблицы, каждая строка которой подтверждена тестом: строка, изменённая в продукте и не изменённая здесь, — это дефект в том, что не изменили.

1. Порядок правил

Правила применяются сверху вниз, выигрывает первое. Этот порядок и есть политика.

  1. Вы сами это написали → ничего.
  2. Беседа или тред приглушены → ничего. Приглушение сильнее любых отношений, включая руководителя: переключатель, который человек видит, не может делать меньше, чем тот, которого он не видит.
  3. Приложение подключено и не спит → ничего: сообщение уже доставлено сокетом. Только для сообщений — звонок сокет не спрашивает вовсе. «Не спит» — это утверждение самого клиента, а не факт наличия соединения: свёрнутое приложение держит сокет и не будит никого.
  4. Уровень уведомлений говорит «нет» → ничего.
  5. «Не беспокоить» → только то, что адресовано лично вам, и только от того, кто проходит гейт (см. §3).
  6. Иначе — приходит.

2. Таблица

Получатель доступен, если в строке не сказано иное.

Что произошлоОтправительСостояние получателяПридёт?Как
Личное сообщениелюбойдоступендабаннер со звуком
Личное сообщениелюбойDND, гейт «избранные» (умолчание)нетпридержано
Личное сообщениеизбранныйDNDдаважное, в подзаголовке «★ Избранный»
Личное сообщениеруководительDNDдаважное, в подзаголовке «★ Ваш руководитель»
Личное сообщениеруководительDND, гейт «никто»нетпридержано — явное «никто» уважается
Упоминание в группелюбойдоступендаважное, «↗︎ Вас упомянули»
Упоминание в групперуководитель / избранныйDNDдапрорыв
Упоминание в группеостальныеDNDнетпридержано
Упоминание в группелюбойуровень «никаких»нет«никаких» значит никаких
Ответ на ваше сообщениелюбойуровень «все»дабаннер, «↩︎ Ответ вам»
Сообщение в треде, за которым вы следителюбойуровень «упоминания»дабаннер
Сообщение в треде, за которым вы следитеруководительDNDнетследить — не значит быть адресатом
Обычное сообщение в комнателюбойуровень «все»дабаннер
Обычное сообщение в комнателюбойуровень «упоминания»нетпридержано
Обычное сообщение в комнатеруководительDNDнетшумная комната — это ровно то, от чего DND
Что угоднолюбойбеседа или тред приглушенынеткто бы ни отправил
Публикация в каналелюбойуровень «все»дабаннер пониже приоритетом: лента не должна перекрикивать коллегу
ЗвоноклюбойiPhoneзвонитVoIP-пуш → системный экран вызова
ЗвоноклюбойAndroidзвонитвысокоприоритетный пуш → полноэкранный вызов
ЗвоноклюбойMacбаннер со звуком«Ответить / Отклонить»; на macOS это не звонок в системном смысле
Звонокизбранный / руководительDNDзвониттот же гейт, что у сообщений
ЗвонокостальныеDNDне звонитостаётся след о пропущенном
Звоноклюбойучастник по пропуску: он в звонке, но не в беседезвонитон входит в круг адресатов сигнала
Отмена звонказвонившийустройство, которое звонилогасит звоноквторой пуш тем же путём
Отмена звонказвонившийустройство, которое не звонилоничегоотмена «незвонившему» сама была бы звонком
Отмена звонказвонившийMacничегобаннер остаётся, пока его не закроют
Прочие шаги звонкалюбойлюбоеничеговход, завершение, отказ, удержание — это не уведомления
Изменение присутствиятот, на кого подписаныдоступендатихо, без звука, сворачивается по человеку
Изменение присутствиятот, на кого подписаныDNDнетпридержано

3. Гейт «Не беспокоить»

Получатель выбирает самый широкий круг, который всё ещё принимает в режиме «Не беспокоить»; каждый уровень включает все уровни ниже:

ГейтКто проходит
orgлюбой в организации
favoritesизбранные, приоритетные контакты, ваш руководитель
priorityприоритетные контакты и руководитель
managerтолько руководитель
noneникто
Выбор гейта пока не хранится

Умолчание — favorites, и сегодня все на нём: персональной настройки ещё нет, как нет и списка приоритетных контактов. Тот, кто ждёт от priority осмысленного поведения, получил бы «только руководитель», поэтому умолчание останется на favorites до появления списка.

4. Откуда берётся руководитель

Из атрибута каталога, который приходит claim'ом при входе. Сопоставление идёт по DN: distinguished name руководителя из одной учётной записи совпадает с DN сотрудника в другой.

Почтовый адрес в этом поле не сопоставляется ни с кем и пишется в аудит (directory.manager_unresolved). Это важно именно здесь: неверно настроенный руководитель не ломает вход и ничего не показывает красным — он просто никогда не прорывается через «Не беспокоить», и выглядит это как «прорыв не работает». Как настроить — ADFS.

5. Что написано в уведомлении

ЭлементПравило
Заголовокназвание комнаты; для личной переписки — человек
Подзаголовокпочему вам это говорят, затем кто, затем по какому поводу
Текстсамо сообщение, обрезанное до 240 символов
Структурные сообщения📍 геопозиция · 👤 контакт · 📎 вложение · 📌 закреплено — никогда не сырой JSON
Секретные чаты🔒 зашифрованное сообщение: видно, что пришло и от кого, но не что написано
Группировкаодна стопка на беседу, внутри — по темам
Прорыввсегда называет отношение, которое его пропустило: необъяснённый баннер в DND читается как сломанная настройка

Текст составляют обе стороны: сервер собирает полное уведомление и знает людей по логинам, устройство переписывает его перед показом — подставляет имена из своего кеша каталога и язык приложения. Серверная версия не запасная: именно она показывается, когда расширение на устройстве не отработало. Правило переписывания одно — никогда не сделать уведомление хуже: незнакомое поле, пустой кеш или payload от старой службы возвращают серверный текст нетронутым.

6. Чего пока нет

  • персональной настройки гейта и списка приоритетных контактов (§3);
  • действий прямо в уведомлении (ответить, отметить прочитанным) — payload к ним готов;
  • содержимого секретных чатов на экране блокировки: расширение тоже не может их расшифровать, ключ лежит в связке самого приложения.

Дальше