Задача
Каждую транспортную накладную приходилось подписывать отдельно, раз за разом повторяя одинаковые действия. Заказчику нужно было локальное приложение, которое соберёт документы в очередь и по одному подпишет их электронной подписью. При временном сбое документ не должен был теряться. Пакетную обработку требовалось запускать по расписанию, но состав очереди и результаты подписания оставались под контролем сотрудника.
Что разработали
Мы разработали Saby Transport Board — локальное приложение с веб-интерфейсом для очереди транспортных накладных. Серверная часть работает на Python и Flask, веб-приложение запускается через waitress. С Saby приложение связывается по Saby API, для подписания используются КриптоПро CSP и электронная подпись.
Сотрудник готовит очередь в веб-интерфейсе, а фоновый процесс обрабатывает документы по одному. При временном сбое можно повторить попытку: документ остаётся в рабочем процессе. Пакетную обработку можно запускать по расписанию. Проект охватывает программную интеграцию и сам процесс подписания, но не обслуживание средств криптографической защиты.
Как работает
Накладные добавляют в очередь через локальный веб-интерфейс. После запуска фоновый процесс берёт первый документ, обращается к Saby API и подписывает его с помощью КриптоПро CSP. К следующему документу он переходит только после завершения текущей попытки. Если происходит сбой, накладная остаётся в процессе и её можно отправить повторно. Подготовленный пакет запускается по расписанию. Сотрудник проверяет ответы внешнего API, состав очереди, доступность нужных компонентов и итоговые статусы документов.
Результат
Теперь сотрудник собирает накладные в пакет через локальный интерфейс, а приложение подписывает их по очереди. Не нужно вручную запускать весь сценарий для каждого документа. Временный сбой можно обработать повторной попыткой, а готовый пакет — запустить по расписанию. Итог подписания всё равно проверяет сотрудник.
Ограничения и зависимости
Приложению нужна локальная среда с КриптоПро CSP и доступ к Saby API. Работа также зависит от состояния документов и правильной настройки расписания. Повторная попытка не гарантирует успешного подписания, поэтому сотрудник проверяет очередь и результаты. Обслуживание и администрирование средств криптографической защиты в проект не входят.