- Remove hard-coded Russian translations from backend API
- Backend now returns raw verb values (language-agnostic)
- Implement frontend translation functions for notification titles and categories
- Add category badge system with filters on notifications page
- Create translation utilities in frontend (verbTranslations.ts)
- Add notification settings page structure
- Update API endpoints to return simplified notification data
- Refactor notification signals across all apps
- Remove deprecated code and tests
- Add comprehensive documentation for v2 migration
Backend changes:
- notifications/api/views.py: Remove translation logic, simplify responses
- All notification_signals.py: Update to use consistent patterns
- Remove deprecated Telegram bot command
- Update Celery tasks for new notification structure
Frontend changes:
- app/notifications/page.tsx: Add translation functions and category badges
- hooks/useNotificationWebSocket.ts: New WebSocket hook for real-time updates
- lib/verbTranslations.ts: Centralized translation mappings
- components/NotificationCenter.tsx: Update to use new API format
This makes the notifications module fully reusable and project-independent.
Исправлено:
- channels.py: удалены осиротевшие строки после рефакторинга
- api/v1/notifications/urls.py: исправлен file для реэкспорта
- notifications/urls.py: создан для обратной совместимости
Миграции:
- 0010_userchannelpreferences_and_more.py: переход на v2 модели
* Notification с GenericForeignKey (actor/action_object/target)
* UserChannelPreferences вместо UserNotificationSettings
* Удалены старые модели (NotificationCategory, NotificationType и тд.)
* Переименована таблица в notifications_notification_v2
Критичные задачи:
- Создать email шаблоны (notification.html/txt, digest.html/txt)
- Написать unit и integration тесты (coverage >80%)
- Убрать хардкод 'EUSRR' из email sender
Важные улучшения:
- Вынести настройки rate_limit, max_retries в settings
- Переместить API endpoints в notifications/api/
- Централизовать конфигурацию в notifications/settings.py
Желательные доработки:
- setup.py для публикации в PyPI
- Sphinx документация
- CI/CD pipeline
- Pre-commit hooks
Затронуты файлы:
- models.py - TODO для тестов моделей
- signals.py - TODO для тестов сигналов
- channels.py - TODO для integration тестов
- senders/email.py - TODO для шаблонов и хардкода
- tasks/email.py - TODO для конфигурации
- tasks/push.py - TODO для конфигурации
- README.md - секция TODO с чеклистом
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
Создана объектно-ориентированная архитектура для отправителей:
Новая структура:
- BaseNotificationSender - абстрактный базовый класс
- EmailNotificationSender(BaseNotificationSender)
- WebSocketNotificationSender(BaseNotificationSender)
- PushNotificationSender(BaseNotificationSender)
Преимущества:
✅ Единый интерфейс send() для всех каналов
✅ can_send() - проверка возможности отправки
✅ Унифицированное логирование (log_success, log_error, log_skip)
✅ Легко расширять новыми каналами
✅ Переиспользуемость кода
Изменения:
- notifications/senders/base.py - базовый класс
- notifications/senders/email.py - email отправитель (упрощен)
- notifications/senders/websocket.py - WebSocket отправитель
- notifications/senders/push.py - Web Push отправитель
- notifications/channels.py - обновлен для использования классов
Старые функции send_* сохранены для обратной совместимости (deprecated)
- Убрана поддержка Telegram из каналов доставки
- Удалено telegram_enabled из UserChannelPreferences
- Обновлена документация
- Сфокусировались на WebSocket, Email и Web Push
Фокус: веб-уведомления, email дайджесты и web push
- Упрощена архитектура: 2 модели вместо 6
- GenericForeignKey для универсальности
- Стандартный API notify.send() как в django-notifications-hq
- Совместимость с Django 5.2+
- Сохранен multi-channel функционал (WebSocket, Email, Telegram, Push)
- Создана полная документация
Файлы:
- models_new.py - Notification + UserChannelPreferences
- signals_new.py - notify.send() API
- channels.py - роутинг по каналам доставки
- admin_new.py - Django Admin интерфейс
- README.md - краткое описание для переиспользования
- docs/guides/NOTIFICATIONS_V2_USAGE.md - полное руководство
- docs/reports/NOTIFICATIONS_REFACTORING_REPORT.md - отчет о рефакторинге
Требуется тестирование перед внедрением.