Модель характеристик
Начните с реальных вопросов пользователя: диаметр, напряжение, материал, совместимость. Характеристика должна иметь тип и единицу измерения. Числа, сохранённые строками вместе с единицами, затрудняют диапазонные фильтры. Категории могут иметь разные наборы свойств, но правила их валидации должны быть явными.
Корзина как рабочий документ
Одна закупка может относиться к нескольким объектам. Независимые корзины позволяют готовить спецификации параллельно. Изменение количества должно сохранять остальные позиции. Отсутствие на складе — отдельное состояние, а не исчезновение товара. Условия поставки и коммерческая цена требуют серверной проверки.
Цена принадлежит серверу
Клиент отправляет идентификаторы позиций и количества. Backend повторно читает цены и остатки, проверяет ограничения и рассчитывает итог. Нельзя принимать присланную браузером сумму как авторитетную. Денежные значения хранят в минимальных единицах или точном decimal-типе, избегая двоичной арифметики с плавающей точкой.
Поиск и производительность
Поиск должен понимать артикулы и устойчиво работать с пустым результатом. Для большой базы используйте серверную пагинацию и индексы, соответствующие реальным условиям отбора. EXPLAIN ANALYZE помогает проверить гипотезы на данных. Наличие Rust в backend само по себе не исправляет неудачный SQL или слишком большой ответ.