# Communications module `communications` — внутреннее Django-приложение EUSRR для чатов, сообщений, вложений, реакций, опросов и object-bound discussions. ## Контракты - HTTP API и authentication: [`../../docs/guides/API.md`](../../docs/guides/API.md) - WebSocket actions/events: [`../../docs/guides/WEBSOCKET.md`](../../docs/guides/WEBSOCKET.md) - notifications flow: [`../../docs/guides/NOTIFICATIONS.md`](../../docs/guides/NOTIFICATIONS.md) - точный HTTP contract: `/api/docs/` и `/api/schema/` - точный realtime contract: `/api/ws/docs/` и `/api/ws/schema/` ## Структура - `models.py` — chats, membership, messages, attachments, reactions, polls и read state; - `api/` — DRF viewsets, serializers и permissions; - `consumers.py` — `ChatConsumerMixin`, подключённый к `realtime.UserConsumer`; - `notifications/` — адаптер chat events к общей системе notifications; - `services/` — операции, которые не должны жить во viewset/consumer; - `management/commands/` — проверка и обслуживание данных чатов. REST prefix: `/api/v1/communications/`. WebSocket endpoint общий для проекта: `/ws/`. ## Проверка ```bash cd backend pytest tests/api/v1/communications tests/realtime -q ``` Manifest `pyproject.toml` нужен для проверки границ приложения. Публикация пакета в PyPI не является частью текущего workflow; URL и metadata manifest-а нельзя считать release configuration.