Матрица эскалации ночного режима для полиции

Активный
Статус
Сообщения
516
Лайки
32

8

месяц на сайте

Контекст
держит очередь обращений и мгновенно назначает исполнителей держит ночные смены в курсе каждой секунды поддерживает дежурные части полиции.

Функциональность
  • отслеживает приоритет обращения для оперативного call-центра ночного контура и наносит данные на ночную сетку Watcher
  • управляет канал Pivot через табло Fusion без задержек
  • прогнозирует накопление необработанных заявок и заранее предупреждает старших диспетчеров

Внедрение
  • прописать карточки источников и ночные ключи доступа перед вводом
  • сверить ротацию кураторов с марки Chronos
  • назначить ответственных за резерв применений и ночной резерв каналов
  • загрузить сценарии каталог сценариев реакции и ночные регламенты

Код
Код:
#include <a_samp>
#include <zcmd>
#include <sscanf2>

#define MODULE_TAG "PD_INCIDENT_PIVOT_NIGHT"
#define MAX_QUEUE 36

enum e_incident
{
    bool:used,
    priority,
    assigned,
    caller[24]
}
new PD_Incidents[MAX_QUEUE][e_incident];

stock PD_AddIncident(const caller[], priority)
{
    for(new i = 0; i < MAX_QUEUE; i++)
    {
        if(!PD_Incidents[i][used])
        {
            PD_Incidents[i][used] = true;
            PD_Incidents[i][priority] = priority;
            PD_Incidents[i][assigned] = INVALID_PLAYER_ID;
            format(PD_Incidents[i][caller], 24, "%s", caller);
            return i;
        }
    }
    return -1;
}

CMD:incidentpivostatpd(playerid, const params[])
{
    SendClientMessage(playerid, 0xFFD700FF, "[%s] Активная очередь:", MODULE_TAG);
    for(new i = 0; i < MAX_QUEUE; i++)
    {
        if(!PD_Incidents[i][used]) continue;
        new msg[96];
        format(msg, sizeof msg, "#%d | %s | prio %d | exec %d", i, PD_Incidents[i][caller], PD_Incidents[i][priority], PD_Incidents[i][assigned]);
        SendClientMessage(playerid, 0xC0C0C0FF, msg);
    }
    return 1;
}

CMD:incidentpivoctlpd(playerid, const params[])
{
    new slot, target;
    if(sscanf(params, "ii", slot, target)) return SendClientMessage(playerid, -1, "Используй: /incidentpivoctlpd [слот] [оператор]");
    if(slot < 0 || slot >= MAX_QUEUE || !PD_Incidents[slot][used]) return SendClientMessage(playerid, 0xDC143CFF, "[%s] Слот не активен.", MODULE_TAG);
    PD_Incidents[slot][assigned] = target;
    SendClientMessage(target, 0x32CD32FF, "[%s] Вам назначен инцидент #%d.", MODULE_TAG, slot);
    return 1;
}

Тест-кейсы
  • провести испытание: заполнить очередь до лимита — ожидать корректного сигнала
  • смоделировать отказ: назначить двух исполнителей на один слот — убедиться что резерв подхватил
  • сравнить отчёт с реестр заявок и подтвердить отсутствие расхождений

Эксплуатация
  • в конце смены выгружать журнал
  • контролировать обращения старше часа
  • проводить ночные аудиты вместе с старших диспетчеров
  • держать план реагирования на накопление необработанных заявок актуальным
  • отчёты автоматически попадают в полиция
 

1 человек читают эту тему (Всего: 1, Пользователей: 0, Гостей: 1)

Сверху