Metrics → Connections with users
src/features/connections_with_users/ — 14-денний календар активності зв’язків TU ↔ RU для Golden і Chathouse.
Меню Family → Metrics → Connections with users.
Суть
Календар активності RU по одній обраній TU за вікно 14 днів: рядок = RU, колонки = дні, клітинка = скільки RU витратив на цю TU в цей день + кольоровий статус дня. Connection = пара TU↔RU, у якої була хоч одна витрата.
Сервер визначає статуси днів і доступний рольовий scope; frontend вибирає TU, показує 14 колонок дат і відкриває деталізацію клітинки.
Use cases
- operator — дивиться своїх TU: хто з RU «охолов», кого реанімувати.
- teamlead (supervisor) — те саме по TU своєї команди, з фільтром по оператору.
- top_manager / ceo (director) — той самий аналіз, але з ширшою картиною: у деталях клітинки бачать, на яких саме інших TU RU витрачає (director — по всіх TU, top_manager — у межах TU своїх тімлідів). Оператор і тімлід цього списку не бачать.
Доступно у
udate · prime/talkytimes · goldenbride ✓ · chathouse ✓ (свій бек, та сама UI-логіка)
| Роль | Golden | Chathouse |
|---|---|---|
ceo | /ceo/golden/connections_with_users | /ceo/chathouse/connections_with_users |
top_manager | /top_manager/golden/connections_with_users | /top_manager/chathouse/connections_with_users |
teamlead | /teamlead/golden/connections_with_users | /teamlead/chathouse/connections_with_users |
operator | /operator/connections_with_users | /operator/connections_with_users |
Операторський URL спільний: потрібна Family визначається застосунком поточного оператора.
Можливості
| # | Можливість | operator | teamlead | top_manager | ceo |
|---|---|---|---|---|---|
| 1 | Вибір TU за фільтрами | свої TU | своя команда (+фільтр оператор) | свої тімліди | всі |
| 2 | Таблиця активності RU (14 днів) | ✓ | ✓ | ✓ | ✓ |
| 3 | Деталі клітинки (пара + день) | без списку інших TU | без списку інших TU | + інші TU своїх тімлідів | + інші TU (всі) |
Деталі по можливостях
1. Вибір TU за фільтрами
Ліва панель фільтрів + віртуалізований список TU. Клік по TU застосовує поточні Date і Connection type та будує таблицю; окремої кнопки GNR немає.
| Контрол | Що робить | Ролі |
|---|---|---|
| Date | кінцева дата вікна; показуються вона + 13 днів назад. Дефолт — сьогодні | усі |
| Connection type | All / New / Young / Old — фільтр пар по retention-категорії (від lifetime) | усі |
| TeamLead | звузити пул TU до команди тімліда | ceo, top_manager |
| Operator | звузити до TU оператора | ceo, top_manager, teamlead |
Для operator тімлід/оператор підставляються його власними автоматично; для teamlead — його id.
- Список TU завантажується автоматично після готовності рольового scope.
- Зміна дати, типу connection, Teamlead або Operator повторно завантажує доступний список TU, скидає вибрану TU та ховає попередню таблицю.
- Пошук по списку TU локальний: ім’я або видимий ID; для Chathouse це
external_id, для Golden — TU ID. - Списки Teamlead/Operator завантажуються при відкритті відповідного dropdown. Заблоковані оператори не пропонуються для нового вибору.
Endpoints:
| Family | Endpoint | Що робить |
|---|---|---|
golden | metric/getLadies | пул TU за фільтрами (бек скоупить по ролі) |
chathouse | POST /chathouse/metrics/connections-with-users/getLadies (legacy, поза Swagger) | те саме (chathouse) |
stack | POST /team-members/current/supervisors · /operators | списки тімлідів/операторів для дропдаунів |
2. Таблиця активності RU
Рядок = RU (ім’я, вік, ID), 14 колонок-днів. У клітинці — сума витрат на цю TU за день, фон — статус дня:
| Колір | Статус |
|---|---|
| зелений | залогінився, витратив на цю TU (у клітинці — сума $) |
| жовтий насичений | залогінився, витратив на інших TU |
| жовтий блідий | залогінився, не витратив ні на кого |
| червоний | заблокував цю TU |
| білий | не логінився |
Frontend сканує 14 дат зліва направо й сортує рядки за першою знайденою позитивною витратою: раніша колонка стоїть вище, RU без позитивної витрати у видимому вікні — наприкінці. Які саме RU входять у відповідь, визначає backend.
Тіло таблиці віртуалізоване з невеликим запасом рядків. Якщо API повернув порожній список, UI зберігає один порожній технічний рядок, щоб таблиця не втрачала структуру.
Endpoints:
| Family | Endpoint | Що робить |
|---|---|---|
golden | metric/getConnectionsWithUsers | RU + статуси днів за 14-денне вікно |
chathouse | POST /chathouse/metrics/connections-with-users/get (legacy, поза Swagger) | те саме (chathouse) |
3. Деталі клітинки
Клік по клітинці (крім «не логінився») відкриває модалку пари за день: категорія пари (New/Young/Old), lifetime, час онлайну RU, розбивка витрат по типах операцій (TextChat, VideoChat, EmailRead…), загальні витрати RU за день на всіх TU.
- Список «на яких ще TU витрачав» з сумами бачать
ceo(усі TU, без обмеження) іtop_manager(тільки TU своїх тімлідів). - Рядок
Number of TUє тільки у Golden й показується всім ролям, крімceo. - Golden і Chathouse показують загальні витрати RU за день на всіх TU; текст підсумку відрізняється між Family.
- UI рендерить список інших TU з відповіді без додаткової локальної фільтрації; доступний склад цього списку визначає backend role scope.
Endpoints:
| Family | Endpoint | Що робить |
|---|---|---|
golden | metric/getConnectionsWithUsersDetailed | деталі пари за день (список інших TU бек ріже по ролі) |
chathouse | POST /chathouse/metrics/connections-with-users/getDetailed (legacy, поза Swagger) | те саме (chathouse) |
Loading, empty та error-стани
- Поки TU не вибрана або після зміни фільтрів, основна область показує
No data. Adjust filters and apply. - Усі запити використовують global loader; помилки показуються через global notification.
- Якщо користувач швидко змінює фільтри або клітинки, UI застосовує лише результат останнього актуального запиту.
- Зміна Family або вибраної TU закриває відкриту деталізацію клітинки.
Зв’язки
- metrics-tu-scoring — сусідній Golden-only екран метрик
- Golden: getLadies, getConnectionsWithUsers, getConnectionsWithUsersDetailed
- TODO: перевірити, чи має Chathouse operation deeplink-и; до цього залишити лише фактичні legacy paths.