TC-05: Модалка “Добавить ингредиент”

Что сделать

Модалка поиска/создания ингредиента и добавления в рецептуру.

Смотри спеку

Секция “Добавить ингредиент → модалка” в Каталог — Товары.

Конкретно

Поиск

  1. Поиск по ингредиентам: GET /api/v1/admin/catalog/products?type=ingredient&search=...
  2. Поиск по полуфабрикатам: GET /api/v1/admin/catalog/products?type=dish&search=...
  3. Объединённый список с бейджами типа

Быстрое создание ингредиента

Кнопка “Создать ингредиент” внизу списка → inline-форма:

  • Название (обязательное)
  • Единица измерения (select: г, кг, мл, л, шт)
  • API: POST /api/v1/admin/catalog/products с type: "ingredient"
  • После создания — ингредиент выбирается автоматически

Заполнение полей

После выбора ингредиента:

  • Брутто (number, required)
  • Нетто (number, required)
  • Единица измерения (select)
  • % потерь холодная (number, optional)
  • % потерь горячая (number, optional)

API

POST /api/v1/admin/warehouse/tech-cards/{id}/items

Ошибки

КодПоказать
INGREDIENT_NOT_FOUND (404)Toast “Ингредиент не найден”
CIRCULAR_REFERENCE (422)Toast “Циклическая ссылка — полуфабрикат ссылается сам на себя”
VALIDATION_ERROR (400)Подсветка полей

После успеха

Модалка закрывается, таблица обновляется, toast “Ингредиент добавлен”.

Файлы

  • web/src/pages/catalog/ProductViewPage.tsx — дополнить (или отдельный компонент модалки)

Зависит от

  • TC-04 (таблица ингредиентов)