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

Уведомления

ONREZA отправляет уведомления о важных событиях: деплоях, ошибках, биллинге и безопасности. Вы можете настроить каналы доставки и фильтры для каждой категории.

Система уведомлений построена по многослойной архитектуре с чётким разделением ответственности:

┌─────────────────────────────────────────────────────────────┐
│ Presentation Layer │
│ (Inbox UI, Email Templates, Telegram Messages) │
├─────────────────────────────────────────────────────────────┤
│ Delivery Layer │
│ (Email Service, SSE Stream, Telegram Bot) │
├─────────────────────────────────────────────────────────────┤
│ Processing Layer │
│ (Priority Router, Channel Filter, Quiet Hours Handler) │
├─────────────────────────────────────────────────────────────┤
│ Core Layer │
│ (Event Bus, Type Registry, Strict Typing) │
├─────────────────────────────────────────────────────────────┤
│ Source Layer │
│ (Deployment, Health, Billing, Security Events) │
└─────────────────────────────────────────────────────────────┘
СлойНазначениеКомпоненты
SourceГенерация событийDeployment events, Health checks, Billing triggers, Security monitors
CoreТипизация и маршрутизацияEvent Bus, NotificationEvent<T> types, Strict type guards
ProcessingФильтрация и приоритизацияPriority evaluator, Channel selector, Quiet hours checker
DeliveryОтправка в каналыEmail sender, SSE broadcaster, Telegram client
PresentationОтображение пользователюInbox UI, Email templates, Telegram markdown

Уведомления на почту, привязанную к аккаунту:

  • HTML письма с брендированным дизайном
  • Категорийные шаблоны (деплои, биллинг, безопасность)
  • Приоритетные индикаторы (иконки для critical/high)

Уведомления внутри платформы:

  • Real-time доставка через SSE
  • Inbox с историей уведомлений
  • Индикатор непрочитанных (blue dot)
  • Архивация и удаление

Уведомления в Telegram через бота ONREZA:

  • Мгновенная доставка
  • Поддержка форматирования (жирный, ссылки)
  • Кнопки быстрых действий
КатегорияОписаниеПримеры
DeploymentСобытия деплоевСборка завершена, деплой live, ошибка
HealthЗдоровье приложенийHealth check failed, восстановление
BillingПлатежи и подпискиОплата прошла, лимит превышен
SecurityБезопасность аккаунтаНовый вход, подозрительная активность, API ключи
SystemСистемные событияПлановые работы, новые функции
СобытиеПриоритетОписание
security.new_loginNormalНовый вход в аккаунт
security.suspicious_activityCriticalПодозрительная активность обнаружена
security.api_key_createdNormalСоздан новый API ключ
security.api_key_revokedHighAPI ключ отозван
security.api_key_expiredHighAPI ключ истёк
security.api_key_expiring_soonNormalAPI ключ истекает через 7 дней
security.password_changedCriticalПароль аккаунта изменён
security.mfa_enabledNormalДвухфакторная аутентификация включена
security.mfa_disabledCriticalДвухфакторная аутентификация отключена

Система использует 4 уровня приоритета для классификации важности уведомлений:

ПриоритетЗначениеОписаниеПоведение
CRITICAL0Критические событияВсегда отправляются на все каналы, игнорируют quiet hours
HIGH1Важные событияОтправляются даже в quiet hours (кроме email), требуют внимания
NORMAL2Стандартные событияОтправляются согласно настройкам пользователя
LOW3ИнформационныеМогут быть отфильтрованы, не требуют немедленного действия
// Strict typing для приоритетов
enum NotificationPriority {
CRITICAL = 0,
HIGH = 1,
NORMAL = 2,
LOW = 3,
}

Account → Settings → Notifications → Channels

  1. Выберите канал

    Email, In-App или Telegram (если доступен)

  2. Включите/выключите

    Toggle для активации канала

  3. Сохраните

    Изменения применяются сразу

Account → Settings → Notifications → Preferences

Для каждой категории можно настроить:

НастройкаОписание
КаналыКакие каналы использовать для этой категории
Минимальный приоритетОтправлять только уведомления с приоритетом >=
Quiet HoursВремя, когда email не отправляется (только In-App)
Deployment:
Каналы: Email, In-App
Мин. приоритет: NORMAL
Quiet Hours: 22:00 - 08:00
Billing:
Каналы: Email, In-App
Мин. приоритет: NORMAL
Quiet Hours: —
Security:
Каналы: Email, In-App
Мин. приоритет: LOW
Quiet Hours: —
Health:
Каналы: Email, In-App
Мин. приоритет: HIGH
Quiet Hours: —

Email уведомления не отправляются в указанный период:

  • Время указывается в UTC
  • In-App уведомления продолжают приходить
  • CRITICAL уведомления игнорируют quiet hours
  1. Откройте настройки категории
  2. Включите “Quiet Hours”
  3. Укажите время начала и конца
  4. Сохраните

В правом верхнем углу интерфейса находится иконка уведомлений:

  • Blue dot — есть непрочитанные
  • Число — количество непрочитанных

Возможности Inbox:

  • Просмотр истории уведомлений
  • Отметка как прочитанное (клик)
  • Архивация (смахивание или кнопка)
  • Удаление
  • Переход по action URL
СобытиеПриоритетОписание
deployment.startedLOWДеплой запущен
deployment.buildingLOWСборка началась
deployment.build_successLOWСборка успешна
deployment.build_failedCRITICALОшибка сборки
deployment.deployingLOWРазвёртывание
deployment.liveNORMALДеплой активен
deployment.failedCRITICALОшибка деплоя
deployment.stoppedNORMALДеплой остановлен
deployment.rolled_backNORMALОткат выполнен
СобытиеПриоритетОписание
billing.payment_succeededNORMALПлатёж прошёл
billing.payment_failedCRITICALОшибка платежа
billing.invoice_createdLOWСчёт создан
billing.invoice_paidNORMALСчёт оплачен
billing.invoice_overdueHIGHСчёт просрочен
billing.trial_ending_soonHIGHTrial заканчивается
billing.trial_endedHIGHTrial закончился
billing.limit_approachingNORMALПриближение к лимиту
billing.limit_exceededHIGHЛимит превышен
billing.subscription_cancelledNORMALПодписка отменена
billing.subscription_suspendedCRITICALПодписка приостановлена
billing.card_expiring_soonHIGHКарта скоро истечёт
billing.card_expiredCRITICALКарта истекла
СобытиеПриоритетОписание
health.check_failedHIGHHealth check не прошёл
health.recoveredNORMALПриложение восстановлено
health.degradedHIGHПроизводительность деградировала
health.unavailableCRITICALПриложение недоступно
СобытиеПриоритетОписание
system.maintenance_scheduledNORMALПлановые работы
system.feature_announcementLOWНовые функции
Окно терминала
GET /v1/notifications?archived=false&limit=20

Query параметры:

  • archivedtrue для архива, false для inbox
  • unreadOnly — только непрочитанные
  • category — фильтр по категории
  • priority — фильтр по приоритету (CRITICAL, HIGH, NORMAL, LOW)
  • limit, offset — пагинация
Окно терминала
GET /v1/notifications/has-unread

Возвращает { hasUnread: true/false } — используется для blue dot.

Окно терминала
POST /v1/notifications/:id/read
Окно терминала
POST /v1/notifications/:id/archive
Окно терминала
POST /v1/notifications/archive-all
Окно терминала
DELETE /v1/notifications/:id
Окно терминала
GET /v1/notifications/preferences
PUT /v1/notifications/preferences/channel
PUT /v1/notifications/preferences/category

In-App уведомления доставляются мгновенно через SSE:

Окно терминала
GET /v1/notifications/stream

Клиент автоматически подключается при загрузке страницы. При потере соединения — автоматическое переподключение.

При регистрации устанавливаются настройки в зависимости от способа входа:

Email регистрация:

КатегорияКаналыМин. приоритет
DeploymentEmail, In-AppNORMAL
HealthEmail, In-AppHIGH
BillingEmail, In-AppNORMAL
SecurityEmail, In-AppLOW
SystemEmail, In-AppNORMAL

Telegram регистрация:

КатегорияКаналыМин. приоритет
DeploymentTelegram, In-AppNORMAL
HealthTelegram, In-AppHIGH
BillingTelegram, In-AppNORMAL
SecurityTelegram, In-AppLOW
SystemTelegram, In-AppNORMAL
  1. Проверьте папку спам
  2. Проверьте что канал Email включён
  3. Проверьте настройки категории — возможно фильтр по приоритету
  4. Проверьте quiet hours — возможно сейчас тихие часы
  1. Проверьте что канал In-App включён
  2. Обновите страницу
  3. Проверьте фильтр категорий в настройках
  1. Повысьте минимальный приоритет для шумных категорий
  2. Отключите канал Email для информационных событий
  3. Настройте quiet hours для ночного времени