# 🧪 Инструкция по тестированию системы уведомлений **Дата:** 20 ноября 2025 г. --- ## 🚀 Быстрый старт ### 1. Запустить сервер ```bash cd backend python manage.py runserver 9000 ``` ### 2. Открыть приложение http://localhost:9000/ ### 3. Войти в систему Используйте существующего пользователя --- ## ✅ Что тестировать ### ЭТАП 1-3: Автоматические уведомления (Signal Integration) **1. Чат - Communications** 💬 - Отправьте сообщение в чат → получатель получит уведомление - Упомяните @email в сообщении → уведомление об упоминании - Ответьте на сообщение → автор получит уведомление **2. Заявки - Requests** 📋 - Создайте заявку → руководители получат уведомление - Добавьте комментарий → автор получит уведомление - Одобрите/отклоните заявку → автор получит уведомление **3. Документы - Documents** 📄 - Загрузите документ → получатели получат уведомление - Ознакомьтесь с документом → автор получит уведомление (если все ознакомились) **4. Календарь - Calendar** 📅 - Создайте событие → участники получат уведомление - Измените событие → участники получат уведомление - Удалите событие → участники получат уведомление об отмене **5. Лента - Feed** 📰 - Создайте пост → пользователи получат уведомление (по типу) - Комментируйте пост → автор получит уведомление - Поставьте лайк → автор получит уведомление ### ЭТАП 4: UI и UX **1. Колокольчик в Navbar** 🔔 - Badge показывает количество непрочитанных - Клик открывает dropdown с последними 5 уведомлениями - Кнопка "Все" ведет на полный список - Кнопка "Настройки" ведет на настройки **2. WebSocket Real-time** ⚡ - Новое уведомление появляется мгновенно - Badge обновляется без перезагрузки - Список в dropdown обновляется **3. Браузерные уведомления** 🖥️ - При первом посещении запрашивается разрешение - Новые уведомления показываются в ОС - Клик по уведомлению переходит на объект - Уведомление отмечается прочитанным **4. Звуковые уведомления** 🔊 - При новом уведомлении звучит короткий звук - Переключатель в настройках: вкл/выкл - Настройка сохраняется в браузере **5. Список уведомлений** 📋 Откройте: `/notifications/` - **Фильтр по категории:** выберите из 8 категорий - **Фильтр по статусу:** все/прочитанные/непрочитанные - **Поиск:** введите текст и нажмите "Найти" - **Пагинация:** переключение между страницами - **Действия:** - "Посмотреть" → переход к объекту - "Прочитано" → отметить прочитанным - Корзина → удалить уведомление - "Отметить все прочитанными" → массовое действие **6. Настройки** ⚙️ Откройте: `/notifications/settings/` - **Звук:** переключатель (глобально) - **По категориям:** 8 карточек - Главный переключатель (вкл/выкл категорию) - Каналы: Веб (работает), Email/Telegram (скоро) - **Автосохранение:** изменения сразу отправляются на сервер - **Toast:** всплывает "Настройки сохранены" --- ## 🧪 Генератор тестовых уведомлений Для быстрого тестирования используйте скрипт: ```bash cd backend python generate_notification.py ``` **Меню:** 1. Новое сообщение в чате 2. Новый документ 3. Одобрена заявка 4. Новое событие в календаре 5. Новая публикация 6. Системное уведомление 7. Создать 5 разных уведомлений После создания: - Проверьте колокольчик (должен обновиться badge) - Должно прийти браузерное уведомление - Должен воспроизвестись звук - Откройте список - уведомление должно быть там --- ## 🔍 Что проверять ### Real-time (WebSocket) - [ ] Badge обновляется мгновенно - [ ] Список в dropdown обновляется - [ ] При отключении badge становится красным - [ ] При восстановлении badge возвращает цвет ### Браузерные уведомления - [ ] Запрос разрешения при первом визите - [ ] Уведомления показываются в ОС - [ ] Клик переходит на объект - [ ] Клик отмечает прочитанным - [ ] Автозакрытие через 10 сек (если не urgent) ### Звук - [ ] Воспроизводится при новом уведомлении - [ ] Переключатель в настройках работает - [ ] Настройка сохраняется в localStorage - [ ] Не воспроизводится если выключен ### Фильтрация - [ ] Фильтр по категории работает - [ ] Фильтр по статусу работает - [ ] Поиск находит по заголовку - [ ] Поиск находит по тексту - [ ] Фильтры можно комбинировать ### Пагинация - [ ] Показывает правильное количество страниц - [ ] Переход между страницами работает - [ ] Текущая страница подсвечена - [ ] Многоточие между далекими страницами - [ ] Прокрутка наверх при смене страницы ### Действия - [ ] "Прочитано" убирает синюю полосу - [ ] "Прочитано" уменьшает badge на 1 - [ ] "Удалить" удаляет карточку - [ ] "Отметить все" обнуляет badge - [ ] "Посмотреть" переходит на URL ### Настройки - [ ] Переключатель категории включает/выключает - [ ] При выключении скрываются каналы - [ ] Изменения сохраняются на сервер - [ ] Toast показывает "Настройки сохранены" - [ ] Звук переключается глобально --- ## 🐛 Известные ограничения 1. **Email/Telegram** - пока не работают (Этап 2 отложен) 2. **Напоминания** - пока не работают (нужен Celery) 3. **Группировка** - не реализована 4. **Дайджесты** - не реализованы --- ## 📊 Ожидаемые результаты ### После создания уведомления: 1. ✅ Badge показывает +1 2. ✅ Dropdown обновляется (новое уведомление сверху) 3. ✅ Браузерное уведомление всплывает 4. ✅ Звук воспроизводится (если включен) 5. ✅ Список обновляется (если открыт) ### После "Прочитано": 1. ✅ Badge показывает -1 2. ✅ Карточка теряет синюю полосу 3. ✅ Opacity становится 70% 4. ✅ Кнопка "Прочитано" исчезает ### После фильтрации: 1. ✅ Показываются только подходящие уведомления 2. ✅ Пагинация пересчитывается 3. ✅ Счетчик total обновляется ### После изменения настроек: 1. ✅ Toast "Настройки сохранены" 2. ✅ Изменения применяются сразу 3. ✅ Новые уведомления учитывают настройки --- ## 🔧 Отладка ### Консоль браузера Откройте DevTools (F12) → Console Смотрите логи: ``` [Notifications] WebSocket connected [Notifications] Received: {type: 'new_notification', ...} [Notifications] New notification: {...} [Notifications] Browser notification shown ``` ### Django logs Смотрите терминал где запущен runserver ### WebSocket Проверьте в DevTools → Network → WS: - Соединение установлено - Сообщения приходят - Нет ошибок ### API Проверьте запросы в DevTools → Network → Fetch/XHR: - `/api/notifications/` - список - `/api/notifications/count/` - счетчик - `/api/notifications/{id}/read/` - прочитать - `/api/notifications/settings/` - настройки --- ## ✅ Чеклист полного тестирования - [ ] Создать уведомление через signal (отправить сообщение) - [ ] Создать уведомление через генератор - [ ] Проверить колокольчик обновился - [ ] Проверить браузерное уведомление - [ ] Проверить звук воспроизвелся - [ ] Открыть список уведомлений - [ ] Применить фильтр по категории - [ ] Применить фильтр по статусу - [ ] Выполнить поиск - [ ] Перейти на 2-ю страницу (если есть) - [ ] Отметить уведомление прочитанным - [ ] Удалить уведомление - [ ] Отметить все прочитанными - [ ] Открыть настройки - [ ] Выключить категорию - [ ] Включить категорию - [ ] Переключить звук - [ ] Проверить автосохранение **Все работает? ПОЗДРАВЛЯЕМ! 🎉** --- *Автор: GitHub Copilot + User* *Дата: 20 ноября 2025 г.*