10-project-online-sessions

ProjectOnlineSessions

backend-common/src/online-session/ · колекції project_operator_online_sessions і project_tu_workspace_sessions — відрізки online оператора і TU в його Electron для всіх проєктів. Одна фабрика схеми, дані окремо: різні перемикання з legacy і зберігання. Запис і склеювання — Online у workspace.

Поля

  • project, operatorProjectId; у TU ще tuId.
  • startedAt, endedAt — межі відрізка; документ на відрізок, без масивів і розрізів по днях.

Індекси

  • Оператор: unique project + operatorProjectId + startedAt; project + operatorProjectId + endedAt — відрізок, який продовжує дія, і online за період (endedAt ≥ from, startedAt < to).
  • TU: unique project + operatorProjectId + tuId + startedAt; project + operatorProjectId + endedAt; project + tuId + endedAt — online TU незалежно від оператора.

Нюанси

  • Міграція (POST /v2/migrations/online-sessions/apply) з тими самими межами форматів, що legacy при читанні: оператор — golden_online_times.sessions до 2025-10-26, golden_operators_activities далі; TU — golden_online_times.ladies[].sessions до 2025-10-31, golden_lady_online з 2025-11-01. Повна міграція — 6 хв.
  • golden_online_times після міграції потрібна лише для лічильників інвайтів сендера (ladies[].amountContact/amountAgency); їх переносимо разом із подіями надсилань. У колекції 3,74 млн порожніх документів з датами 10000–20249 року (зациклений воркер 05.06.2025), реальних — 56 777.
  • Обсяг Golden: оператор 470 тис. відрізків, 57 МБ + індекси 19 МБ; TU 5,9 млн (4,6 млн — до 01.11.2025), 906 МБ + 318 МБ, з 01.11.2025 ~7,7 тис. на день.
  • Заміри: запис синку p50 13–17 мс, 50 операторів паралельно — 155 мс; online оператора за місяць — 5 мс, 148 операторів — 130 мс; TU оператора за місяць — 7 мс.