Notifications
⚠️ Документация в процессе наполнения
1. Summary
Goal: TODO — описать систему push-уведомлений.
User Value: TODO — информирование о важных событиях, возврат пользователей.
2. Business Logic
Rules & Mechanics
- Типы уведомлений
- Scheduling (отложенные уведомления)
- Telegram push через бота
- Аналитика (PushAnalytics)
- Таргетинг и сегментация
Формулы и константы
TODO: Добавить правила
MAX_PUSH_PER_DAY = ?
SCHEDULER_INTERVAL = ?
Edge Cases
| Ситуация | Поведение системы |
|---|---|
| Пользователь отключил уведомления | Не отправлять |
| Telegram API недоступен | Retry с backoff |
| Слишком много уведомлений | Троттлинг |
3. ADR (Architectural Decisions)
Почему Telegram, а не Web Push?
Проблема: Нужны push-уведомления для Telegram Mini App.
Решение: Отправка через Telegram Bot API.
Альтернативы (отклонены):
- Web Push — ограничена поддержка в TMA
- Email — не подходит для мобильного UX
Последствия: Зависимость от Telegram, но гарантированная доставка.
4. Architecture
Key Components
| Компонент | Путь | Описание |
|---|---|---|
| NotificationService | backend/src/domains/notifications/services/notification.service.ts | Логика уведомлений |
| PushScheduler | backend/src/domains/telegram/services/push-scheduler.service.ts | Планировщик |
| Routes | backend/src/domains/notifications/routes/ | API эндпоинты |
5. Database Schema
Models
| Модель | Описание | Ключевые поля |
|---|---|---|
| PushNotification | Уведомление | userId, title, body, scheduledAt, sentAt |
| PushAnalytics | Аналитика | notificationId, delivered, read |
6. API Endpoints
Admin API
| Метод | Эндпоинт | Описание | Ссылка |
|---|---|---|---|
| GET | /admin/push | Все уведомления | Тестировать → |
| POST | /admin/push | Отправить уведомление | Тестировать → |
| POST | /admin/push/schedule | Запланировать | Тестировать → |
7. Related
- Telegram Bot — отправка через бота
- Banners — in-app уведомления
- Feed — лента событий