• Аналитика
  • Архитектура
  • Backend
  • Python
  • Генерация документов
  • CAD

Модуль генерации документации

Как мы автоматизировали выпуск инженерной документации для конфигуратора модульных электрических щитов

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

Наша задача была в том, чтобы превратить структурированные данные проекта в набор документации разных типов и форматов — без ручной сборки и дублирования логики.

Интерьер модульного электрического щита
Для кого релевантен этот кейс:

Этот кейс особенно релевантен продуктам, где пользовательский сценарий должен завершаться формализованным пакетом документов:

  • инженерным конфигураторам
  • расчетным системам
  • платформам проектирования
  • B2B-продуктам на стыке бизнес-данных, графики и документации

Проблема

Один и тот же проект нужно было выгружать сразу в нескольких представлениях.

Пользователь ожидал не один файл, а полный комплект: спецификации, однолинейные схемы, компоновки щитов, общую документацию проекта, наклейки и архивы.

Сложность была выше средней, потому что модуль должен был работать одновременно с PDF, DOCX, XLSX, DXF, PNG и ZIP, учитывать логику CAD-файлов, графическое размещение элементов и инженерную структуру схем.

По сути, нужно было связать бизнес-данные, шаблоны документов, графику и экспорт в одну устойчивую систему.

Контекст проекта

Модуль работает внутри шага «Документация» — финального этапа конфигурирования. Здесь пользователь выбирает щиты, типы документов и форматы выгрузки, а на выходе получает полный пакет проектных материалов.

Задача этого этапа — довести пользователя от конфигурации щита до прикладного результата: спецификаций, схем, визуализаций, проектных документов и маркировки.

Что нужно было решить

Нужно было собрать модуль, который:

  • Формирует несколько типов документации из одной модели данных
  • Поддерживает разные сценарии выгрузки
  • Работает с инженерной графикой, а не только с таблицами
  • Не дублирует логику между форматами
  • Остается расширяемым под следующие итерации

Решение

Мы реализовали модуль как самостоятельный Python-компонент с единым интерфейсом генерации документации

В основе — разделение на отдельные сервисы и рендеры: каждый отвечает за свой тип данных и формат вывода

Это позволило использовать одну и ту же модель проекта для генерации:

  • Полной документации в PDF и DOCX
  • Спецификаций в PDF и XLSX
  • Однолинейных схем в DXF и PDF
  • Визуализаций щитов в DXF, PNG и PDF
  • Наклеек в PDF
  • ZIP-архивов с результатами и QR-кодами

Как мы это реализовали

Ключевым решением стало разделение модуля на независимые слои:
  • Модели данных
  • Агрегация спецификаций
  • Генерация документов
  • Работа с DXF
  • Работа с графическим размещением элементов

Для схем и компоновок мы собрали отдельную layout-логику: координаты, ветви, шины, устройства, подписи и подключения.

CAD-блоки вынесли в реестр шаблонов, чтобы система могла автоматически подбирать нужные элементы и корректно размещать их в зависимости от входных данных.

Для разных форматов сделали независимые рендереры. Благодаря этому один и тот же набор проектных данных можно использовать для генерации PDF, DOCX, XLSX, DXF и PNG без дублирования бизнес-логики.

Дополнительно встроили QR-сценарий: часть документов и наклеек ведет на веб-представление документации без авторизации.

Что получил пользователь

На выходе пользователь получает готовый комплект инженерной документации по проекту.

Он может скачать документы по отдельности или архивом, работать со спецификациями, схемами, визуализациями и использовать наклейки с QR-кодами для маркировки и быстрого доступа к документации на объекте.

Это делает модуль не вспомогательной функцией, а полноценной частью продукта, которая переводит расчетную модель в прикладной инженерный результат.

Технологическая база

  • ezdxf
  • FastAPI
  • Python
  • python-docx
  • HTTPX
  • CairoSVG
  • Pydantic
  • docxtpl
  • uvicorn
  • OpenPyXL
  • QRCode
  • Pillow
  • pytest
  • ReportLab
  • Ruff
  • mypy
Визуализация щита с подписанными автоматами

Результат

В результате получился самостоятельный модуль генерации документации, который закрывает финальный этап конфигурирования и формирует комплект файлов из структурированных проектных данных без ручной сборки.

Для продукта это важный переход: конфигуратор перестает быть только расчетным инструментом и становится системой подготовки полноценного инженерного проекта. А заложенная архитектура позволяет дальше развивать коммерческую документацию, цены, поставщиков и новые сценарии выгрузки.

Вашему продукту нужно автоматически формировать документацию и другие материалы из данных проекта?

Мы можем спроектировать и разработать модуль генерации документов, который станет частью вашего продукта и будет масштабироваться вместе с ним.

Обсудим ваш проект?