Live-dashboard через SSE

Зачем

Дашборд /calltracking/dashboard показывает текущее состояние пула DID-ов: сколько занято, сколько свободно, сколько в резерве. Раньше страница раз в 10 секунд POST-ила запрос для обновления, что нагружало бэкенд при большом количестве вкладок открытых сотрудниками. Server-Sent Events заменяют polling: один HTTP-стрим, события приходят с сервера.

Эндпоинт

GET /calltracking/dashboard.sse
Accept: text/event-stream

События

event: pool
data: {"ts": 1715000000, "pool": [{"id":1,"name":"site-main","busy":2,"avail":8,"reserve":1}, …]}

Состояние раз в 3 секунды; стрим живёт 5 минут (клиент сам пере-подключается). На странице это выглядит как «карточки источников с числом busy/avail обновляются мгновенно».

Кому полезно

  • Оператору: видеть когда пик нагрузки — все номера заняты, надо добавлять в пул.
  • Маркетологу: проверять что РК действительно льёт трафик (busy растёт).
  • Админу: ловить «застрявшие» DID-ы (busy не освобождается долго → проблема в скрипте на сайте).