StatisticsService
Спільний модуль family-application-api для статистики TU та операторів. За основу береться поточний Statistics V2 Golden — такий самий набір операцій уже є у Prime, Chathouse та Udate.
Задача
- Показати операторів за вибраний місяць: баланс, online, стан кожного дня, робочі дні та кількість TU.
- Показати одного оператора і його TU за місяць.
- Показати TU за місяць: баланс і стан кожного дня.
- Формувати зрізи за всією Family, supervisor, top manager та client manager.
- Враховувати історію призначень: у статистику потрапляють користувачі й суми, які належали вибраному зрізу саме у відповідний день.
Типи статистики
| № | Тип | Результат |
|---|---|---|
| 1 | Оператори | Список операторів із балансом, online, статусами днів і кількістю TU |
| 2 | Один оператор | Оператор і список його TU з денними значеннями |
| 3 | TU | Список TU з балансом і станом за кожен день |
| 4 | HR | Оператори, які належали HR у вибраний період; формується окремим Stack flow |
API Statistics V2
| № | Операція | Endpoint | Основні параметри |
|---|---|---|---|
| 1 | Усі оператори Family | POST /statistics/v2/operators | date, onlineType |
| 2 | Оператори supervisor | POST /statistics/v2/supervisor-operators | date, supervisorFamilyId, onlineType |
| 3 | Оператори supervisor-ів top manager | POST /statistics/v2/top-supervisors-operators | date, supervisorFamilyId, stackTopManagerId, onlineType |
| 4 | Один оператор | POST /statistics/v2/operator | date, operatorFamilyId, onlineType |
| 5 | Один оператор supervisor | POST /statistics/v2/supervisor-operator | date, supervisorFamilyId, operatorFamilyId, onlineType |
| 6 | Один оператор у scope top manager | POST /statistics/v2/top-supervisors-operator | date, supervisorFamilyId, operatorFamilyId, stackTopManagerId, onlineType |
| 7 | Усі TU Family | POST /statistics/v2/ladies | date |
| 8 | TU client manager | POST /statistics/v2/client-manager-ladies | date, clientManagerFamilyId |
| 9 | TU supervisor | POST /statistics/v2/supervisor-ladies | date, supervisorFamilyId |
| 10 | TU supervisor-ів top manager | POST /statistics/v2/top-supervisors-ladies | date, supervisorFamilyId, clientManagerFamilyId, stackTopManagerId |
| 11 | TU client manager у вибраних supervisor | POST /statistics/v2/client-manager-supervisors-ladies | date, clientManagerFamilyId, supervisorFamilyIds[] |
family-application-api зберігає ці операції та однакові request/response для всіх Family. Відмінність Family передається окремо, а не визначається різними controller-ами.
Результат
День
date— дата.sum— баланс за день.online,onlineSec— час online.status— стан користувача або робочий статус дня оператора.
onlineType: day рахує online за календарну добу, onlineType: shift — у межах зміни supervisor.
Оператор
- Stack і Family ID, ім’я та nickname.
- Денний баланс і online.
- Робочі статуси: day off, absenteeism, auto absenteeism, internship та excused absence.
- Стан у кожен день: активний, заблокований або вже поза вибраним scope.
ladyTotal— кількість TU.isOnlineіsleepMode— поточний live-стан.total— баланс за місяць.
TU
- Family ID, ім’я, avatar і level.
- Денний баланс.
- Денний стан: активна, заблокована або поза вибраним scope.
total— баланс за місяць.
Результат одного оператора має форму { operator, ladies[] }. Інші типи повертають відповідний список операторів або TU.
Дані
| Дані | Джерело |
|---|---|
| Денний баланс і історичний scope | FamilyStatisticsRelation |
| Дані TU | FamilyTU |
| Online оператора | OperatorOnlineSession |
| Online TU в деталях оператора | TUWorkspaceOnlineSession |
| Користувачі, структура команди та робочі статуси днів | stack collections |
StatisticsService читає ці collections напряму через спільні repositories і формує відповідь без RMQ-передачі великих списків.
HR
HR-статистика залишається окремою операцією POST /statistics/getHrOperatorStatistics у Stack.
- Stack визначає операторів, які належали HR у вибраний період.
- За потреби список звужується до supervisor.
- Для кожного Family формується звичайна статистика операторів.
- Дні поза HR або supervisor scope позначаються неактивними для цього зрізу.
Зміна робочих статусів виконується окремою Stack-операцією POST /statistics/setOperatorDays. StatisticsService читає готові operator days під час формування таблиці.
Golden Operators Report
Golden окремо формує місячний XLSX-звіт операторів: balance, OTRR, середній effective online і відсоток вчасно виконаних тасків.
Це важливий Golden-only report. Поки він залишається окремою операцією StatisticsService; універсальну систему звітів та експортів не проєктуємо.