FamilyStatisticsService
Сервіс вигрузки статистики та конвертації у FamilyStatisticsRelation.
Задача
- Отримати статистику кожної активної адмінки через Family Statistics API.
- Прив’язати partner TU до нашої TU.
- Прив’язати суму до operator, supervisor і client manager. TODO: додати прив’язку до top manager.
- Зберегти оперативну або денну статистику.
- Оновити FamilyStatisticsRelation для нашого frontend та аналітики.
Поточний flow
- Для кожної адмінки визначається період від останнього збереженого дня до вчора.
- Partner response зберігається у форматі конкретної Family.
- TU визначається за partner ID.
- Operator і supervisor визначаються за даними partner API та нашими логами призначень і логінів.
- Дані конвертуються у денні FamilyStatisticsRelation.
Спільний результат
Зараз кожна Family має окрему collection *_statistics_relations, але базовий формат уже однаковий. Ціль конвертації — спільна collection FamilyStatisticsRelation.
| Поле | Golden | Prime | Chathouse | Udate |
|---|---|---|---|---|
date | ✅ | ✅ | ✅ | ✅ |
ladyId | ✅ | ✅ | ✅ | ✅ |
cmId | ✅ | ✅ | ✅ | ✅ |
supervisorId | ✅ | ✅ | ✅ | ✅ |
operatorId | ✅ | ✅ | ✅ | ✅ |
isActive, isDeleted | ✅ | ✅ | ✅ | ✅ |
sum | ✅ | ✅ | ✅ | ✅ |
final | ✅ | ✅ | ✅ | — |
bonuses[] з RU і типом | ✅ | — | ✅ | — |
topManagerId | — | — | — | — |
Для цільового breakdown Golden і Chathouse використовують типи з основної вигрузки. FamilyStatisticsService має додати до основної статистики результати окремих type-запитів Prime та Udate.
Поточний Prime type-worker зберігає тільки тижневу розбивку всієї agency. Для FamilyStatisticsRelation потрібен денний результат за типом і TU.
Поточна Udate type-statistics зберігає розбивку за operator. Для розбивки конкретної TU потрібні запити ladyId + type.
Прив’язка даних
| Family | TU | Operator і supervisor |
|---|---|---|
| Golden | ladyID → id_api TU | Операція потрапляє у часовий період між логами login/set/off operator. |
| Prime | idTrustedUser → prime_id TU | Береться останній login operator за день; якщо логів немає — попередній денний запис. |
| Chathouse | trusted_user_id → profile.id TU | auth_code → наш user → Family operator; зміни призначень уточнюються логами. |
| Udate | Запит виконується по profile.ulid TU | translator legacyId → suboperator → Family operator; supervisor береться з призначення operator. |
Client manager, активність TU та зміни призначень беруться з наших поточних даних і логів за відповідний день.
Поточні collections
| Family | Оперативна | Денна | Проєкція |
|---|---|---|---|
| Golden | golden_temp_statistics | golden_statistic | golden_statistics_relations |
| Prime | prime_temp_statistics | prime_statistics | prime_statistics_relations |
| Chathouse | chathouse_temp_statistics | chathouse_statistics | chathouse_statistics_relations |
| Udate | udate_today_operator_statistics | udate_operator_statistics, udate_history_statistic, udate_type_statistics | udate_statistics_relations |
Нюанси
- Golden і Chathouse зберігають окремі операції та можуть прив’язувати статистику до RU.
- Prime отримує тільки денну суму за TU.
- Udate окремо завантажує суми за operator, за TU та за типами. Реалізація живе у
stack, а partner GraphQL-запити виконуєstack-udate. - Невідомий Chathouse
auth_codeне прив’язується до operator. Невідомий Udate translator потрапляє уFREEдля operator-агрегату.