lizerk d5b4ae9f43 refactor: Полный переход на новую архитектуру уведомлений v2.0
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
2026-03-09 16:36:14 +03:00

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',
]