SenderAnalyticsService
Спільний серверний модуль для фіксації відповідей RU на автоматичні chat/mail-інвайти та побудови аналітики Sender.
Задача
- Прийняти від Electron факт успішної відправки з
inviteIdіexternalMessageId. - Після вхідного повідомлення перевірити, чи воно є наступною відповіддю RU на цю відправку.
- Idempotent-зберегти SenderAnswer.
- Рахувати відповіді за періодом, 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 не знайдено |
| Chathouse | Sender history містить externalMessageId; наступна відповідь RU пишеться в ClickHouse і входить у денні counters конкретного invite |
| Udate | Окремої аналітики відповідей Sender не знайдено |
Цільова логіка одна для всіх Family: точна прив’язка відповіді до externalMessageId та inviteId із Electron.