Веб-сервис на Flask: согласование документов и маршруты

Согласование договоров на Flask: маршруты, SLA и версии файла — не BPM из коробки.

Стек Celery, Flask, PostgreSQL, workflow

Я делал внутренний веб-сервис на Flask — согласование договоров и служебных записок: маршрут, роли, версии файла, комментарии. Не конструктор «BPM из коробки», а явная state-машина под регламент заказчика.

Я описал состояния документа (черновик → согласование → правки → утверждён / отклонён) и переходы с проверкой, кто имеет право на шаг. Я написал маршруты: последовательный и параллельный контур, эскалация по SLA, если согласующий молчит.

Я собрал UI на Jinja + серверные формы: список «мои на согласовании», превью PDF, diff версий. Файлы — в объектное хранилище, в БД только метаданные и checksum. Я закрыл доступ по отделам и запретил скачивание чужих вложений прямой ссылкой.

Я добавил аудит и выгрузку журнала для проверки. Стек: Flask, SQLAlchemy, PostgreSQL, Redis, Celery (напоминания), Gunicorn, Docker. NDA: компания не публикуется.