OperatorOnlineService
Спільна логіка online оператора для всіх Family. Electron Gateway зберігає дії та готові online-сесії, а family-application-api читає сесії для нашого frontend, статистики, дашборду й метрик.
Сервіс реалізується один раз. Для нової Family не потрібні окремий код, adapter або API — її дії надходять через той самий Data Sync із відповідним family.
Поділ відповідальності
| Частина | Задача |
|---|---|
| Electron | Записувати ручні chat/mail дії у локальну чергу |
| Electron Gateway | Приймати Data Sync, записувати OperatorAction, оновлювати OperatorOnlineSession і повертати ack |
| OperatorOnlineService | Читати готові сесії та формувати відповіді для сайту |
Family-сервіси та Family-адаптери в цьому flow не беруть участі.
Логіка online
- Electron Gateway визначає operator і Family з авторизованої сесії та записує нові ручні дії.
- Дія з паузою не більше
5 хвпродовжує поточну online-сесію того самого operator, Family і supervisor;endedAtстаєtimestamp + 5 хв. - Більша пауза або зміна Family/supervisor створює нову сесію.
- Якщо пізня дія з’єднала два інтервали, Gateway об’єднує їх в одну сесію.
- Ack повертається після збереження і дії, і відповідної сесії.
OperatorOnlineService не перебудовує сесії на кожному запиті. Він читає OperatorOnlineSession, обрізає інтервали по межах запитаного періоду та сумує фактичну тривалість обрізаних інтервалів.
Дані для сайту
| № | Дані |
|---|---|
| 1 | Поточний active/offline і час останньої дії |
| 2 | Online-інтервали оператора за період |
| 3 | Загальний online за день або період |
| 4 | Online операторів конкретного supervisor |
Джерело flow — Сервіс обробки дій оператора. Запис виконується через спільну синхронізацію Electron.