lizerk 5220a96684 refactor: Модуль notifications полностью самостоятельный и переиспользуемый
КРИТИЧНЫЕ УЛУЧШЕНИЯ:
✅ Убран хардкод 'EUSRR' → универсальное 'My Site'
✅ Созданы email шаблоны внутри модуля (4 файла)
✅ Централизованная конфигурация в config.py
✅ API перемещен в notifications/api/

Новые файлы:
- config.py - централизованные настройки с fallback значениями
- templates/notifications/email/*.html/*.txt - HTML и текстовые шаблоны
- api/__init__.py, api/views.py, api/urls.py - REST API внутри модуля

Изменения в существующих файлах:
- senders/email.py: использует config.site_name() и config.from_email()
- tasks/email.py: rate_limit, max_retries, retry_delay из config
- tasks/push.py: rate_limit, max_retries, retry_delay из config
- tasks/websocket.py: max_retries, retry_delay из config
- api/v1/notifications/urls.py: реэкспорт из notifications.api (обратная совместимость)

Структура шаблонов:
📁 notifications/templates/notifications/email/
  ├── notification.html - красивый HTML для обычных уведомлений
  ├── notification.txt - текстовая версия
  ├── digest.html - HTML дайджест (daily/weekly)
  └── digest.txt - текстовая версия дайджеста

Конфигурация (config.py):
- DEFAULT_CONFIG с fallback значениями для всех параметров
- get_config() - объединяет с settings.NOTIFICATIONS_CONFIG
- Удобные функции: email_rate_limit(), push_max_retries(), site_name()
- Полностью настраиваемо через settings проекта

API внутри модуля:
- notifications/api/views.py - все endpoint'ы
- notifications/api/urls.py - URL patterns
- Относительные импорты (from ..models)
- Обратная совместимость через api/v1/notifications/urls.py

УНИВЕРСАЛЬНОСТЬ:
✅ Нет хардкода проекта
✅ Все шаблоны внутри модуля
✅ API внутри модуля
✅ Конфигурация через settings
✅ Можно скопировать в любой проект Django 5.2+
2026-03-09 17:06:20 +03:00

20 lines
1.0 KiB
Python

"""
REST API для системы уведомлений
Endpoints:
- GET /api/v1/notifications/ - список уведомлений
- GET /api/v1/notifications/<id>/ - детали уведомления
- GET /api/v1/notifications/unread/count/ - счетчик непрочитанных
- GET /api/v1/notifications/verb-types/ - статистика по типам
- GET /api/v1/notifications/preferences/ - настройки каналов
- PUT /api/v1/notifications/preferences/ - обновить настройки
- POST /api/v1/notifications/<id>/read/ - отметить прочитанным
- POST /api/v1/notifications/<id>/unread/ - отметить непрочитанным
- DELETE /api/v1/notifications/<id>/ - удалить уведомление
- DELETE /api/v1/notifications/delete-all-read/ - удалить прочитанные
- POST /api/v1/notifications/push/subscribe/ - подписаться на push
- DELETE /api/v1/notifications/push/unsubscribe/ - отписаться от push
"""
__all__ = ['views', 'urls']