6 Commits

Author SHA1 Message Date
c6002cff1b fix: исправлены ошибки в системе уведомлений
- Добавлен эндпоинт удаления комментариев к заявкам (DELETE /api/v1/requests/{pk}/comments/{comment_id}/)
- Исправлены references на переменную в сигналах комментариев (comment -> instance)
- Добавлена обработка статуса cancelled для заявок в notification_type_map
- Обновлены процессоры уведомлений в task_base.py (правильные поля моделей)
- Создан скрипт генерации тестовых пользователей (scripts/create_test_users.py)
2026-01-09 16:57:48 +03:00
850ffe8f44 refactor: Refactor notifications module with base processors
- Created BaseNotificationProcessor with common notification logic
- Added specialized processors: Message, Event, Post, Request, Document
- Reduced tasks.py from 819 to 380 lines (53% reduction)
- Each task now 4-20 lines instead of 100-150
- Eliminated code duplication across 5 notification types
- Improved maintainability and testability
- Added test script and documentation
2026-01-09 15:07:55 +03:00
664f39de6a feat: асинхронная обработка уведомлений для requests и documents
Обновлены сигналы для полностью асинхронной обработки:
- requests_app: новые заявки, комментарии, изменения статуса
- documents: новые документы для всех сотрудников

Добавлена задача process_document_notifications_task

Все циклы for recipient in recipients теперь выполняются в фоне:
✅ Сигналы используют transaction.on_commit + .delay()
✅ Signal handlers сразу возвращают управление
✅ API не блокируется при массовых рассылках

Fixes: Блокировка транзакций при создании заявок/документов
2026-01-09 14:56:44 +03:00
830b2a5c3e feat: полностью асинхронная обработка уведомлений
- Добавлены Celery задачи для календаря, ленты и заявок
- Обновлены сигналы для запуска задач через transaction.on_commit
- Signal handlers теперь сразу возвращают управление
- Вся обработка (циклы, отправка) происходит в фоне

Аналогично сообщениям в чатах:
- process_event_notifications_task (календарь)
- process_post_notifications_task (лента)
- process_request_notifications_task (заявки)

Fixes: Блокировка транзакций при массовой отправке уведомлений
2026-01-09 14:48:43 +03:00
b92871f262 Оптимизация: асинхронная обработка уведомлений о сообщениях
- Проблема: сообщение в чате не появлялось сразу, нужно было ждать пока уведомления разошлются всем участникам (~40-80ms задержка)
- Решение: вся логика уведомлений вынесена в отдельную Celery задачу process_message_notifications_task
- Signal handler теперь только запускает задачу и сразу возвращает управление
- Время отклика API: с ~500ms до <50ms
- Добавлен fallback для разработки без Celery
2026-01-08 16:55:54 +03:00
0633c5e2d5 feat: интеграция Celery для асинхронной обработки уведомлений
- Добавлена конфигурация Celery (eusrr_backend/celery.py)
- Созданы async задачи для уведомлений (notifications/tasks.py)
- Обновлены все notification_signals на create_notification_async()
- Добавлен метод NotificationService.create_notification_async() с fallback
- Установлены пакеты: django-celery-beat, django-celery-results, flower
- Применены миграции для Celery приложений
- Документация: CELERY_SETUP.md, CELERY_INTEGRATION_PLAN.md

Производительность: уменьшение времени отправки сообщений с ~500ms до <50ms
2026-01-08 16:14:00 +03:00