Инструменты пользователя

Инструменты сайта


city:main

Страница Артонит Сити

Онова системы: формирование очереди на запись и удаление.

Схема 1. Порядок формирования очереди карт на запись и удаление.

На схеме 1 изображена основа базы данных Артонит 10.
В таблице ss_accessuser хранится информация о наборе прав для каждого пользователя.
С помощью триггеров SS_ACCESSUSER_DELETECARD и SS_ACCESSUSER_WRITECARDS с использованием процедур cardidx_delete и cardidx_insert соответственно данные заносятся в таблицу cardidx.
Таблица cardidx является решением основной задачи СКУД.
Данные в таблицу ss_accessuser записываются с помощью программ Менеджер карт или сервера интеграции SOAP_Integration.
Таблицей device управляет приложение Конфигуратор.
Очередь на запись и удаление формируется в таблице CARDIDX и обрабатывается АСервером.

Основные отличия Артонит Сити от Артонит 10:

  1. Иной порядок предоставления доступа. В Артонит Сити пользователю может быть присвоена любая комбинация категорий доступа.
  2. Категории доступа присваиваются пользователю. Это позволяет определить его права еще до выдачи идентификатора.
  3. введена аналитика событий. При выявлении ошибки в проходах система автоматически исправляет ошибку.
  4. имеется web-интерфейс для организации оперативной работы бюро пропусков. В web-интерфейсе можно быстро проверить свойства пользователя.

Версии Артонит Сити

№ п/пВерсияДатаИзменения
11.2.520.10.2017Выводится список пользователей, у которых нет карты. При переходе по ссылке есть возможность удалить выбранных жильцов из базы данных СКУД.
Введ анализ событий вида Недействительная карта и указана причина отказа.
21.2.6Май 2019При анализе событий выводится подробная информация о причине отказа. Выводится информация об активности пользователя, активности карты, анализ по категориям доступа. Аналитика формируется в момент вставки события.
31.2.7окт. 2020Внесены изменения при работе с удаленными картами. Более детально см. History. city_1_2_7-2020_10_02.zip

Проверка свойств пользователя/жильца

Артонит Сити позволяет быстро проверить свойство пользователя/жильца.

Проверка свойств пользователя/жильца

Аналитика событий.

В ходе эксплуатации СКУД всегда есть потребность знать: а правильно ли работает СКУД? Может, где-то есть сбои, о которых оператор не знает?

Например, где-то система не пропустила где-то сотрудника, где этот сотрудник может ходить. Сотрудник не понял причины отказа, но и не стал жаловаться на работу системы. Получается, что система работает некорректно, но никто об этом не знает, ибо жалоб нет.

Возможна и обратная ситуация: сотрудник не имеет право прохода через какую-нибудь дверь, но СКУД его пропускает. Сотрудник тоже не будет жаловаться, т.к. его такая ситуация устраивает.

Потому всегда надо знать ответ на вопрос: были ли сбои в работе СКУД?

Артонит Сити имеет ответ на этот вопрос.

Анализ событий.

Самопроверка

В базе данных есть два уровня представления информации о проходах.
Первый уровень - это таблица ss_accessuser, в которой хранятся права пользователя. Существенно: набор категорий доступа «привязан» к пользователю, а не к идентификатору.
Второй уровень - это таблица cardidx, в которой хранится список карт с указанием в какие точки прохода эти карты могут ходить.
Второй уровень хранинеия данных строится на основе первого уровня.
Есть вероятность, что в силу непредвиденных причин второй вариант неправильно построен (например, после обновления базы данных).
Ниже приводится SQL-запрос, который находит разночтения в вариантах представления информации.
Результат выполнения запроса - список номеров идентификаторов, которые имеются в Уровне 1, но отсутствуют в уровне 2.

select  ac.id_dev, c.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 (1, :id_card, :id_dev);

Где
:id_card - c.id_card из предыдущего запроса,
:id_dev ac.id_dev из предыдущего запроса.
После выполнение указанных действий результата выполнения запроса Самопроверка должен быть пустым: данные точно соответствуют друг другу.

Либо сразу так:

select 'insert into CardIdx(ID_DB, ID_CARD, ID_DEV) values (1, '''||c.id_card ||''', '||ac.id_dev||');' 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
        

результат выборки в виде готового набора sql-запросов следует вставить в окно скриптов.

History

2.10.2020
Фактически выводился список все неактивных карт, коих было 4729 шт. А надо выводить только тех, у кого срок действия истек, но карта еще активна. Изменения 2.10.2020 C:\xampp\htdocs\city\application\classes\Model\Stat.php стр 557. Убрана проверка на срок действия. Теперь выводится все неактивные карты. А до этого выводились только c.timeend<\'now\'. Получается, что мы не видели карты, у которых срок действия не истек, но они уже были неактивны.

Добавлен метод Model::Factory('stat')→Get_unActiveCard(); Этот метод готовит список всех неактивных карт.

C:\xampp\htdocs\city\application\views\dashboard.php стр. 21. Добавлена ссылка на метод HTML::anchor('people/find_unActiveCard'…

C:\xampp\htdocs\city\application\classes\Controller\People.php добавлен метод action_find_unActiveCard() Вызывается метод Model::Factory('stat')→Get_unActiveCard() и полученный список передается во view 'people/card_late'

Изменены вызовы view в public function action_find_card_late() и public function action_find_unActiveCard() при вызове теперь добавяется параметр title. Оба метода выводят данные на одно и то же окно, и теперь меняется название окна, а сама формы и реализованные в ней методы работы с картами одинаковы. Чтобы формы различались у них сделан разный титул.

C:\xampp\htdocs\city\application\i18n\ru.php Добавлена запись 'unActiveCard' ⇒ 'Список неактивных карт. Эти карты можно либо удалить, либо продлить до указанной Вами даты.', и изменена

'card_late_info' ⇒ 'Список карт с прошедшим сроком действия. Эти карты можно либо удалить, либо продлить до указанной Вами даты.', было 'card_late_info' ⇒ 'Список карт с прошедшим сроком действия',

Добавлена 'pp'⇒'№ п/п',

Изменена форма C:\xampp\htdocs\city\application\views\People\card_late.php добавлена колонка с номером по порядку.

/home/cardsoft/artonit.ru/docs/wiki/data/pages/city/main.txt · Последние изменения: 02.10.2020 09:09 — buh