MetricsService
Спільний модуль family-application-api для аналізу зв’язків TU + RU та TU scoring.
Metrics доступні тільки для Golden і Chathouse: лише ці Family мають детальну статистику з RU та типом операції.
Задача
- Показати 14-денний календар активності RU для вибраної TU.
- Показати деталі зв’язку TU + RU за день.
- Розрахувати TU scoring за період і total доступного пулу TU.
- Побудувати часові ряди scoring-метрик.
Поточна реалізація
| № | Можливість | Golden | Chathouse |
|---|---|---|---|
| 1 | Connections with users | ✅ | ✅ |
| 2 | Деталі зв’язку за день | ✅ | ✅ |
| 3 | TU scoring | ✅ | — |
| 4 | Графіки TU scoring | ✅ | — |
Для Chathouse треба дописати scoring і графіки поверх спільних формул та наявної детальної статистики.
API
| № | Операція | Endpoint |
|---|---|---|
| 1 | TU, доступні у Metrics | POST /metrics/tus |
| 2 | Календар зв’язків TU + RU | POST /metrics/connections |
| 3 | Деталі зв’язку за день | POST /metrics/connection-details |
| 4 | TU scoring і total | POST /metrics/tu-scoring |
| 5 | Часові ряди scoring | POST /metrics/tu-scoring-series |
Спільні фільтри: family, період, supervisorFamilyId, operatorFamilyId і tuId. Доступний пул TU визначається роллю user.
Connections with users
Показується обраний день і 13 попередніх днів. У таблицю входять RU, які мали хоча б одну враховану витрату на вибрану TU у цьому вікні.
Статус дня визначається в одному порядку:
- RU заблокував TU.
- RU витрачав на цю TU.
- RU витрачав на інші TU.
- RU був online без витрат.
- RU не був online.
Фільтр connection type використовує new, young та old із FamilyMetricDay.
Деталі клітинки повертають lifetime, connection type, RU online, витрати за типами операцій, загальні витрати RU та інші TU, на яких він витрачав. Список інших TU обмежується доступним user scope.
TU scoring
| № | Метрика | Розрахунок |
|---|---|---|
| 1 | Balance | Сума врахованих витрат RU |
| 2 | Avg Balance per Day | Balance / активні дні TU |
| 3 | Avg Online | Online TU / активні дні TU |
| 4 | Avg Views per Hour | Унікальні profile views / години online TU |
| 5 | OTRR | Таски з відповіддю до deadline / усі таски з deadline |
| 6 | NewConn Rate | Sender RU-days із відповіддю / усі sender RU-days |
| 7 | NDR | Повернення наступного дня / connections попереднього дня, окремо new/young/old |
| 8 | Avg Spend per Day | Витрати / connection-days, окремо new/young/old |
| 9 | CPR | Активні дні пар / можливі дні пар |
| 10 | Avg DAU | Середня кількість унікальних connections за активний день TU |
| 11 | TAU | Унікальні connections за період |
| 12 | New Conn | Connections із lifetimeDays = 0 |
TU із сумарним online менше 60 хв за період не входить у scoring і total. Total для rate-метрик перераховується із загальних чисельників і знаменників, а не як середнє значень TU.
Дані
| Дані | Джерело |
|---|---|
| Витрати, lifetime і повернення RU | FamilyMetricDay |
| Активні дні TU | FamilyStatisticsRelation |
| Online TU | TUWorkspaceOnlineSession |
| Таски | Task |
| RU online | денний агрегат із partner online history |
| Profile views | спільна collection подій перегляду профілю — TODO |
| Sender answers | спільна collection результатів sender — TODO |
| Block history TU + RU | спільна collection історії block/unblock — TODO |
Golden уже має всі джерела для scoring. У Chathouse є детальні витрати, RU online, block history і sender answers; перед повним scoring треба додати спільні profile views та підключити решту canonical sources.
Часові ряди
POST /metrics/tu-scoring-series повертає ті самі метрики за day, week або month. Запит може містити одну метрику або весь набір для початкового завантаження сторінки.