Statistics (golden)
Бек-сторона фічі statistics для Goldenbride.
Дві паралельні системи
| Legacy | V2 | |
|---|---|---|
| Колекція | golden_statistic | golden_statistic + golden_statistics_relations |
| Контролер | GoldenStatisticsController | StatisticsControllerV2 |
| Сервіс | StatisticsService · GoldenOperatorStatisticsService | StatisticsServiceV2 · StatisticsGenerateServiceV2 |
| Що додає | базовий рейтинг + журнал | історичну “правду” про команду на конкретну дату (хто був тімлідом TU на 5 травня) |
Обидві працюють паралельно. Legacy не виключаємо — деякі UI-екрани досі його смикають. Поступово витісняється V2.
Звідки беруться дані
- download-temp-statistics — щохв сипле свіжі бонуси дня у
golden_temp_statistics - download-main-statistics — раз на добу о 13:06 переливає
temp→golden_statistic+ перебудовуєgolden_statistics_relationsчерезstatisticsGenerateServiceV2.updateCollection()
Між цими двома прогонами temp і main — це “поточна” і “вчорашня + раніше” відповідно.
Бізнес-нюанси
golden_statistics_relations— снапшот ієрархії. На день X фіксує: яка TU була у якого оператора, який у нього був тімлід, КМ. Без цього не можна правильно показати “що було” — оператори і команди ж переходять. Live-join зробив би “що є зараз”, а нам треба історично.- Багатоадмінність. На одному
golden_statisticсидять кількаadminId_api(один адмін = один обліковий запис на goldenbride). Звіти агрегують по всіх адмінах разом. - Top-3 алгоритм — TODO уточнити: за бонусами? за кількістю TU? за чимось ще?
- Кешу нема — кожен запит ходить у Mongo. Якщо UI повільний — це сюди дивитись.
Контролери / endpoint-и
Деталі — у Swagger v2. Тут — лише business notes:
GoldenStatisticsController(legacy) — Ladies/Operator/Top-3 readsStatisticsControllerV2— те саме але через relations + has per-path throttle middleware
TODO
- Уточнити Top-3 алгоритм
- Чи можна remove legacy після певної дати (які саме UI ще його використовують)
- Описати схему
golden_statistics_relationsдетальніше (на entity-сторінці)