Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Moscow Python Meetup №98 Николай Казак (ПАО МТ...

Moscow Python Meetup №98 Николай Казак (ПАО МТС Банк, Технический лидер направления роботизации). Опыт использование Python для автоматизации бизнес-процессов

От автоматизации нажатия кнопок, до создания полноценных интеграций систем — в этом докладе я расскажу, как мы развили наш подход к RPA, используя Python.

Видео: https://moscowpython.ru/meetup/98/python-for-bp-automation/

Moscow Python: http://moscowpython.ru
Курсы Learn Python: http://learn.python.ru
Moscow Python Podcast: http://podcast.python.ru
Заявки на доклады: https://bit.ly/mp-speaker

Moscow Python Meetup

January 29, 2025
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Николай Казак МТС Финтех О СПИКЕРЕ С 2021 года –

    в роботизации МТС Финтех С 2023 года – технический лидер команды • Проработка архитектуры роботов • Подход к разработке Внедрение новых технических решений и ПО • Разработка роботов
  2. Что такое RPA RPA (Robotic Process Automation) — это подход

    к автоматизации бизнес-процессов, при котором программные роботы выполняют задачи через пользовательский интерфейс системы, имитируя действия пользователей Пользователь Основные характеристики: 1. Работает на уровне графических интерфейсов (GUI) 2. Работает и с desktop и с web-приложениями 3. Повторяет действия пользователя 4. Не требует изменения систем 5. Интегрирует множество систем Система 2 Система 1 Система 3 Робот
  3. Способы взаимодействия с интерфейсом 3 месяца 6 месяца взрослый 1

    Поиск по координатам 2 Поиск по картинке 3 Поиск по указателю (селектору) 4 Клик мышкой 5 Ввод текста 6 Навигация
  4. Работа с почтой Генерация отчётов Работа с файлами Прямые интеграции

    Обработка данных Реализация бизнес-логики За пределами интерфейса
  5. Старт RPA в компании • 2019 год – запуск первого

    робота • Первые боты на UFT (Unified Functional Testing)
  6. Вложенность Шаг 1 Шаг 2 Шаг 3 Выход шаг 3

    Выход шаг 4 Шаг 4 Выход шаг 2 Выход шаг 1 Одни этапы хаотично вызываются друг из друга Восстановить процесс читая код невозможно Сложно отследить зависимости
  7. И сразу в Python Не сформирован стэк Монолиты main.py в

    тысячи строк Минимальное логирование Высокая вложенность Нет ясной структуры проекта
  8. Формирование инструментов guiutils Проблемы: 1. Нет логирования 2. Разный подход

    к работе с изображениями и селекторами 3. Долгий путь до базовых объектов 4. Поиск селекторов в отдельном неподдерживаемом ПО
  9. Что хотим? Не думать о логировании действий Доступ к базовым

    объектам Не думать о типе указателя Подсказки от IDE Навигация по дереву элементов Встроенный поиск элементов
  10. Что у нас есть? pywinauto для работы с селекторами pyautogui

    для поиска изображений на экране os и subprocess для управления процессами
  11. • Docstring • Type Hints • Логгирование • Доступ к

    базовому объекту через Action.object pyautogui Собираем всё это воедино
  12. pywinauto. Указатели – лучше картинок 1. Одна из веток дерева

    2. Имеет родительский элемент 3. Может иметь дочерний элемент 4. Позволяет строить дерево элементов интерфейса 5. Позволяет работать с дочерними и родительскими элементами 6. Не зависит от стилей и разрешения интерфейса
  13. Принцип тот же Выполняем действие с базовым элементом Получаем базовый

    элемент из указателя Собираем всё воедино и выполняем действие сразу с селектором 1 2 3
  14. • Type hints вынудили внимательно отслеживать типы • Единый возвращаемый

    Action позволил сохранить общий вывод • Базовый объект доступен И опять собираем всё воедино
  15. Изменение архитектуры роботов 1. Процесс — совокупность разработанных RPA-решений в

    рамках роботизируемого бизнес-процесса 2. Робот-оркестратор — реализует верхнеуровневую логику, управляет функциональными блоками робота 3. Микробот — реализует конкретный этап бизнес- процесса 4. Микрофронт — интерфейс взаимодействия с пользователем 5. Сервис — может быть использован в разных процессах и роботах Микрофронт Робот (flow) Сервис 2 Инстанс 1 Микробот 2 Инстанс 1 Сервис 1 Инстанс 2 Сервис 1 Инстанс 1 Микробот 1 Инстанс 2 Микробот 1 Инстанс 1 Процесс
  16. Стандартизация проектов 1. db_section — раздел взаимодействия с БД 2.

    source — хранение вспомогательных компонентов 3. resources — хранение изображений для распознавания, шаблонов отчётов, веб- драйверов и прочего 4. processing.py — тело микробота 5. main.py — интегрирует микробота с роботом- оркестратором
  17. main.py 1. Инициализируем логер 2. Запускаем RMQ слушателя 3. Получаем

    задачу 4. Приводим к pydantic классу Task 5. Записываем в БД 6. Выполняем задачу 7. Обновляем в БД 8. Публикуем ответ
  18. • Структура данных • по заданию фиксирована и хранится в

    одном месте • Передаю в processing с исходными данными • Записываю все данные, которые мне нужны на разных этапах • Его же возвращаю для дальнейшей интеграции pydantic класс Task
  19. • Хранит все данные, Необходимые в процессе • Разгружает входы

    и выходы функций • Отражает текущее состояние задачи • Удобно взаимодействует с SQLAlchemy pydantic класс Task
  20. Преимущества стандартного проекта Изменения в роботе-оркестраторе могут затронуть только типовой

    main.py Подготовка шаблонов централизует стэк Легче разобраться в чужом проекте Упрощает замену компонентов Удобно локализовать изменения в системах, которые ломают робота Побуждает аккуратно писать код 1 4 2 5 3 6
  21. Что в итоге? Стэк – самописные библиотеки Монолиты разбиты по

    функциям Читаемость кода Все действия логируются Плоская логика внутри функционального блока Единая структура проектов Отделена логика робота от логики процесса
  22. Внедрение OCR, NLP Захват компании роботами Что дальше? Развитие направления

    микрофронтов Гиперавтоматизация Внедрение движка бизнес-процессов для управления микроботами