# Уведомления и индикаторы — Решение проблем

Руководство по решению проблем с уведомлениями и индикаторами 1Формы. Разделы организованы по типам проблем: симптом, что проверить, решение. Охватывает email, push, desktop-уведомления, обновление в реальном времени, фоновые задачи, повторения, счётчики и автозаполнение полей.

## 1. Уведомления не приходят

**1.1 Не приходят уведомления на email (Outlook / почтовый клиент)**

**Симптом:** «уведомления из 1Ф не приходят в Outlook», «перестали приходить письма-уведомления».

**Что проверить:**

- Пользовательские настройки уведомлений — не отключены ли email-уведомления (Профиль → Уведомления)
- Настройки категории — включены ли уведомления (Администрирование → Категории → Уведомления)
- Почтовый сервер — работает ли отправка (проверить в логах ошибки SMTP)
- Спам-фильтр — не попадают ли письма в спам
- Очередь уведомлений — не забита ли

**1.2 Напоминание о приближении срока не срабатывает**

**Симптом:** «настроено "Напоминание о приближении срока в день окончания", но уведомления не приходят».

**Что проверить:**

- Настройка в категории — включена ли, какой интервал
- Срок задачи — задан ли
- Фоновая задача — работает ли OverdueNotificationJob

**Когда обращаться в поддержку 1Ф:** если настройка есть, сроки заданы, но уведомления не приходят — проверить OverdueNotificationJob.

**1.3 Push-уведомления не работают**

**Симптом:** «ошибки push-уведомлений», «push не приходят на мобильное».

**Что проверить:**

- Настройка push — настроен ли Firebase (FCM) / APNs
- Порты — открыты ли (FCM требует порты 443, 5228-5230)
- Токен устройства — зарегистрировано ли устройство
- Логи — текст ошибки

**Когда обращаться в поддержку 1Ф:** если порты открыты, но push не работает — обратиться в поддержку 1Ф.

## 1.4 Desktop-уведомления не работают для чатов/вопросов

Desktop-уведомления в браузере при новых сообщениях в чате и вопросах — отдельный частый кейс поддержки.

**Симптом:** «не приходят desktop-уведомления в браузере при новых сообщениях в чате», «не показываются уведомления для вопросов», «в консоли браузера ошибка TypeError при получении уведомлений».

**Версии:**

- ❌ Версии до v2.266 — известная проблема
- ✅ Версии v2.266+ — исправлено

**Что проверить:**

1. **Версия системы** (самое важное):
   - Если версия < 2.266 → рекомендовать обновление
   - Если версия ≥ 2.266 → искать другие причины

2. **Настройки браузера:**
   - Разрешены ли уведомления для сайта (Settings → Site Settings → Notifications)
   - В Chrome: иконка замка в адресной строке → Site Settings → Notifications → Allow
   - В Firefox: иконка замка → Permissions → Receive Notifications → Allow

![Разрешение уведомлений для сайта в настройках Chrome: «Конфиденциальность и безопасность» → «Уведомления»](https://help.1forma.ru/help-images/notifications/notification_chrome-4.png)

3. **HTTPS-соединение:**
   - Desktop-уведомления работают **только по HTTPS**
   - Проверить в адресной строке наличие замка 🔒

4. **Консоль браузера** (F12 → Console):
   - Нет ли JavaScript-ошибок при получении уведомлений
   - Ошибка `TypeError: Cannot spread non-iterable value` = версия < 2.266

5. **Настройки пользователя:**
   - Профиль → Уведомления → "Уведомления рабочего стола" — включены ли

**Известные проблемы (до v2.266):**

- `TypeError` при обработке событий `newComment` если `recipients`/`copyRecipients` = `null`
- Некорректные значения enum в БД (`SendPushForChats = 2`)
- Desktop-уведомления не показывались для сообщений чатов и вопросов

**Решение:**

Для версий < 2.266:

1. **Рекомендовать обновление** до версии 2.266+ (критичное исправление)
2. Временное решение: обновить страницу после каждого сообщения

Для версий ≥ 2.266:

1. Проверить настройки браузера (разрешения на уведомления)
2. Проверить HTTPS-соединение
3. Проверить настройки пользователя в профиле
4. Попросить пользователя кликнуть "Разрешить" при запросе браузера

**Как протестировать:**
```
1. Открыть консоль браузера (F12)
2. Выполнить: Notification.permission
   - "granted" = разрешено ✅
   - "denied" = запрещено ❌
   - "default" = не запрошено ⚠️
3. Тестовое уведомление:
   new Notification("Test", { body: "Работает!" })
```

**Когда обращаться в поддержку 1Ф:**

- Версия < 2.266 и нельзя обновить — обращение в поддержку 1Ф
- Версия ≥ 2.266, но уведомления всё равно не работают — проверить настройки nginx/reverse proxy (WebSocket)

---

## 2. Некорректные уведомления

**2.1 Лишние уведомления**

**Симптом:** «приходит лишнее уведомление при ответе на вопрос».

**Что проверить:**

- Настройки уведомлений — какие типы включены
- Тип события — ответ на вопрос может генерировать уведомление и автору, и получателю

**2.2 Настройки systemrobot меняют настройки по умолчанию**

**Симптом:** «изменение настроек уведомлений у systemrobot приводит к изменению настроек по умолчанию для всех».

**Решение:** настройки уведомлений systemrobot используются как шаблон по умолчанию для новых пользователей. Изменение настроек systemrobot **не должно** влиять на уже созданных пользователей, но может влиять на дефолтные значения.

**Когда обращаться в поддержку 1Ф:** если изменение systemrobot меняет настройки существующих пользователей — баг.

**OverdueNotificationJob падает.** **Симптом:** «OverdueNotificationJob не выполняется», «ошибка в задаче уведомлений о просрочке».

**Когда обращаться в поддержку 1Ф:** серверная проблема — обратиться в поддержку 1Ф с текстом ошибки из лога.

---

## 4. Обновление в реальном времени (SignalR)

**4.1 Данные не обновляются в реальном времени**

**Симптом:** «в БИ не обновляется информация при создании задач», «данные подтягиваются только после обновления страницы».

**Что проверить:**

- SignalR-соединение — индикатор в нижнем правом углу (зелёный = подключён)
- Reverse proxy — пропускает ли WebSocket-соединения
- Браузер — поддерживает ли WebSocket
- Обновить страницу — восстанавливается ли соединение
- **VPN или корпоративный прокси клиента** — некоторые VPN/прокси-серверы блокируют или нестабильно пропускают WebSocket. Попросить пользователя проверить работу без VPN
- **Локальный брандмауэр / антивирус** — могут блокировать долгоживущие WebSocket-соединения
- **Сравнение с другими пользователями той же компании** — если у других сотрудников SignalR работает, проблема локальная (на стороне рабочего места)

**Когда обращаться в поддержку 1Ф:** если SignalR стабильно не подключается у всех пользователей — проблема инфраструктуры (nginx/IIS настройки WebSocket). Если только у одного — см. § 4.2.

**4.2 SignalR не работает только у одного пользователя**

**Симптом:** «у конкретного сотрудника интерфейс не обновляется, у остальных всё в порядке», «ошибка SignalR в консоли только у одного юзера».

**Что проверить:**

- VPN — отключить и проверить (многие корпоративные VPN режут WebSocket)
- Корпоративный прокси / firewall на стороне клиента — пропускает ли долгоживущие соединения, не фильтрует ли HTTP Upgrade-заголовки
- Браузер — повторить в другом браузере или в режиме инкогнито (исключить расширения)
- Сетевая стабильность рабочего места — нет ли потерь пакетов, стабильно ли подключение

**Решение:** если работа без VPN восстанавливает SignalR — это сетевая политика компании пользователя, не баг платформы. Передать IT-службе клиента для настройки VPN/прокси: разрешить WebSocket на домен 1Формы.

**Когда обращаться в поддержку 1Ф:** если VPN и прокси исключены, но проблема сохраняется только у одного пользователя — обратиться в поддержку 1Ф с указанием версии платформы, браузера и сетевой топологии рабочего места.

**Где хранятся уведомления в БД.** **Симптом:** «в какой таблице хранятся данные об уведомлениях?»

**Решение:** уведомления хранятся в таблице `dbo.Notifications` (основная) и связанных таблицах. Настройки пользователей — `dbo.UserNotificationSettings`.

---

## 6. Повторения — уведомления и расписания

**6.1 Ошибки при создании и переносе повторений**

**Симптом:** «ошибка при повторном создании повторения», «при переносе задачи не учитываются настройки повторений категории».

**Что проверить:**

- Настройки повторений в категории — заданы ли, совместимы ли с целевой категорией при переносе
- Повторение уже существует — попытка создать дубль может вызывать ошибку
- Логи — текст ошибки при создании

**Когда обращаться в поддержку 1Ф:** если ошибка воспроизводится стабильно — баг, обратиться в поддержку 1Ф с шагами воспроизведения.

**6.2 Смарт-расписания: баги UI и подстановки времени**

**Симптом:** «не подставляется время из смарт-выражения "Дата окончания"», «странно ведёт себя выбор времени в установке повторения», «при отклонении повторения пресеты становятся некликабельными».

**Что проверить:**

- Версия системы — проблемы фронта могут быть версионными
- Тип смарт-выражения — какое именно используется
- Браузер — воспроизводится ли в другом браузере
- Шаги воспроизведения — точная последовательность (создать повторение → отклонить → попробовать снова)

**Когда обращаться в поддержку 1Ф:** UI-баги фронта — обратиться в поддержку 1Ф со скриншотами и шагами воспроизведения.

---

## 7. Автоматическое заполнение полей (робот/SmartScript)

**7.1 Робот не заполняет исполнителя автоматически**

**Симптом:** «робот не заполняет исполнителя автоматически при создании задачи».

**Что проверить:**

- Настройка SmartScript/робота — привязан ли к категории, на какое событие срабатывает
- Условия срабатывания — выполняются ли (тип задачи, состояние, значения ДП)
- Логи SmartScript — есть ли ошибки выполнения
- Права робота — имеет ли робот права на изменение поля «Исполнитель»

**Когда обращаться в поддержку 1Ф:** если SmartScript настроен корректно, но не срабатывает — обратиться в поддержку 1Ф с ID категории и названием скрипта.

---

## 8. Счётчики категорий — уведомления и обновление

**8.1 Проблемы с уведомлениями счётчиков**

**Симптом:** «проблема с уведомлениями счётчиков категорий», «счётчики не обновляются», «некорректные значения счётчиков».

**Что проверить:**

- SignalR-соединение — счётчики обновляются через SignalR (см. секцию 4.1)
- Настройки категории — включены ли счётчики
- Кеш — попробовать очистить кеш браузера и обновить страницу
- Один пользователь или все — если все, проблема серверная

**Связанные документы:** [runbook-tickers-counters.md](https://help.1forma.ru/domains/notifications/runbook-tickers-counters.md) — детальный рунбук по счётчикам.

**Когда обращаться в поддержку 1Ф:** если счётчики стабильно некорректны после обновления страницы — обратиться в поддержку 1Ф.

---

## Чеклист для первичной диагностики

Что зафиксировать при первичном разборе:

1. **Тип проблемы** — не приходят, лишние, push, desktop, SignalR, фоновые задачи, повторения, счётчики, автозаполнение
2. **Канал уведомления** — email, push (mobile), desktop (браузер), SignalR
3. **Один пользователь или все**
4. **Версия системы** (критично для desktop-уведомлений: < 2.266 = известная проблема; для повторений — UI-баги могут быть версионными)
5. **Текст ошибки из лога** или консоли браузера (для desktop)
6. **Настройки** — пользовательские и категории
7. **Для desktop:** разрешения браузера, HTTPS, консоль (F12)
8. **Для повторений:** какое смарт-выражение, шаги воспроизведения, скриншоты

## Когда обращаться в поддержку 1Ф

Обращаться в поддержку 1Ф стоит в следующих случаях:

- OverdueNotificationJob падает (серверная проблема)
- Push не работает при открытых портах
- Настройки systemrobot меняют настройки существующих пользователей (баг)
- SignalR стабильно не подключается (инфраструктура)
- Desktop-уведомления не работают на версии < 2.266 и нельзя обновить (критичный баг)
- Повторения: ошибка создания/переноса воспроизводится стабильно (баг)
- Повторения: UI пресетов/смарт-расписаний сломан (фронт-баг)
- SmartScript/робот не срабатывает при корректной настройке
- Счётчики категорий стабильно некорректны после обновления страницы
