Техническое задание на разработку screen-based RPA бота
Контекст и цель
Необходимо разработать программного робота (RPA) для автоматизации работы с веб-сервисом каталогов. Ключевая особенность - бот будет работать исключительно через анализ графического интерфейса (скриншоты), без доступа к исходному коду страницы (DOM), API или каким-либо внутренним элементам. Доступ к целевому сервису осуществляется через удалённый рабочий стол (RDP, VMware Horizon).
Основные функциональные требования
Базовые возможности взаимодействия
- Захват изображения экрана или активного окна.
- Эмуляция действий пользователя: клики мышью, прокрутка, ввод текста с клавиатуры, использование «горячих» клавиш.
- Работа с буфером обмена: чтение скопированного текста для последующей обработки.
Распознавание интерфейса и навигация
- Определение состояния интерфейса и проверка корректности текущего экрана.
- Поиск элементов управления (кнопок, иконок, полей) на изображении с помощью сравнения шаблонов (image-based) и оптического распознавания текста (OCR).
- Возможность находить элементы как по графическому шаблону, так и по текстовому содержимому.
Управление сценариями и логикой
- Хранение сценариев (последовательностей шагов) в структурированных файлах (YAML/JSON).
- Описание каждого шага сценария должно включать:
- Ожидаемый тип/состояние экрана.
- Цель поиска (текст, номер, графический элемент, синонимы).
- Действие (клик, ввод, прокрутка, копирование).
- Обработка таймаутов, ошибок и неожиданных событий (например, всплывающих окон).
Механизм адаптации и обучения
- Ведение детальных логов успешных и неудачных шагов.
- Возможность расширять библиотеки распознавания (например, добавлять новые варианты текста или изображений для поиска одного и того же элемента).
- Оптимизация выполнения сценариев: кэширование удачных локаторов, сокращение количества поисковых операций для ускорения работы.
- Система должна быть практичной, без избыточного усложнения («оверинжиниринга»).
Требования к результату
- Рабочий прототип, готовый к тестированию в описанных условиях.
- Чистая и расширяемая архитектура кода, позволяющая легко добавлять новые функции и сценарии.
- Высокая скорость выполнения операций является критически важным требованием.