Активный
- Тема Автор
- #1
Контекст
формирует повестку, судей и залы держит ночные смены в курсе каждой секунды поддерживает дежурные части полиции.
Функциональность
Внедрение
Код
Тест-кейсы
Эксплуатация
формирует повестку, судей и залы держит ночные смены в курсе каждой секунды поддерживает дежурные части полиции.
Функциональность
- отслеживает слушания для дворца правосудия ночного контура и наносит данные на ночную сетку Watcher
- управляет табло Gavel через панель Decree без задержек
- прогнозирует накладки в расписании и заранее предупреждает секретарей заседаний
Внедрение
- прописать реестр дел и ночные ключи доступа перед вводом
- сверить расписание залов с марки Chronos
- назначить ответственных за запасные лоты и ночной резерв каналов
- загрузить сценарии шаблон уведомлений и ночные регламенты
Код
Код:
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#define MODULE_TAG "PD_COURT_SHIFT_NIGHT"
#define CASE_CAP 24
enum e_case
{
bool:active,
hour,
minute,
hall,
judge[24],
title[48]
};
new PD_Cases[CASE_CAP][e_case];
CMD:courtshiftnistatpd(playerid, const params[])
{
SendClientMessage(playerid, 0xFFE4B5FF, "[%s] Повестка:", MODULE_TAG);
for(new i = 0; i < CASE_CAP; i++)
{
if(!PD_Cases[i][active]) continue;
new msg[144];
format(msg, sizeof msg, "#%d %02d:%02d Hall %d | %s | Судья %s", i, PD_Cases[i][hour], PD_Cases[i][minute], PD_Cases[i][hall], PD_Cases[i][title], PD_Cases[i][judge]);
SendClientMessage(playerid, 0xFFE4B5FF, msg);
}
return 1;
}
CMD:courtshiftnictlpd(playerid, const params[])
{
new action[8], slot, hour, minute, hall;
new judge[24], title[48];
if(sscanf(params, "s[8]", action)) return SendClientMessage(playerid, -1, "Используй: /courtshiftnictlpd add/move/remove");
if(!strcmp(action, "add", true))
{
if(sscanf(params, "s[8]iiis[24]s[48]", action, slot, hour, minute, hall, judge, title)) return SendClientMessage(playerid, -1, "/courtshiftnictlpd add [слот] [часы] [минуты] [зал] [судья] [дело]");
PD_Cases[slot][active] = true;
PD_Cases[slot][hour] = hour;
PD_Cases[slot][minute] = minute;
PD_Cases[slot][hall] = hall;
format(PD_Cases[slot][judge], 24, "%s", judge);
format(PD_Cases[slot][title], 48, "%s", title);
}
else if(!strcmp(action, "move", true))
{
if(sscanf(params, "s[8]iii", action, slot, hour, minute)) return SendClientMessage(playerid, -1, "/courtshiftnictlpd move [слот] [часы] [минуты]");
PD_Cases[slot][hour] = hour;
PD_Cases[slot][minute] = minute;
}
else if(!strcmp(action, "remove", true))
{
if(sscanf(params, "s[8]i", action, slot)) return SendClientMessage(playerid, -1, "/courtshiftnictlpd remove [слот]");
PD_Cases[slot][active] = false;
}
return 1;
}
Тест-кейсы
- провести испытание: поставить два дела на одну минуту — ожидать корректного сигнала
- смоделировать отказ: перенести заседание в другой зал — убедиться что резерв подхватил
- сравнить отчёт с реестр дел и подтвердить отсутствие расхождений
Эксплуатация
- вечером выгружать повестку
- архивировать отменённые заседания
- проводить ночные аудиты вместе с секретарей заседаний
- держать план реагирования на накладки в расписании актуальным
- отчёты автоматически попадают в полиция