Это старая версия документа.
Схема 1. Порядок формирования очереди карт на запись и удаление.
На схеме 1 изображена основа базы данных Артонит 10.
В таблице ss_accessuser хранится информация о наборе прав для каждого пользователя.
С помощью триггеров SS_ACCESSUSER_DELETECARD и SS_ACCESSUSER_WRITECARDS с использованием процедур cardidx_delete и cardidx_insert соответственно данные заносятся в таблицу cardidx.
Таблица cardidx является решением основной задачи СКУД.
Данные в таблицу ss_accessuser записываются с помощью программ Менеджер карт или сервера интеграции SOAP_Integration.
Таблицей device управляет приложение Конфигуратор.
Очередь на запись и удаление формируется в таблице CARDIDX и обрабатывается АСервером.
№ п/п | Версия | Дата | Изменения |
---|---|---|---|
1 | 1.2.5 | 20.10.2017 | Выводится список пользователей, у которых нет карты. При переходе по ссылке есть возможность удалить выбранных жильцов из базы данных СКУД. Введ анализ событий вида Недействительная карта и указана причина отказа. |
1 | 1.2.6 | Май 2019 | При анализе событий выводится подробная информация о причине отказа. Выводится информация об активности пользоватея, активности карты, анализ по категориям доступа. Аналитика формируется в момент вставки события. |
Артонит Сити позволяет быстро проверить свойство пользователя/жильца.
В ходе эксплуатации СКУД всегда есть потребность знать: а правильно ли работает СКУД? Может, где-то есть сбои, о которых оператор не знает?
Например, где-то система не пропустила где-то сотрудника, где этот сотрудник может ходить. Сотрудник не понял причины отказа, но и не стал жаловаться на работу системы. Получается, что система работает некорректно, но никто об этом не знает, ибо жалоб нет.
Возможна и обратная ситуация: сотрудник не имеет право прохода через какую-нибудь дверь, но СКУД его пропускает. Сотрудник тоже не будет жаловаться, т.к. его такая ситуация устраивает.
Потому всегда надо знать ответ на вопрос: были ли сбои в работе СКУД?
Артонит Сити имеет ответ на этот вопрос.
В базе данных есть два уровня представления информации о проходах.
Первый уровень - это таблица ss_accessuser, в которой хранятся права пользователя. Существенно: набор категорий доступа «привязан» к пользователю, а не к идентификатору.
Второй уровень - это таблица cardidx, в которой хранится список карт с указанием в какие точки прохода эти карты могут ходить.
Второй уровень хранинеия данных строится на основе первого уровня.
Есть вероятность, что в силу непредвиденных причин второй вариант неправильно построен (например, после обновления базы данных).
Ниже приводится SQL-запрос, который находит разночтения в вариантах представления информации.
Результат выполнения запроса - список номеров идентификаторов, которые имеются в Уровне 1, но отсутствуют в уровне 2.
select ac.id_dev, c.id_card, c.timestart, c.timeend, cd.id_card from ss_accessuser ssu join card c on ssu.id_pep=c.id_pep join access ac on ssu.id_accessname=ac.id_accessname left join cardidx cd on cd.id_card=c.id_card and cd.id_dev=ac.id_dev join device d on d.id_dev=ac.id_dev and d."ACTIVE"=1 join device d2 on d2.id_ctrl=d.id_ctrl and d2.id_reader is null and d2."ACTIVE"=1 where c."ACTIVE">0 and (c.timeend>'NOW' or c.timeend is null) and c.id_cardtype in (1,2) and cd.id_card is null
С этими номерами следует поступить так:
insert into CardIdx(ID_DB, ID_CARD, ID_DEV) values (:id_db, :id_card, :id_dev);
После выполнение указанных действий результата выполнения запроса Самопроверка должен быть пустым: данные точно соответствуют друг другу.