Инженерная практика Сертификация и соответствие

Шаблоны сертификационных документов: конструктор на тэговой разметке

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

310ч выполнено
Шаблоны сертификационных документов: конструктор на тэговой разметке

Сотрудник сертцентра открывает шестой за утро docx-протокол испытаний и в шестой раз вбивает одни и те же реквизиты заявителя, продукции, изготовителя. Каждый шаблон лежал отдельным Word-файлом, заполнение шло ручным переносом. Мы свели десятки разрозненных docx в один конструктор внутри аналитической платформы — и новый шаблон теперь заводит сам оператор, без программиста.

В сертификационном бизнесе протокол испытаний, декларация о соответствии, акт идентификации заполняются по фиксированной форме: сотрудник подставляет данные конкретной продукции. У клиента таких форм было 70–100 под разные категории продукции и технические регламенты. Сгенерировать docx умеет любая библиотека. Сложность в другом: сделать так, чтобы добавление сто первого шаблона не упиралось в очередь к разработчику.

Сводка

Отрасль Сертификация продукции, B2B-аналитика рынка
Конечный клиент «Аналитика сертификатов»
Формат сотрудничества Регулярное сопровождение — серия ТЗ по модулю шаблонов (2022–2025)
Тип проекта Конструктор шаблонных документов внутри B2B-платформы аналитики
Объём работ Импорт docx-шаблонов с тэговой разметкой, генерация с пулом номеров и случайными значениями, доп-файлы лабораторий, шаблоны без печатей, права по компаниям
Дата проекта 2022 — основной модуль, далее точечные доработки до 2025
Трудозатраты более 300 часов согласованных по ТЗ (тэговый конструктор — 160 ч; пул номеров и статистика — 65 ч; документы без печатей — 40 ч; и серия доработок)
Команда Антон Херсун (руководитель проекта) и разработчик аналитической панели — он ведёт это направление с первого дня и до сегодня
Технологический стек Laravel · Sencha 6 · docx с тэговой разметкой · xlsm как внешний источник
Сдано Модуль импорта и хранения шаблонов, генерация через тэговую разметку, пул номеров с бронированием, случайные значения в полях испытаний, доп-файлы лабораторий, шаблоны без печатей, разграничение по компаниям и ролям

Постановка задачи

Сотрудники клиента работают с тремя типами шаблонных документов: протоколы испытаний, декларации о соответствии, акты идентификации продукции. По каждому типу в обороте десятки шаблонов под разные категории продукции и регламенты — заказчик называл цифру 70–100. Раньше каждый шаблон был отдельным docx: сотрудник открывал нужный и заполнял руками, а копии нужной версии расползались по компьютерам.

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

Что в этом сложного. Самое уязвимое в шаблонной автоматизации не генерация docx, а то, что через год у программиста копится очередь «добавьте ещё один шаблон». Если каждая форма требует правок кода, модуль превращается в узкое место. Поэтому контракт между оператором и системой мы заложили в саму разметку документа: оператор размечает Word-файл тэгами и сам же его загружает.

Как мы это сделали

1. Тэговая разметка в docx как контракт между оператором и системой.
Центральное решение модуля (160 ч): оператор берёт обычный Word-документ и проставляет в нём тэги вида {{поле}} там, где должны встать данные. Одинаковый текст помечается одинаковым тэгом. При генерации система разбирает разметку, строит форму ввода и подставляет значения. Строковых тэгов в одном шаблоне может быть сколько угодно — хоть тысяча. Новый шаблон загружается через интерфейс как обычный размеченный docx: программист пишет генератор один раз — оператор добавляет формы сколько угодно раз. Уже имеющиеся 70 документов мы сознательно не размечали за клиента. Где какое поле подставить, знают только его сотрудники, и они по мере работы разметили шаблоны сами.

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

3. Пул номеров с бронированием (65 ч).
Каждый документ должен получить свой регистрационный номер из заранее заданного диапазона. Сделали пул номеров: оператор пополняет его сам, номер бронируется за документом, у каждой компании пул свой. Здесь же всплыла тонкость, которую разобрали заранее. Автоматически подставить номер по тэгу нельзя: в разных шаблонах это поле называется по-разному, и система не понимает, куда вставлять. Предложили два пути: отдельный тэг под номер либо кнопку бронирования с ручной вставкой. Заказчик выбрал тот, который не ломал свободу разметки. Дату бронирования привязали к часовому поясу, и позже это помогло корректно фильтровать документы по дате брони.

4. Доп-файл лаборатории при генерации.
У лаборатории-исполнителя испытаний свои реквизиты, печать, аккредитационный номер. Сделали так: когда при генерации выбрана лаборатория, рядом с основным документом формируется второй файл по тексту, заданному для этой лаборатории, и все тэги шаблона применяются к обоим файлам. Нет текста — нет второго файла. Есть у лаборатории и флаг «учитывать даты при бронировании», который влияет на подсчёт остатка номеров.

5. Шаблоны без печатей и подписей для черновиков (40 ч).
Сотрудники часто отправляют клиенту черновик протокола на согласование, а черновик не должен нести печати и подписи. Раньше пришлось бы держать два комплекта шаблонов. Вместо этого ввели генерацию второго файла без печатей и массовое скачивание таких документов по списку: один комплект шаблонов закрывает и финальные документы, и черновики.

6. Права по компаниям и роли.
По шаблонам у клиента работали две компании, и шаблоны одной не должны были попадаться на глаза другой. Завели у пользователя принадлежность к компании, у администратора — справочник компаний, и шаблоны стали видны только внутри своей. К этому добавились отдельные роли доступа к разделу шаблонов: «Сотрудник ТО», «Руководитель ТО», позже «менеджер и шаблоны». А когда заказчик попросил разделить сотрудников по компаниям ещё до того, как под это оформили отдельное ТЗ, мы сделали доработку бонусом, зачётом в уже оплаченный заказ.

Дисциплина процесса

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

Заказчик хотел тэг дат с автопересчётом: при смене основной даты сами пересчитываются даты испытаний, с учётом красных дней производственного календаря. Мы оценили работу примерно в 30 часов и сами же отговорили: «штучка простая на вид, но в реализации стоит как феррари». В ТЗ её даже не стали описывать — чтобы не закладывать в смету заведомо невыгодный пункт.

Отдельно заказчик просил генерировать документы сразу в Word и PDF, архивом. Мы прогнали тестовые шаблоны и показали, что конвертер не от самого Word даёт расхождения: лишние разрывы страниц, мелкие смещения. Вывод дали прямой: менеджер не глядя отправит кривой PDF в работу. От задачи отказались — хотя могли её взять.

И ещё мельче, но в ту же сторону. В одном из ТЗ заказчик попросил «выдачу свежих номеров»; мы разобрались и ответили, что это не доработка, а невыставленная галка в настройках лаборатории — её достаточно включить. Платить тут было не за что.

Результаты

Метрика Значение
Часы по ТЗ более 300 часов согласованных
Заказы Серия ТЗ по модулю шаблонов + точечные доработки
Самообслуживание оператора Новые шаблоны размечаются и загружаются через интерфейс, без программиста
Случаи документов Протоколы, декларации, акты идентификации, доп-файлы лабораторий, черновики без печатей
Нумерация Пул номеров с бронированием, отдельный под каждую компанию
Разграничение Шаблоны по компаниям, роли доступа к разделу

Что получилось: тэговая разметка прямо в docx работает как единый контракт между человеком и системой, и именно она снимает основную часть очереди «допилите ещё один шаблон». Регистрацию документов закрывает пул номеров с бронированием. Спецслучаи (доп-файл лаборатории, черновики без печатей) живут поверх одного тела шаблона, а случайные значения в полях испытаний убирают ручной ввод чисел.

Процесс и хронология

Этап Период Результат
Модуль импорта и хранения шаблонов, тэговая разметка, случайные значения I–II квартал 2022 160 ч
Пул номеров с бронированием + инструменты статистики лето 2022 65 ч
Доп-файл лаборатории при генерации август 2022 точечная доработка
Доработки: импорт, комментарии, копирование с бронью январь 2023 пакет доработок
Шаблоны без печатей и подписей май 2023 40 ч
«Мои документы»: поиск и смена шаблона с автозаполнением июль 2023 точечная доработка
Уведомление об остатке номеров август 2023 точечная доработка
Прорабатывалось: автозаполнение из внешнего Excel 2025 приостановлено заказчиком

В 2025-м заказчик предложил автозаполнять шаблоны из того же Excel-файла фиксированной структуры, который сотрудники уже используют в другой программе, чтобы вводить данные один раз. Мы разобрали формат файла и логику привязки полей к тэгам, но запуск заказчик поставил на паузу из-за внутренней реформации техотдела. Идея проработана и готова к запуску — когда у клиента вернётся приоритет.

Команда

  • Антон Херсун, Xaver Pro, руководитель проекта: формат тэгов, разметочный контракт, оценки и согласование ТЗ.
  • Разработчик аналитической панели: серверная и клиентская части модуля шаблонов. Он ведёт это направление с первого дня и до сегодня: модуль 2022 года и доработки 2023–2025 делал один и тот же человек. Правки сегодня вносит тот, кто писал этот код несколько лет назад, и никаких «наследники не разобрались».

Скриншоты и материалы

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

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

Прислать шаблоны на расчёт →


Прокрутить вверх