Уведомления
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
Заголовок раздела «Telegram»Уведомления в Telegram через бота ONREZA:
- Мгновенная доставка
- Поддержка форматирования (жирный, ссылки)
- Кнопки быстрых действий
Категории уведомлений
Заголовок раздела «Категории уведомлений»| Категория | Описание | Примеры |
|---|---|---|
| Deployment | События деплоев | Сборка завершена, деплой live, ошибка |
| Health | Здоровье приложений | Health check failed, восстановление |
| Billing | Платежи и подписки | Оплата прошла, лимит превышен |
| Security | Безопасность аккаунта | Новый вход, подозрительная активность, API ключи |
| System | Системные события | Плановые работы, новые функции |
События Security
Заголовок раздела «События Security»| Событие | Приоритет | Описание |
|---|---|---|
security.new_login | Normal | Новый вход в аккаунт |
security.suspicious_activity | Critical | Подозрительная активность обнаружена |
security.api_key_created | Normal | Создан новый API ключ |
security.api_key_revoked | High | API ключ отозван |
security.api_key_expired | High | API ключ истёк |
security.api_key_expiring_soon | Normal | API ключ истекает через 7 дней |
security.password_changed | Critical | Пароль аккаунта изменён |
security.mfa_enabled | Normal | Двухфакторная аутентификация включена |
security.mfa_disabled | Critical | Двухфакторная аутентификация отключена |
Приоритеты
Заголовок раздела «Приоритеты»Система использует 4 уровня приоритета для классификации важности уведомлений:
| Приоритет | Значение | Описание | Поведение |
|---|---|---|---|
| CRITICAL | 0 | Критические события | Всегда отправляются на все каналы, игнорируют quiet hours |
| HIGH | 1 | Важные события | Отправляются даже в quiet hours (кроме email), требуют внимания |
| NORMAL | 2 | Стандартные события | Отправляются согласно настройкам пользователя |
| LOW | 3 | Информационные | Могут быть отфильтрованы, не требуют немедленного действия |
// Strict typing для приоритетовenum NotificationPriority { CRITICAL = 0, HIGH = 1, NORMAL = 2, LOW = 3,}Настройка каналов
Заголовок раздела «Настройка каналов»Account → Settings → Notifications → Channels
-
Выберите канал
Email, In-App или Telegram (если доступен)
-
Включите/выключите
Toggle для активации канала
-
Сохраните
Изменения применяются сразу
Настройка по категориям
Заголовок раздела «Настройка по категориям»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: —Quiet Hours (Тихие часы)
Заголовок раздела «Quiet Hours (Тихие часы)»Email уведомления не отправляются в указанный период:
- Время указывается в UTC
- In-App уведомления продолжают приходить
- CRITICAL уведомления игнорируют quiet hours
- Откройте настройки категории
- Включите “Quiet Hours”
- Укажите время начала и конца
- Сохраните
В правом верхнем углу интерфейса находится иконка уведомлений:
- Blue dot — есть непрочитанные
- Число — количество непрочитанных
Возможности Inbox:
- Просмотр истории уведомлений
- Отметка как прочитанное (клик)
- Архивация (смахивание или кнопка)
- Удаление
- Переход по action URL
События деплоев
Заголовок раздела «События деплоев»| Событие | Приоритет | Описание |
|---|---|---|
deployment.started | LOW | Деплой запущен |
deployment.building | LOW | Сборка началась |
deployment.build_success | LOW | Сборка успешна |
deployment.build_failed | CRITICAL | Ошибка сборки |
deployment.deploying | LOW | Развёртывание |
deployment.live | NORMAL | Деплой активен |
deployment.failed | CRITICAL | Ошибка деплоя |
deployment.stopped | NORMAL | Деплой остановлен |
deployment.rolled_back | NORMAL | Откат выполнен |
События биллинга
Заголовок раздела «События биллинга»| Событие | Приоритет | Описание |
|---|---|---|
billing.payment_succeeded | NORMAL | Платёж прошёл |
billing.payment_failed | CRITICAL | Ошибка платежа |
billing.invoice_created | LOW | Счёт создан |
billing.invoice_paid | NORMAL | Счёт оплачен |
billing.invoice_overdue | HIGH | Счёт просрочен |
billing.trial_ending_soon | HIGH | Trial заканчивается |
billing.trial_ended | HIGH | Trial закончился |
billing.limit_approaching | NORMAL | Приближение к лимиту |
billing.limit_exceeded | HIGH | Лимит превышен |
billing.subscription_cancelled | NORMAL | Подписка отменена |
billing.subscription_suspended | CRITICAL | Подписка приостановлена |
billing.card_expiring_soon | HIGH | Карта скоро истечёт |
billing.card_expired | CRITICAL | Карта истекла |
События здоровья
Заголовок раздела «События здоровья»| Событие | Приоритет | Описание |
|---|---|---|
health.check_failed | HIGH | Health check не прошёл |
health.recovered | NORMAL | Приложение восстановлено |
health.degraded | HIGH | Производительность деградировала |
health.unavailable | CRITICAL | Приложение недоступно |
Системные события
Заголовок раздела «Системные события»| Событие | Приоритет | Описание |
|---|---|---|
system.maintenance_scheduled | NORMAL | Плановые работы |
system.feature_announcement | LOW | Новые функции |
Получить уведомления
Заголовок раздела «Получить уведомления»GET /v1/notifications?archived=false&limit=20Query параметры:
archived—trueдля архива,falseдля inboxunreadOnly— только непрочитанные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/preferencesPUT /v1/notifications/preferences/channelPUT /v1/notifications/preferences/categoryReal-time уведомления
Заголовок раздела «Real-time уведомления»In-App уведомления доставляются мгновенно через SSE:
GET /v1/notifications/streamКлиент автоматически подключается при загрузке страницы. При потере соединения — автоматическое переподключение.
Дефолтные настройки
Заголовок раздела «Дефолтные настройки»При регистрации устанавливаются настройки в зависимости от способа входа:
Email регистрация:
| Категория | Каналы | Мин. приоритет |
|---|---|---|
| Deployment | Email, In-App | NORMAL |
| Health | Email, In-App | HIGH |
| Billing | Email, In-App | NORMAL |
| Security | Email, In-App | LOW |
| System | Email, In-App | NORMAL |
Telegram регистрация:
| Категория | Каналы | Мин. приоритет |
|---|---|---|
| Deployment | Telegram, In-App | NORMAL |
| Health | Telegram, In-App | HIGH |
| Billing | Telegram, In-App | NORMAL |
| Security | Telegram, In-App | LOW |
| System | Telegram, In-App | NORMAL |
Troubleshooting
Заголовок раздела «Troubleshooting»Не приходят email уведомления
Заголовок раздела «Не приходят email уведомления»- Проверьте папку спам
- Проверьте что канал Email включён
- Проверьте настройки категории — возможно фильтр по приоритету
- Проверьте quiet hours — возможно сейчас тихие часы
Не вижу уведомления в Inbox
Заголовок раздела «Не вижу уведомления в Inbox»- Проверьте что канал In-App включён
- Обновите страницу
- Проверьте фильтр категорий в настройках
Слишком много уведомлений
Заголовок раздела «Слишком много уведомлений»- Повысьте минимальный приоритет для шумных категорий
- Отключите канал Email для информационных событий
- Настройте quiet hours для ночного времени
См. также
Заголовок раздела «См. также»- API Tokens — управление токенами
- Настройки — обзор настроек аккаунта