Единая точка входа для всех чатов TRIDE вместо разбросанных пунктов меню (chat, echat, clientchat, support, clientchats, /asupport).
Состав хаба зависит от роли, прав (clientchat:*) и настроек клуба (clubSettings.menu/employeemenu). Основано на реальных системах: tv_chat (общий канал клуба/сотрудников), clientchat (лички клиент↔клуб + виджет), support (клуб↔TRIDE), планируемые чаты тренер↔клиент и клиент↔клиент.
Платформа
Роль
Настройки клуба
Общий чат (menu.chat)
Чат с клубом (menu.clientchat)
Чат сотрудников (employeemenu.echat)
Чаты с тренерами (будущее)
Клиент↔клиент (будущее)
Экран
1. Точка входаодна кнопка «Сообщения» с суммарным бейджем непрочитанных
Концепция: один пункт меню «Сообщения» (id messages, иконка chat) заменяет все чат-пункты.
Десктоп — в левом сайдбаре + быстрая иконка в TopBar рядом с колокольчиком. Мобилка — слот в BottomMenu (настраиваемый, как остальные слоты через брендирование bottommenu) + иконка в TopBar.
Бейдж — сумма client_chats.unread_client/unread_club + support_chats.unread_club/unread_tride (+ будущие coach/p2p), отдаётся лёгким REST-счётчиком и обновляется сокет-событиями.
2. Экран хаба /messagesmaster-detail: список → переписка → контекстный сайдбар
Список чатов сгруппирован: Личные (клуб, тренер, поддержка, клиенты), Клубные каналы (общий чат, чат сотрудников).
У каждого чата — тип (плашка), последнее сообщение, время, бейдж непрочитанных. Справа — переписка (общий SupportMessage/MessageComposer) и сайдбар по типу чата:
клиент-инфо для сотрудника (ClientSidebar: профиль, занятия, абонементы, пакеты, сегменты, бейджи, FTP),
клуб-инфо для админа (ClubInfoPanel: агенты, теги, устройства, сотрудники),
у тренера — записи/цели/планы клиента. Кликните на чаты в списке, чтобы посмотреть варианты сайдбара.
3. Матрица «роль × чат × условие»что попадает в хаб и откуда данные
новые коллекции по образцу clientchat, комната coachchat_<club>_chat_<id>
Клиент ↔ клиент (личка внутри клуба) будущее
настройка клуба
—
—
—
новые коллекции по образцу clientchat, RBAC клиентский
Личка 1:1 Клубный канал Поддержка Будущее
4. Заметки по реализации
Единый REST-счётчик:messages.badge → {total, by_type} из unread-полей; кэш 30с + инвалидируется сокет-событиями. Пуши уже существуют (clientchat/support) и ведут в нужный чат хаба (/messages?chat=<id>). Сайдбары: переиспользуем ClientSidebar.svelte (как в /clientchats) и ClubInfoPanel.svelte (как в /asupport) — оба уже адаптивны (десктоп-колонка / мобайл-оверлей). Старые роуты (/venue/chat, /venue/echat, /venue/clientchat, /clientchats*, /asupport*) → редиректы в хаб с раскрытым чатом, пункты меню сворачиваются в один. Настройки включения чатов остаются как есть (ClubSettingsAppMenu/EmployeeMenu). Известные подводные камни (учесть при реализации): REST-отправка не эмитит сокет-события (только polling-догрузка); tv_chat не имеет unread/read — для общего канала бейдж считаем по last_read_ts пользователя; копипаст сокет-логики на фронте — в хабе выносится в один composable.