Браузерная автоматизация / Демопроект
PortalPilot
Робот переносит заказы из CSV в кабинет поставщика и проверяет итог отправки после сбоя браузера.

Задача
Оператор переносит заказы из таблицы в веб-кабинет. Если ответ на отправку потерялся, заявка могла сохраниться. Повторный клик в такой ситуации рискует создать дубликат.
Решение
PortalPilot проверяет CSV, ставит заказы в очередь и заполняет формы через Playwright. После сбоя робот ищет заявку по её номеру во внешнем кабинете и сверяет шесть полей. Неоднозначные случаи или изменившиеся поля отправляются на ручной разбор.
Как это работает


Результат
В двух демопакетах подтверждены 49 заявок, одна строка оставлена для ручного разбора. Независимая сверка базы демопортала подтвердила номера и поля заявок. В контейнерной приёмке прошли 69 тестов. Для кабинета другого поставщика потребуется свой адаптер и проверка его поведения при повторной отправке.
Мой вклад
Я связал кабинет оператора, PostgreSQL и браузерный обработчик. Состояние фиксируется перед отправкой формы, а право обработчика записать итог привязано к действующему токену задачи. Это проверено на параллельных запусках, остановках и поздних ответах.
Архитектура
Кабинет, очередь и внешний портал разделены, чтобы восстановление можно было проверить независимо.
Кабинет оператора
Оператор проверяет CSV и запускает пакет.
Связи компонентов
- Кабинет оператора: Оператор проверяет CSV и запускает пакет.
- Очередь PostgreSQL: В базе хранятся состояния заказов и право обработчика завершить задачу.
- Браузерный адаптер: Playwright заполняет форму и сверяет сохранённую заявку по номеру.
- Кабинет оператора → Очередь PostgreSQL
- Очередь PostgreSQL → Браузерный адаптер
- Браузерный адаптер → Очередь PostgreSQL