statistics

Statistics (golden)

Бек-сторона фічі statistics для Goldenbride.

Дві паралельні системи

LegacyV2
Колекціяgolden_statisticgolden_statistic + golden_statistics_relations
КонтролерGoldenStatisticsControllerStatisticsControllerV2
СервісStatisticsService · GoldenOperatorStatisticsServiceStatisticsServiceV2 · StatisticsGenerateServiceV2
Що додаєбазовий рейтинг + журналісторичну “правду” про команду на конкретну дату (хто був тімлідом TU на 5 травня)

Обидві працюють паралельно. Legacy не виключаємо — деякі UI-екрани досі його смикають. Поступово витісняється V2.

Звідки беруться дані

  • download-temp-statistics — щохв сипле свіжі бонуси дня у golden_temp_statistics
  • download-main-statistics — раз на добу о 13:06 переливає tempgolden_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 reads
  • StatisticsControllerV2 — те саме але через relations + has per-path throttle middleware

TODO

  • Уточнити Top-3 алгоритм
  • Чи можна remove legacy після певної дати (які саме UI ще його використовують)
  • Описати схему golden_statistics_relations детальніше (на entity-сторінці)