09-project-statistics-relations
ProjectStatisticsRelation
backend-common/src/statistics/project-statistics-relation.schema.ts · колекція project_statistics_relations — денна статистика TU з прив’язкою до команди, одна форма для всіх проєктів. З неї читають статистика, дашборди і звіти (legacy *_statistics_relations). Проєкція журналу 05-project-statistics і зв’язків TU з юзерами.
Поля
- project, day —
dayу форматіYYYY-MM-DDу часовій зоні проєкту. - tuId — canonical TU;
null— оператор, який цього дня був у команді без TU. - operatorProjectId / teamLeadProjectId / clientManagerProjectId — кому належить сума.
- isActive / isDeleted — стан TU цього дня; у записі без TU — стан оператора.
- isFinal — запис зі станом на кінець доби. Якщо прив’язка TU змінилась протягом доби, у TU кілька записів за день, фінальний — один; з нього починається наступний день.
- amount — сума
operations. - operations — операції партнера:
typeяк є,amount,ruId,isFreeза правилами проєкту. Порожньо, коли партнер віддає лише денну суму (Prime, Udate).
Запис
Дні лише дописуються після денної вигрузки; незавершені дні в колекцію не пишуться, а накладаються на читанні. Алгоритм дня і звірка з legacy — Relations дня.
Індекси
project + day (період проєкту, останній записаний день, стан попереднього дня), project + operatorProjectId + day, project + teamLeadProjectId + day, project + clientManagerProjectId + day — фільтри legacy-читачів: оператор, тімлід, КМ за місяць.
Нюанси
- Міграція legacy Golden:
POST /migrations/statistics-relations/applyпереноситьgolden_statistics_relationsяк є зі збереженням_id(ідемпотентно, повтор добирає нові дні legacy).ladyIdlegacy — уже_idcanonical TU,supervisorIdстаєteamLeadProjectId,cmId—clientManagerProjectId,bonuses—operations(manId→ruId). - Обсяг Golden: 1.18M записів з 2024-06-30, ~1 900 на день, 2.48M операцій; сума дня збігається з
golden_statistics. - Формат legacy однаковий у 4 проєктах;
bonusesє лише в Golden і Chathouse,finalнемає в Udate.