sender-analytics-service

SenderAnalyticsService

Спільний серверний модуль для фіксації відповідей RU на автоматичні chat/mail-інвайти та побудови аналітики Sender.

Задача

  1. Прийняти від Electron факт успішної відправки з inviteId і externalMessageId.
  2. Після вхідного повідомлення перевірити, чи воно є наступною відповіддю RU на цю відправку.
  3. Idempotent-зберегти SenderAnswer.
  4. Рахувати відповіді за періодом, Family, TU, operator, invite, channel і main/additional message.

Межа з Electron

Electron виконує Sender і бачить повідомлення діалогу. Він передає на сервер факти відправлення та знайденої відповіді через DataSync. Сервер не керує чергою Sender, cooldown або вибором invite.

Зіставлення виконується за partner externalMessageId, а не за текстом повідомлення. Відповіддю вважається наступне повідомлення RU після конкретної sender-відправки; якщо між ними було інше повідомлення TU, відповідь до попередньої відправки не зараховується.

Поточна реалізація

FamilyЯк фіксується відповідь
GoldenЗа день зберігається унікальна пара TU + RU для Agency-send і перевіряється наявність відповіді; конкретний invite та message не визначаються
PrimeОкремої аналітики відповідей Sender не знайдено
ChathouseSender history містить externalMessageId; наступна відповідь RU пишеться в ClickHouse і входить у денні counters конкретного invite
UdateОкремої аналітики відповідей Sender не знайдено

Цільова логіка одна для всіх Family: точна прив’язка відповіді до externalMessageId та inviteId із Electron.