lizerk 46e7059a40 refactor(procurement): удаление дублирующего WebSocket модуля
Проблема:
- procurement/notifications/websocket.py дублировал функциональность
- Прямые вызовы channel_layer.group_send() обходили универсальную систему
- Нарушение единообразия использования notifications

Решение:
- Удален websocket.py модуль
- WebSocket уведомления теперь отправляются через универсальную систему:
  notify.send() → channels.py → Celery → WebSocketNotificationSender

Преимущества:
- ✅ Единообразие архитектуры (как в requests_app)
- ✅ Все каналы (WebSocket, Email, Push) через одну систему
- ✅ Автоматический retry и rate limiting
- ✅ Централизованное логирование
- ✅ Меньше кода для поддержки

Изменения:
- Удален: notifications/websocket.py
- Обновлен: notifications/signals.py (удалены broadcast вызовы)
- Обновлен: notifications/__init__.py (удалены импорты websocket)
2026-03-10 12:37:49 +03:00

69 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
Модуль уведомлений для приложения Procurement.
Обеспечивает автоматическую отправку уведомлений при:
- Создании новой заявки на закупку
- Изменении статуса заявки
- Создании/изменении согласования
Использует универсальную систему уведомлений (backend/notifications).
Все уведомления (включая WebSocket) отправляются через notify.send().
Структура:
- config.py - конфигурация (типы уведомлений, шаблоны, URLs)
- handlers.py - бизнес-логика отправки уведомлений
- signals.py - Django сигналы для автоматической генерации
Usage:
# Сигналы подключаются автоматически через AppConfig.ready()
# Для ручной отправки:
from procurement.notifications import notify_new_request
notify_new_request(request_obj)
# WebSocket broadcast происходит автоматически через:
# notify.send() → channels.py → Celery → WebSocketNotificationSender
"""
# Импорты для удобства и обратной совместимости
from .config import NotificationVerbs, MessageTemplates, ActionURLs
from .handlers import (
notify_new_request,
notify_approvers,
notify_approver,
notify_requestor,
notify_request_approved,
notify_request_rejected,
notify_request_completed,
notify_request_in_progress,
notify_request_cancelled,
notify_stage_approved,
notify_stage_rejected,
)
# Сигналы импортируются для регистрации через AppConfig.ready()
from . import signals # noqa: F401
__all__ = [
# Config
'NotificationVerbs',
'MessageTemplates',
'ActionURLs',
# Handlers
'notify_new_request',
'notify_approvers',
'notify_approver',
'notify_requestor',
'notify_request_approved',
'notify_request_rejected',
'notify_request_completed',
'notify_request_in_progress',
'notify_request_cancelled',
'notify_stage_approved',
'notify_stage_rejected',
# Signals module (для импорта в AppConfig)
'signals',
]