BR 1.17 — Admin Web

Статус: not_started

Задачи

1. Типы

  • shared/types/catalog.ts — добавить sku_1c?: string в ModifierOption / ModifierOptionRequest

2. Каталог — Модификаторы (страница группы)

  • ModifierViewPage.tsx — колонка «Код 1С» в таблице опций, показывать только если у группы есть structural-привязка хотя бы к одному товару
  • ModifierEditPage.tsx — поле «Код 1С» в inline-таблице опций + tooltip-подсказка
  • ModifierCreatePage.tsx — то же что edit
  • Клиентская валидация дублей sku_1c в группе — подсветка обеих дублирующихся строк

3. Конструктор товара — Зависимый модификатор

  • CreateDependentModifierModal.tsx — поле «Код 1С» обязательное для каждой опции
  • Frontend-валидация: пустое поле → красная обводка ячейки + текст «Заполните Код 1С»
  • Кнопка «Сохранить» дизейблится пока есть невалидные поля

4. Каталог — Товар (карточка)

  • ProductViewPage.tsx — новая секция «Связь с 1С» (между «Фискальные атрибуты» и «Доступность по точкам»)
  • Бейдж со статусом:
    • sku начинается с 1c: → зелёный «1С: {КОД}»
    • sku пуст + structural-мод + все опции с sku_1c → зелёный «Виртуальный — {N} опций»
    • sku пуст + structural-мод + часть опций без sku_1c → жёлтый «{X} из {N} без 1С-кода»
    • Иначе → серый «Не привязан к 1С»
  • Логика расчёта статуса на клиенте (только UI, без нового API-поля)

5. Обработка ошибок

  • STRUCTURAL_OPTION_MISSING_SKU_1C → toast «Не все опции имеют Код 1С — заполните перед привязкой как structural» + красные обводки пустых полей в таблице опций
  • DUPLICATE_SKU_1C_IN_GROUP → toast «Код 1С должен быть уникальным в рамках группы» + подсветка дубликатов

6. Тесты

  • Smoke: создать structural-мод с заполненными sku_1c → успех, в карточке товара бейдж «Виртуальный — 3 опции»
  • Smoke: попытка PATCH опции с пустым sku_1c в structural-группе → toast STRUCTURAL_OPTION_MISSING_SKU_1C
  • Smoke: ввод одинаковых sku_1c у двух опций → frontend подсветка + при сохранении 422 DUPLICATE_SKU_1C_IN_GROUP

Зависимости

  • Catalog Service (миграция + новое поле) — должен быть готов
  • Admin BFF — должен пропускать поле

Ссылки