Роботизация через Puppeteer c интерфейсом управления на UI QT
Контроллер робота для автоматизации назначения прав в АСУТД
(автоматизированная система управления технической документацией).
Данная система используется в концерне "Росэнергоатом" - как тех. архив.
Доступ осуществляется через web интерфейс со всеми плюсами и минусами).
Данная система используется в концерне "Росэнергоатом" - как тех. архив.
Доступ осуществляется через web интерфейс со всеми плюсами и минусами).
В рамках проекта по роботизации основная цель решения - сократить механическую работу для администраторов системы.
Заказчиком, по какой то причине было принято решение - ручного контроля/добавления прав для пользователей.
Решение руководства - прямо скажем спорное).
Назначение ролей в АСУТД-2 связано с большим количеством однотипных операций. Для каждого пользователя нужно выбрать роль, вид документа, подразделение или УРМ, а иногда ещё учесть особую логику выбора подразделения. При ручной работе это занимает много времени и легко приводит к ошибкам: можно выбрать не тот вид документа, не то подразделение, забыть назначение или продублировать доступ.
Заказчиком, по какой то причине было принято решение - ручного контроля/добавления прав для пользователей.
Решение руководства - прямо скажем спорное).
Назначение ролей в АСУТД-2 связано с большим количеством однотипных операций. Для каждого пользователя нужно выбрать роль, вид документа, подразделение или УРМ, а иногда ещё учесть особую логику выбора подразделения. При ручной работе это занимает много времени и легко приводит к ошибкам: можно выбрать не тот вид документа, не то подразделение, забыть назначение или продублировать доступ.
Что реализовано ?
Создан UI интерфейс управления на QT ,так как основная работа идет на linux astra, о С++.
Ниже на скриншоте изображен интерфейс :
Ниже на скриншоте изображен интерфейс :
==================ИЗОБРАЖЕНИЯ ВРЕМЕННО ОТСУТСТВУЮТ :(==================
Основная архитектура
Проект построен по простой и прозрачной схеме:
Qt-интерфейс отвечает за ввод и редактирование данных.
JSON-файлы выступают как промежуточная модель. В них сохраняются сотрудники, группы, авторизация, используемые роли, виды документов и индивидуальные назначения пользователей.
Puppeteer-скрипт читает подготовленные JSON-файлы и выполняет действия в веб-интерфейсе АСУТД-2.
Такой подход удобен тем, что интерфейс и робот разделены. Qt-приложение не зависит напрямую от логики веб-автоматизации, а Puppeteer не требует ручного ввода данных — он просто получает готовый план работы.
JSON-модель
В проекте используются несколько JSON-файлов.
users.json хранит список пользователей.
groups.json связывает пользователей с подразделениями.
auth.json хранит параметры авторизации.
form_roleType.json и form_documentTypes.json используются как справочники для формы. Из них загружаются все доступные роли и виды документов.
roleType.json и documentTypes.json содержат только те роли и виды документов, которые реально были выбраны оператором для текущей задачи.
Главный рабочий файл — userAccess.json. В нём описывается, какие роли, виды документов и подразделения нужно назначить каждому пользователю.
Пример логики userAccess.json:
{
"users": {
"Иванов Иван Иванович": {
"assignments": [
{
"role": "Ответственный за работу с документами",
"documentTypes": [
"Мероприятие",
"Уведомление о выполнении Решения"
],
"subdivision": "ЦА",
"scope": {
"useAlgorithm": true,
"includeSelected": false,
"extraSubdivisions": []
}
}
]
}
}
}Что делает Puppeteer-робот
После нажатия кнопки запуска Qt-приложение сохраняет актуальные JSON-файлы и запускает Node.js/Puppeteer-скрипт.
Робот открывает веб-интерфейс АСУТД-2, авторизуется, переходит в справочник сотрудников, находит нужного пользователя, открывает его карточку и начинает назначать роли.
Для каждого пользователя робот берёт индивидуальный план из userAccess.json. Если для пользователя назначено несколько ролей или видов документов, они обрабатываются последовательно.
Робот умеет:
- выбирать роль;
- выбирать подразделение вручную;
- выбирать подразделение через алгоритм;
- выбирать вид документа;
- нажимать добавление назначения;
- сохранять карточку пользователя;
- пропускать некорректные или неполные назначения;
- вести лог по пользователям, для которых не удалось найти подразделение.
Почему это удобно
Проект переводит процесс назначения прав из ручной работы в управляемую модель.
Оператору больше не нужно много раз выполнять одни и те же действия в браузере. Достаточно один раз подготовить список сотрудников и назначений в контроллере.
Решение также снижает зависимость от человеческого фактора. Данные сохраняются в JSON, их можно проверить до запуска, переиспользовать, скопировать, сравнить или доработать.
Кроме того, такая архитектура позволяет постепенно развивать проект. Можно добавлять новые шаблоны прав, новые алгоритмы выбора подразделений, поддержку типовых заявок и автоматическое формирование назначений по матрице ролей.
Что уже получилось
На текущем этапе реализован рабочий контур:
- Qt-интерфейс для подготовки данных;
- загрузка ролей и видов документов из справочников;
- сохранение сотрудников, групп и назначений;
- восстановление данных при повторном запуске;
- индивидуальные права по пользователям;
- поддержка нескольких назначений на одного пользователя;
- флаг алгоритмического выбора подразделения;
- дополнительные подразделения;
- защита от дублей;
- запуск Puppeteer-робота из контроллера.
Фактически проект вырос из простого скрипта в полноценный инструмент управления автоматизацией.
Если кто то дочитает это полотно до конца - отдаю достижение "внимательный и усердный читатель" :)
Если у вас появится желание заказать подобное решение для вашей системы пишите на:
Если у вас появится желание заказать подобное решение для вашей системы пишите на:
- Telegram:@SAANEE2000
- Email:mail@anvilstation.com
0
👍
👎
❤️
🔥
😮
😢
😀
😡
2
18.04.2026 19:03:50