Общее описание

Необходимо разработать систему автоматизации взаимодействия с desktop-приложениями с помощью Python и библиотеки PyAutoGUI. Ключевая особенность - перед каждым шагом выполняется проверка корректного окна (модалки), а также детекция неожиданных всплывающих окон, закрытия программы или изменения интерфейса. При любом расхождении сценарий немедленно останавливается и помечает задачу как сбойную (failed/stop), чтобы последующие клики не ушли «в никуда».

Функциональные требования

Веб-интерфейс для настройки workflow

  • Веб-приложение (.html + Flask/FastAPI или аналоги) - отдельная страница /click-positions.
  • Работа с PostgreSQL: хранение сценариев, шагов, результатов выполнения.
  • Создание, редактирование шагов прямо в интерфейсе - без изменения кода.
  • Каждый шаг (action) может быть одного из типов: движение мыши, клик (левой/правой кнопкой), ввод текста, выполнение горячей клавиши (keyboard shortcuts).
  • Параметры каждого шага: координаты x/y, задержки, текст для ввода, модификаторы клавиш, заголовок и размер окна для верификации.

Выполнение действий (Python + PyAutoGUI)

  • Читает последовательность шагов из БД (или экспорт в JSON) и исполняет их в очередь.
  • Перехват всех нештатных ситуаций:
    • Пропало окно (программа закрылась/свернулась/у волны).
    • Открылось не то окно/модалка (заголовок не совпадает с ожидаемым).
    • Изменился размер/заголовок целевого окна (признак изменения макета или смещения таблиц стека окон).
    • Обнаружен ошибочный popup/error (по заголовку и типовым признакам окна - Warning, Error, Приложение не отвечает и т.п.).
  • В любой сбойной ситуации: остановка цепочки немедленно, задача получает статус failed/stop с сохранением причины в том orale json в БД.

Верификация активного окна

Поиск окна: через pyautogui.getWindowsWithTitle(target_title). Далее проверяются:

  • заголовок окна должен точно совпадать с переданным;
  • ширина/высота (width, height) должны быть int-равны закреплённым;
  • никакое соска (foreground) не должно принадлежать стороннему приложению в пределах ошибки; так же детекции очереди. Если верификация не прошла - немедленно стоп.

Технические детали

  • Язык: Python 3.x
  • Основная библиотека: PyAutoGUI
  • БД: PostgreSQL (доп. JSON для переносимости)
  • Интерфейс: веб (любой удобный стек + WebSockets / простой API для запуска)
  • Логирование: запись каждого шага с меткой времени исчершающих ключевых фрагментов ошибок.

Разработка парсера для PDF-документов с фиксированной формой

Требуется создать скрипт для автоматического извлечения данных из PDF-файлов, имеющих одинаковую структуру. Задача включает анализ документа, выделение нужных полей и сохранение информации в удобном формате.