33 lines
1.7 KiB
Markdown
33 lines
1.7 KiB
Markdown
# 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.
|
||
|