Dashboard
src/features/dashboard/ — спільний Family-dashboard із рольовими зрізами та потижневими аналітичними графіками.
Суть
Сторінка line-графіків по одній Family. Кожен графік показує тренд показника по тижнях у вибраному шестимісячному вікні. До першого GNR замість графіків показується підказка Select dashboard criteria and click GNR.
Набір графіків і скоуп даних залежать від ролі × Family.
Use cases
Кожна роль із доступом бачить зведення у межах своєї зони відповідальності — від усієї Family (director) до власних показників (operator). Деталі по ролях — у Доступах.
Доступи
Family-dashboard є тільки для 4 ролей. У client_manager, hr_manager, recruiter і technical_department цієї вкладки немає.
Applicant/recruiter dashboards — окремі екрани з іншою бізнес-логікою та власними owner-модулями. Вони не належать до
src/features/dashboard/і не входять у scope цього документа.
| Роль | Frontend route |
|---|---|
director | /ceo/{family-route}/dashboard |
top_manager | /top_manager/{family-route}/dashboard |
team_lead | /teamlead/{family-route}/dashboard |
operator | /operator/dashboard |
{family-route} дорівнює golden, udate, chathouse або talkytimes; маршрутна назва talkytimes всередині фічі нормалізується до Family prime.
Скоуп задається селекторами в toolbar (рядки) — хто який зріз може відкрити:
| Зріз | director | top_manager | team_lead | operator |
|---|---|---|---|---|
| Вся Family (всі тімліди) | ✓ | — | — | — |
| Конкретний тімлід | ✓ (дропдаун Teamlead) | свої тімліди | свій (авто) | — |
| Конкретний оператор | — | ✓ (дропдаун) | ✓ (дропдаун) | свій (авто) |
- director — стартує на всій Family; дропдаун
Teamleadзвужує до одного тімліда (переходу на окремого оператора нема). - top_manager — свої тімліди + оператори під ними (два селектори).
- team_lead — свій id автоматично; дропдаун операторів своєї команди.
- operator — без селекторів, одразу власні показники.
Toolbar і період
| Контрол | Що робить | Ролі |
|---|---|---|
| ← / → | Гортання вікна на 4 тижні назад/вперед. | усі |
| Період (текст) | Поточне вікно — від понеділка пів-року тому до вибраної неділі. | усі |
| Teamlead / Operator | Селектор зрізу (див. Доступи). | усі крім operator |
| GNR | Generate — застосувати фільтри й завантажити графіки. До першого натискання показується підказка. | усі |
Період:
- Вікно — потижневі бакети за пів-року (кінець = вибрана неділя, початок = понеділок 6 місяців назад).
- Крок гортання — 4 тижні.
- Нижня межа історії в UI —
2024-07-01: коли шестимісячне вікно досягає цієї дати, початок видимого періоду обрізається до неї, а стрілка←стає disabled. - Стрілка
→disabled на останній доступній неділі, тому перейти в майбутній звітний період не можна. - Зміна періоду скидає конкретний scope до
All: дляdirectorіtop_manager— Teamlead, дляteam_lead— Operator; уtop_managerтакож скидається конкретний Operator.
Графіки
Базовий набір (усі ролі, усі Family)
Назви — як на дашборді (заголовок графіка).
| # | Графік | Що показує |
|---|---|---|
| 1 | Balance per week | Сумарний $ заробіток за тиждень. |
| 2 | Online per week | Сумарний час онлайн (години) за тиждень. Накладена червона область Sleep mode — скільки з онлайну було в режимі сну; тултіп показує години сну і % від загального онлайну. |
| 3 | Unique RU per week | Кількість унікальних RU: new (нові) і all (усі); у Chathouse є додаткова серія payers. |
| 4 | Average TU balance | Середній баланс TU по рівнях NEW / LOW / MID / TOP. (TODO: що означають рівні — сегментація TU за заробітком?) |
| 5 | Tasks per week | Кількість тасків по типах за тиждень. Набір типів — свій на кожній Family (див. нижче). |
| 6 | % of task processing | Частки On time, Out time, Closed by system; тип таску перемикається локальним селектором. |
| 7 | Average tasks processing speed | Середня швидкість опрацювання в секундах; tooltip також показує кількість тасків. |
| 8 | Quantity of sending messages | Кількість відправлень у серіях Manual і Sender. |
Набори типів тасків (Tasks per week):
golden—NeedToWriteMessage/NeedToWriteMail/ActiveChatWriteHim/ActiveChatUnanswered/Likeprime,udate,chathouse—Like/LimitsAreOpened/NeedToWrite/Unanswered
Графіки-варіації
| # | Графік | golden | prime | udate | chathouse | Примітка |
|---|---|---|---|---|---|---|
| 9 | Types of balance | ✓ | тільки director | ✓ | ✓ | Розподіл $ по типах активності (%, + сума). Категорії різні по Family. |
| 10 | Created Chats | — | ✓ | — | — | Кількість створених чатів за тиждень. |
| 11 | Total users online + Average number of users online | director | — | — | — | Онлайн: усі TU / наші TU / RU. |
| 12 | Number of users online | — | director | director + top | director + top | Середня к-сть онлайн TU; director може відкрити 24-год розклад, top бачить статичний графік. |
| 13 | Average online users during the day | director | director | director | director | Середній онлайн по годинах доби. Drill-down з графіка онлайну (не окремий віджет). |
Категорії Types of balance (різні по Family):
golden—TextChat/VideoChat/EmailSend/EmailRead/otherudate,chathouse—ChatMessage/ChatMedia/ChatAudio/ChatSticker/VirtualGift/Mail/MailMedia/otherprime— те саме що udate/chathouse, але безChatAudio
API
Графіки (нумерація з таблиць вище) наповнюються кількома запитами — один запит часто дає одразу кілька графіків. Підтверджені Golden operations мають Swagger deeplink; для інших Family наведено фактичний POST path із frontend-конфігурації без вигаданого Swagger anchor.
1. Головний info-endpoint (по ролі)
Графіки з цього запиту: golden — 1, 2, 3, 4, 9, 11 · prime — 1, 2, 3, 4, 9, 10 · udate / chathouse — 1, 2, 4, 9.
| Family | director | top-manager | supervisor | operator |
|---|---|---|---|---|
golden | getForDirector | getForTopManager | getForSupervisor | getForOperator |
prime | POST /prime/dashboard/getForDirector | POST /prime/dashboard/getForTopManager | POST /prime/dashboard/getForSupervisor | POST /prime/dashboard/getForOperator |
udate | POST /dashboard/getForDirector | POST /dashboard/getForTopManager | POST /dashboard/getForSupervisor | POST /dashboard/getForOperator |
chathouse | POST /chathouse/dashboard/getForDirector | POST /chathouse/dashboard/getForTopManager | POST /chathouse/dashboard/getForSupervisor | POST /chathouse/dashboard/getForOperator |
Серії
new/allдля графіка 3 (Unique RU per week) у Golden і Prime приходять прямо звідси (charts[].man); Udate і Chathouse отримують їх окремим викликом (#3 нижче). Chathouse додатково зберігає серіюpayers. Типи балансу (9) і Created Chats (10) — лише для відповідних ролей/Family згідно таблиці варіацій.
2. Tasks (графіки 5, 6, 7, 8)
| Family | Endpoint |
|---|---|
golden | getTask |
prime | POST /prime/dashboard/getTask |
udate | POST /udate/dashboard/getTask |
chathouse | POST /chathouse/dashboard/getTask |
3. Unique RU per week (графік 3)
Графік 3 є на всіх Family — відрізняється лише джерело даних. На golden/prime він приходить з головного info-endpoint (#1), окремого виклику нема; udate/chathouse тягнуть його окремо (getUniqueFavorite).
| Family | Endpoint |
|---|---|
golden | — (з info-endpoint #1) |
prime | — (з info-endpoint #1) |
udate | POST /udate/dashboard/getUniqueFavorite |
chathouse | POST /chathouse/dashboard/getUniqueFavorite |
4. Number of users online (графік 12)
Графік 12 є на prime / udate / chathouse (на golden замість нього — графік 11, з info-endpoint). Джерело — окремий виклик getOnlineLadies.
| Family | Endpoint |
|---|---|
golden | — (графік 11 з info-endpoint #1) |
prime | POST /prime/dashboard/getOnlineLadies |
udate | POST /udate/dashboard/getOnlineLadies |
chathouse | POST /chathouse/dashboard/getOnlineLadies |
5. 24-год розклад (drill-down, графік 13)
| Family | Endpoint |
|---|---|
golden | getDayOnline |
prime | POST /prime/dashboard/getDayOnlineLadies |
udate | POST /udate/dashboard/getDayOnlineLadies |
chathouse | POST /chathouse/dashboard/getDayOnlineLadies |
6. Селектори періоду (дропдауни, не графіки)
| Family | Тімліди (director) | Оператори (supervisor) | Тімліди (top) | Оператори (top) |
|---|---|---|---|---|
golden | getSupervisorsByPeriod | getOperatorsByPeriod | getSupervisorsByPeriodForTopManager | getOperatorsByPeriodForTopManager |
prime | POST /prime/dashboard/getSupervisorsByPeriod | POST /prime/dashboard/getOperatorsByPeriod | POST /prime/dashboard/getSupervisorsByPeriodForTopManager | POST /prime/dashboard/getOperatorsByPeriodForTopManager |
udate | POST /dashboard/getSupervisorsByPeriod | POST /dashboard/getOperatorsByPeriod | POST /dashboard/getSupervisorsByPeriodForTopManager | POST /dashboard/getOperatorsByPeriodForTopManager |
chathouse | POST /chathouse/dashboard/getSupervisorsByPeriod | POST /chathouse/dashboard/getOperatorsByPeriod | POST /chathouse/dashboard/getSupervisorsByPeriodForTopManager | POST /chathouse/dashboard/getOperatorsByPeriodForTopManager |
Нюанси
top-managerна golden/prime не має блоку онлайн-користувачів (на udate/chathouse — маєNumber of users online). 24-год розклад — лише на director.- Селектори Teamlead/Operator завантажують опції при відкритті й показують global loader. Нові критерії не змінюють уже побудовані графіки до наступного
GNR. - Один
GNRзапускає family-залежний набір запитів паралельно. Графіки замінюються лише після цілісної успішної відповіді; при помилці попередній успішний результат залишається, а причина показується через global notification. - Успішна відповідь без series залишає відповідні графіки порожніми; окремого текстового empty state немає.
- Drill-down онлайну замінює відповідний тижневий графік на Average online users during the day. Закриття повертає попередній графік без нового
GNR.
Зв’язки
- operator-statistics — деталізація помісячних результатів і аналітики окремого оператора
- TU Statistics — помісячний зріз результатів TU
- Підтверджені Golden operation deeplink-и наведені в секції API; для інших Family зафіксовані лише фактичні frontend endpoints без вигаданих Swagger anchors.