BR 1.18 — Полная вкладка 1С + переработка UI structural-опций

Контекст

Доработка BR 1.17. Текущий UI (мини-секция «Связь с 1С» на карточке товара + inline-таблица опций) не подходит для полноценной работы с интеграцией 1С:

  • Бухгалтеру нужно отдельное название для выгрузки в 1С — может отличаться от названия в каталоге (один товар в каталоге = одно название; в 1С — другое, под номенклатурой бухучёта).
  • Опция structural-модификатора сейчас редактируется только в inline-строке (имя + код 1С + 5 числовых полей). Это «суб-товар» по смыслу, и UX должен быть похож на карточку обычного товара.

Изменения

1. БД (миграция 039)

Добавить поле name_1c VARCHAR(255) в две таблицы:

  • products — название товара при выгрузке в 1С (NULL → fallback на name)
  • modifier_options — то же для опции structural

Поле опциональное, без индексов, без валидации.

2. Backend (catalog-service)

  • Entity Product, ModifierOption — поле name1c
  • DTO Request/Response (товары, модификаторы) — name_1c (snake_case JSON)
  • Kafka catalog.modifier_group.upserted + catalog.product.upsertedname_1c в payload (для будущей BR по выгрузке чеков)

3. Frontend (admin-web)

3a. Карточка товара — новая вкладка «1С»

Текущая мини-секция «Связь с 1С» (бейдж) удаляется. Вместо неё — отдельный таб «1С» в шапке (между «Информация» и «Техкарта»). На табе:

  • Статус привязки (бейдж как раньше: Прямая / Виртуальный / Виртуальный неполный / Не привязан)
  • Название для 1С (name_1c) — input, placeholder = текущее name + подсказка «Если не указано — берётся название из каталога»
  • Код 1С (sku_1c товара) — read-only показ префикса 1c: из sku, если есть (полноценное отдельное поле products.sku_1c — будущая BR при необходимости)
  • Для виртуальных (есть structural-мод) — мини-таблица опций: название / название 1С / код 1С (read-only, открыть детали можно через карточку модификатора).

3b. Опция structural-модификатора — drawer/модалка с полной карточкой

В ModifierViewPage (страница группы модификаторов): клик по строке опции открывает drawer справа с полной карточкой опции. Поля:

  • Название (name)
  • Название для 1С (name_1c) — input с placeholder
  • Код 1С (sku_1c) — input, обязателен если группа structural
  • min/max/default amount
  • Free quantity
  • is_active
  • Кнопка «Сохранить»/«Отмена»

В CreateDependentModifierModal (модалка создания зависимого мода) — добавить поле «Название 1С» к каждой опции рядом с «Кодом 1С».

4. Не входит

  • Полноценный products.sku_1c отдельным полем (текущая логика через префикс 1c: в sku остаётся)
  • Сама выгрузка чеков в 1С — отдельная будущая BR (приоритетный список бухгалтера Елены)
  • Цена опции (PriceListItem) в drawer — редактируется на отдельной странице
  • Drag-and-drop / сортировка опций в drawer

Сервисы

СервисЧто делается
Catalog ServiceМиграция 039, поле name_1c в product + modifier_option
Admin BFFProxy (passthrough body)
Admin WebВкладка «1С» на товаре + drawer для опции

Ссылки