operator-online-service

OperatorOnlineService

Спільна логіка online оператора для всіх проєктів. Electron Gateway зберігає дії та готові online-сесії, а project-application-api читає сесії для нашого frontend, статистики, дашборду й метрик.

Сервіс реалізується один раз. Для нового проєкту не потрібні окремий код, adapter або API — його дії надходять через той самий Data Sync із відповідним project.

Поділ відповідальності

ЧастинаЗадача
ElectronЗаписувати ручні chat/mail дії у локальну чергу
Electron GatewayПриймати Data Sync, записувати OperatorAction, оновлювати OperatorOnlineSession і повертати ack
OperatorOnlineServiceЧитати готові сесії та формувати відповіді для сайту

Проєктні сервіси project-* та адаптери проєктів у цьому flow не беруть участі.

Логіка online

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

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

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

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

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