lizerk
d9a8e71e3a
refactor(notifications): сделать приложение полностью самодостаточным
Проблема:
- Service Worker файл (sw.js) находился в корне backend/
- Hardcoded пути к иконкам в sw.js и push.py (/static/img/logo-192.png)
- Функция serve_service_worker() в главном urls.py проекта
- Зависимость от project-specific структуры
- Невозможность переиспользовать приложение без изменений
Решение:
Service Worker на месте:
- backend/notifications/static/notifications/sw.js
- backend/notifications/views.py - serve_service_worker()
- backend/notifications/urls.py - добавлен endpoint sw.js
- backend/eusrr_backend/urls.py - импорт view из notifications
Удаление hardcoded путей:
- sw.js: убрана константа icon='/static/img/logo-192.png'
- senders/push.py: убран hardcoded 'icon': '/static/img/logo.png'
- config.py: добавлены PUSH_DEFAULT_ICON, PUSH_DEFAULT_BADGE (None = browser default)
- README.md: документация по настройке через NOTIFICATIONS_CONFIG
Изменения:
- Создан: notifications/views.py с serve_service_worker()
- Создан: notifications/static/notifications/sw.js
- Изменен: notifications/urls.py - добавлен path('sw.js')
- Изменен: notifications/config.py - настройки иконок
- Изменен: notifications/senders/push.py - использование config
- Изменен: notifications/README.md - документация
- Упрощен: eusrr_backend/urls.py - удалена функция, добавлен импорт
- Удалены: backend/sw.js, backend/static/sw.js, backend/communications/sw.js
Преимущества:
- ✅ Полностью автономное приложение
- ✅ Нет зависимостей от структуры проекта
- ✅ Конфигурируемые иконки через settings.py
- ✅ Browser defaults если иконки не указаны
- ✅ Легко переносить между проектами
- ✅ Единообразие архитектуры (SRP)
Верификация:
- python manage.py check - успешно
2026-03-10 13:58:53 +03:00
..
2026-03-10 13:05:58 +03:00
2026-03-09 21:35:36 +03:00
2026-02-16 17:07:15 +03:00
2026-03-10 13:28:46 +03:00
2026-03-09 21:35:36 +03:00
2026-03-10 13:37:59 +03:00
2026-03-10 13:42:45 +03:00
2026-03-10 13:58:53 +03:00
2026-03-10 13:07:05 +03:00
2026-03-10 13:18:57 +03:00
2026-02-17 18:32:30 +03:00
2026-03-10 13:58:53 +03:00
2026-03-10 12:38:39 +03:00
2026-03-09 21:35:36 +03:00
2026-03-10 12:28:03 +03:00
2026-03-09 21:35:36 +03:00
2026-03-10 13:18:57 +03:00
2026-03-10 13:58:53 +03:00
2026-02-27 16:36:16 +03:00
2026-03-06 12:21:11 +03:00
2025-07-30 08:15:53 +03:00
2025-09-03 17:17:44 +03:00
2025-07-30 08:15:53 +03:00
2026-02-17 18:34:16 +03:00
2026-02-24 15:40:50 +03:00
2026-03-05 11:49:55 +03:00
2026-03-06 19:01:27 +03:00
2026-02-26 20:18:37 +03:00