BREAKING CHANGES: - Удалена старая система (6 моделей → 2 модели) - models_new.py → models.py (Notification, UserChannelPreferences) - signals_new.py → signals.py (notify.send API) - admin_new.py → admin.py Новая архитектура: - Все отправки через Celery (полностью асинхронно) - Модульная структура tasks/ (base, email, push, websocket) - Каждый канал - отдельный класс задачи наследующий BaseNotificationTask - Rate limiting, retry, приоритеты из коробки Обратная совместимость: - Создан services.py facade для старого API - NotificationService.create_notification() работает через notify.send() - Старый код продолжает работать без изменений Удалено: - Старые models.py, signals.py, admin.py, tasks.py (→ .old) - telegram_bot.py, telegram_models.py (Telegram отключен) - test_views.py, views.py, urls.py (устаревшие) Создано: - tasks/ модуль с классовой архитектурой (как senders/) - tasks/base.py - BaseNotificationTask - tasks/email.py - EmailNotificationTask + DigestEmailTask - tasks/push.py - PushNotificationTask - tasks/websocket.py - WebSocketNotificationTask Обновлено: - apps.py - загружает signals, channels, tasks - channels.py - все отправки через Celery задачи - Все импорты models_new → models
20 lines
833 B
Python
20 lines
833 B
Python
"""
|
|
Celery задачи для асинхронной отправки уведомлений через различные каналы
|
|
|
|
Архитектура:
|
|
- Базовый класс BaseNotificationTask (инкапсуляция общей логики)
|
|
- Класс-задача для каждого канала (EmailNotificationTask, PushNotificationTask, ...)
|
|
- Автоматическая регистрация в Celery через register_task()
|
|
- Единообразное логирование, retry, rate limiting
|
|
"""
|
|
from .email import send_email_notification, send_digest_email
|
|
from .push import send_push_notification
|
|
from .websocket import send_websocket_notification
|
|
|
|
__all__ = [
|
|
'send_email_notification',
|
|
'send_push_notification',
|
|
'send_websocket_notification',
|
|
'send_digest_email',
|
|
]
|