Активный
- Тема Автор
- #1
Контекст
ведёт поток заявок на постройки и их стадии держит ночные смены в курсе каждой секунды поддерживает дежурные части полиции.
Функциональность
Внедрение
Код
Тест-кейсы
Эксплуатация
ведёт поток заявок на постройки и их стадии держит ночные смены в курсе каждой секунды поддерживает дежурные части полиции.
Функциональность
- отслеживает статусы проверки для департамента развития ночного контура и наносит данные на ночную сетку Watcher
- управляет портал Orbit через панель Permit без задержек
- прогнозирует зависшие заявки и заранее предупреждает инспекторов
Внедрение
- прописать справочник категорий и ночные ключи доступа перед вводом
- сверить план приёмных часов с марки Chronos
- назначить ответственных за группа рецензентов и ночной резерв каналов
- загрузить сценарии шаблон отказа и ночные регламенты
Код
Код:
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#define MODULE_TAG "PD_PERMIT_ORBIT_NIGHT"
#define PERMIT_CAP 36
enum e_permit
{
bool:active,
status,
owner,
category[24],
address[48]
};
new PD_Permits[PERMIT_CAP][e_permit];
CMD:permitorbitnstatpd(playerid, const params[])
{
SendClientMessage(playerid, 0xFFEBCDFF, "[%s] Заявки:", MODULE_TAG);
for(new i = 0; i < PERMIT_CAP; i++)
{
if(!PD_Permits[i][active]) continue;
new msg[144];
format(msg, sizeof msg, "#%d st:%d | %s | %s", i, PD_Permits[i][status], PD_Permits[i][category], PD_Permits[i][address]);
SendClientMessage(playerid, 0xFFEBCDFF, msg);
}
return 1;
}
CMD:permitorbitnctlpd(playerid, const params[])
{
new action[8], slot, status, owner;
new category[24], address[48];
if(sscanf(params, "s[8]", action)) return SendClientMessage(playerid, -1, "Используй: /permitorbitnctlpd file/status/remove");
if(!strcmp(action, "file", true))
{
if(sscanf(params, "s[8]is[24]s[48]i", action, slot, category, address, owner)) return SendClientMessage(playerid, -1, "/permitorbitnctlpd file [слот] [категория] [адрес] [id]");
PD_Permits[slot][active] = true;
PD_Permits[slot][status] = 0;
PD_Permits[slot][owner] = owner;
format(PD_Permits[slot][category], 24, "%s", category);
format(PD_Permits[slot][address], 48, "%s", address);
}
else if(!strcmp(action, "status", true))
{
if(sscanf(params, "s[8]ii", action, slot, status)) return SendClientMessage(playerid, -1, "/permitorbitnctlpd status [слот] [0-3]");
PD_Permits[slot][status] = status;
new msg[96];
format(msg, sizeof msg, "[%s] Статус заявки #%d теперь %d.", MODULE_TAG, slot, status);
SendClientMessage(PD_Permits[slot][owner], 0x32CD32FF, msg);
}
else if(!strcmp(action, "remove", true))
{
if(sscanf(params, "s[8]i", action, slot)) return SendClientMessage(playerid, -1, "/permitorbitnctlpd remove [слот]");
PD_Permits[slot][active] = false;
}
return 1;
}
Тест-кейсы
- провести испытание: подать заявку и прогнать все статусы — ожидать корректного сигнала
- смоделировать отказ: удалить заявку в середине потока — убедиться что резерв подхватил
- сравнить отчёт с кадастровый журнал и подтвердить отсутствие расхождений
Эксплуатация
- еженедельно выгружать отчёты
- контролировать заявки старше 12 часов
- проводить ночные аудиты вместе с инспекторов
- держать план реагирования на зависшие заявки актуальным
- отчёты автоматически попадают в полиция