operator-online-service

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

  1. Electron Gateway визначає operator і Family з авторизованої сесії та записує нові ручні дії.
  2. Дія з паузою не більше 5 хв продовжує поточну online-сесію того самого operator, Family і supervisor; endedAt стає timestamp + 5 хв.
  3. Більша пауза або зміна Family/supervisor створює нову сесію.
  4. Якщо пізня дія з’єднала два інтервали, Gateway об’єднує їх в одну сесію.
  5. Ack повертається після збереження і дії, і відповідної сесії.

OperatorOnlineService не перебудовує сесії на кожному запиті. Він читає OperatorOnlineSession, обрізає інтервали по межах запитаного періоду та сумує фактичну тривалість обрізаних інтервалів.

Дані для сайту

Дані
1Поточний active/offline і час останньої дії
2Online-інтервали оператора за період
3Загальний online за день або період
4Online операторів конкретного supervisor

Джерело flow — Сервіс обробки дій оператора. Запис виконується через спільну синхронізацію Electron.