Slide 1

Slide 1 text

Николай Казак МТС Финтех ОПЫТ ИСПОЛЬЗОВАНИЯ PYTHON ДЛЯ АВТОМАТИЗАЦИИ БИЗНЕС- ПРОЦЕССОВ

Slide 2

Slide 2 text

Николай Казак МТС Финтех О СПИКЕРЕ С 2021 года – в роботизации МТС Финтех С 2023 года – технический лидер команды • Проработка архитектуры роботов • Подход к разработке Внедрение новых технических решений и ПО • Разработка роботов

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

Работа с почтой Генерация отчётов Работа с файлами Прямые интеграции Обработка данных Реализация бизнес-логики За пределами интерфейса

Slide 6

Slide 6 text

Старт RPA в компании • 2019 год – запуск первого робота • Первые боты на UFT (Unified Functional Testing)

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Плюсы: •Влезло в слайд •Всё проверили Минусы: •11 if •11 else •А вдруг не всё проверили?

Slide 9

Slide 9 text

500 строк в try

Slide 10

Slide 10 text

Вложенность Шаг 1 Шаг 2 Шаг 3 Выход шаг 3 Выход шаг 4 Шаг 4 Выход шаг 2 Выход шаг 1 Одни этапы хаотично вызываются друг из друга Восстановить процесс читая код невозможно Сложно отследить зависимости

Slide 11

Slide 11 text

И сразу в Python Не сформирован стэк Монолиты main.py в тысячи строк Минимальное логирование Высокая вложенность Нет ясной структуры проекта

Slide 12

Slide 12 text

Что со всем этим делать? Формирование инструментов Изменение архитектуры роботов Стандартизация проектов

Slide 13

Slide 13 text

Формирование инструментов guiutils Проблемы: 1. Нет логирования 2. Разный подход к работе с изображениями и селекторами 3. Долгий путь до базовых объектов 4. Поиск селекторов в отдельном неподдерживаемом ПО

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

Что у нас есть? pywinauto для работы с селекторами pyautogui для поиска изображений на экране os и subprocess для управления процессами

Slide 16

Slide 16 text

• Используемые пути • Информация по процессу • Конфигурация Инициализация

Slide 17

Slide 17 text

• Изображение • Таймаут • Необходимо ли выбрасывать исключение pyautogui Получение базового элемента

Slide 18

Slide 18 text

• Передаём объект элемента и параметры действия • Получаем объект Action pyautogui Действие с базовым элементом

Slide 19

Slide 19 text

• Docstring • Type Hints • Логгирование • Доступ к базовому объекту через Action.object pyautogui Собираем всё это воедино

Slide 20

Slide 20 text

pywinauto – сложнее

Slide 21

Slide 21 text

pywinauto. Указатели – лучше картинок 1. Одна из веток дерева 2. Имеет родительский элемент 3. Может иметь дочерний элемент 4. Позволяет строить дерево элементов интерфейса 5. Позволяет работать с дочерними и родительскими элементами 6. Не зависит от стилей и разрешения интерфейса

Slide 22

Slide 22 text

Принцип тот же Выполняем действие с базовым элементом Получаем базовый элемент из указателя Собираем всё воедино и выполняем действие сразу с селектором 1 2 3

Slide 23

Slide 23 text

• Type hints вынудили внимательно отслеживать типы • Единый возвращаемый Action позволил сохранить общий вывод • Базовый объект доступен И опять собираем всё воедино

Slide 24

Slide 24 text

• Добавить entry_points в setup.py • Собрать небольшой .py для запуска CLI утилиты • profit Бонус

Slide 25

Slide 25 text

Набор инструментов роботизируем desktop роботизируем web управление файлами роботизируем ЦФТ-Навигатор типовые действия в почте GuiUtils SeleniumUtils FileUtils СFTUtils MailUtils

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

main.py 1. Инициализируем логер 2. Запускаем RMQ слушателя 3. Получаем задачу 4. Приводим к pydantic классу Task 5. Записываем в БД 6. Выполняем задачу 7. Обновляем в БД 8. Публикуем ответ

Slide 29

Slide 29 text

processing.py

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

• Хранит все данные, Необходимые в процессе • Разгружает входы и выходы функций • Отражает текущее состояние задачи • Удобно взаимодействует с SQLAlchemy pydantic класс Task

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

Что в итоге? Стэк – самописные библиотеки Монолиты разбиты по функциям Читаемость кода Все действия логируются Плоская логика внутри функционального блока Единая структура проектов Отделена логика робота от логики процесса

Slide 34

Slide 34 text

Внедрение OCR, NLP Захват компании роботами Что дальше? Развитие направления микрофронтов Гиперавтоматизация Внедрение движка бизнес-процессов для управления микроботами

Slide 35

Slide 35 text

Контакты: Телеграм: Почта: [email protected] Ваши вопросы!