Перейти к содержимому
Бизнес-анализ

Онтология-справочник дверей: от прайсов к PIM

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

2–3 дня

→ 1–2 часа

добавление новой линейки

100%

совместимости

валидация без ручной проверки

0

некорректных заявок

из-за несовместимых комплектаций

скорость обновления

ассортимента

Проблема

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

Решение

Пятиэтапный конвейер: сбор неструктурированных данных из PDF, XLS, каталогов → AI-нормализация сущностей и извлечение атрибутов → проектирование реляционной онтологии (дверь → фурнитура → отделка → ограничения) → описание матрицы совместимости и бизнес-правил → интеграция в фронтенд-каталог с автоматической валидацией заказов.

Результат

Добавление новой линейки сократилось с 2–3 дней ручной работы до 1–2 часов ввода SKU + автоматизация. Ошибки несовместимости в заявках исчезли. Справочник стал масштабируемой базой для B2B интеграций. На базе этой модели запущены фильтры на сайте и API для партнёров.

Контекст и проблема

Клиент — производитель и дистрибьютор высокоёмких дверей (входные, межкомнатные, спецдвери). В каталоге — сотни SKU, каждая дверь комплектуется с десятков позиций: замки, петли, доводчики, отделка, спецификации. Данные по моделям и фурнитуре приходили из разных источников: PDF прайсы от производителя, Excel-таблицы от дистрибьютора, техническая документация в неструктурированном виде.

Процесс добавления новой линейки:

  1. Менеджер контента получает прайс от производителя.
  2. Вручную создаёт в CMS позиции двери и комплектующих.
  3. Вручную проверяет совместимость: подходит ли замок к этой двери, правильная ли отделка, не конфликтуют ли спецификации.
  4. При ошибке выясняется при переговоре с клиентом, заявка отправляется в доработку.
  5. Если в каталоге жёсткая комплектация без предупреждений — ошибка попадает в заказ.

Масштаб проблемы: 2–3 дня на одну новую линейку. При росте поставщиков добавляется ручная синхронизация и перепроверка. Ошибки совместимости — это возвраты, переписка и репутационный риск.

Вовлечённые роли: менеджер контента (исполнитель), операции (дедлайн на интеграцию), продажи (некорректные комплектации на сайте), техподдержка (переговоры с недовольными клиентами).

Ключевая проблема — не скорость сбора, а отсутствие единого источника истины: нельзя автоматизировать валидацию без явного описания правил совместимости.

Решение: пятиэтапная конвейеризация

Идея: раз и навсегда описать онтологию (что может комплектоваться с чем), чтобы новые данные валидировались автоматически, а каталог был единым источником истины.

PIM-онтология в интерфейсе

Текущая рабочая версия онтологии оформлена как ZERRUS PIM v3.0 FINAL: в ней зафиксированы 17 канонических словарей, 25 бизнес-правил и табличная матрица совместимости по категориям. Это не просто документация, а оперативный интерфейс для операций и контент-команды.

Скриншот PIM-онтологии ZERRUS v3.0

Этап 1: сбор и нормализация неструктурированных данных

Исходный материал: PDF-прайсы, Excel-таблицы, техническая документация. Используется Yandex AI для извлечения структурированной информации:

  • Модель двери, артикул, размеры, вес
  • Фурнитура (замки, петли, доводчики)
  • Отделка (краска, ламинат, натуральный шпон)
  • Спецификации (противопожарные, противовзломные, акустические, климатические границы)

Результат: JSON-схема с явным игнорированием шума из источников (опечатки, форматирование).

Этап 2: проектирование онтологии

На основе нормализованных данных выстраивается реляционная модель:

дверь (SKU, размер, материал базовый, вес, спецификации)
  ↓
фурнитура (замок, петли, доводчик, ручка)
  ↓
отделка (тип, цвет, текстура)
  ↓
ограничения совместимости (правила)

Правила задаются явно в SQL / Python:

  • Замок X подходит к двери типа A и B, но не C
  • Отделка Y поддерживает только замки Z1, Z2 (по эстетике и функциональности)
  • Спецификация «противопожарная» несовместима с определёнными материалами отделки
  • Вес комплектации не должен превышать Y кг (ограничения на монтаж)

Этап 3: автоматическая валидация при добавлении новой двери или фурнитуры

При загрузке нового SKU система:

  1. Классифицирует тип двери и фурнитуры.
  2. Применяет матрицу совместимости.
  3. Выделяет конфликты: несовместимая комбинация, недопустимые спецификации и т. д.
  4. Блокирует добавление без разрешения администратора (с полным отчётом о конфликте).

Это требует разово затратить время на описание правил, но потом система работает сама.

Этап 4: интеграция в фронтенд-каталог (zerrus.ru)

Справочник данных синхронизируется с фронтенд-каталогом:

  • Фильтры строятся на основе совместимости (если выбрана дверь типа A, доступны только совместимые замки).
  • Подсказки при конфигурации: «На эту дверь рекомендована отделка X».
  • Защита от ошибок: при выборе несовместимой комбинации — явное предупреждение перед добавлением в корзину.

Этап 5: API для B2B-интеграций

На основе эталонного справочника выстраивается REST API для партнёров:

  • Получить совместимые комплектации для дверь SKU
  • Валидировать комплектацию перед заказом
  • Синхронизировать свежие данные из каталога

Партнёры могут интегрировать эту валидацию в свои системы — улучшает их качество данных и снижает возвраты.

Ключевые архитектурные решения

Почему AI используется только на входе (нормализация), а не для валидации? Совместимость — это детерминированная бизнес-логика, а не семантическое решение. AI помогает распарсить прайс и извлечь атрибуты, но валидация конфигурации — это SQL-запросы и явные правила. Это дешевле, надёжнее и аудируемо. Нет риска, что LLM выдаст случайный результат на одну и ту же комплектацию.

Почему хранить правила в коде / SQL, а не в UI-инструменте? Альтернатива: BPM-система или но-код платформа для управления правилами. Минус: при масштабировании сложно отслеживать, какие правила действуют, тяжело версионировать. Решение: правила в коде (версионируются в Git), фронтенд для аналитиков (читает из БД), разработчики обновляют логику PR-ом.

Почему стартовать с zerrus.ru, а не с B2B-системы? B2C даёт немедленный feedback: ошибки совместимости видны в заказах и возвратах. B2B интеграции можно добавить позже, когда модель уже стабилизирована. Так снижается риск — вначале убедиться, что сама модель корректна.

До и после

ПараметрДоПосле
Время на новую линейку2–3 дня (ручная работа)1–2 часа (ввод SKU + валидация)
Ошибки совместимостиВыявляются при переговоре клиентаИсключены системой
Источник истиныРазрозненные таблицыЕдиная онтология в БД
Фильтры в каталогеЖёсткие, вручнуюДинамические на основе совместимости
B2B интеграцияНетREST API с валидацией
МасштабированиеЛимитировано людьмиЛинейно с объёмом данных

Стек

  • Нормализация данных: локальный пайплайн Python (spaCy, pandas, regex-правила) без облачных LLM
  • Бизнес-логика: Python (Pydantic, SQLAlchemy), PostgreSQL
  • Оркестрация: локальный n8n (self-hosted) — загрузка данных, запуск валидаций, синхронизация с каталогом
  • Инструменты: Cursor (IDE), локальные скрипты ETL и миграции БД
  • Фронтенд интеграция: REST API, webhook для уведомлений о конфликтах

Результат

Масштабируемость: новая линейка добавляется за 1–2 часа вместо 2–3 дней. Это было узким местом; сейчас операции могут добавить поставщика в один спринт, а не ждать недели.

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

Автоматизация: менеджер контента работает с интерфейсом, не с SQL. Он вводит SKU, система сама проверяет правила и докладывает о проблемах.

Позиция для роста: на этой модели можно строить B2B API, рекомендации (к этой двери подходит вот эта отделка и замок), прогнозирование спроса. Единая онтология — фундамент для будущих фич.