# 10. Домен товаров ## Назначение Товарный домен определяет контракт карточки товара, листингов, ценовых и складских атрибутов. ## Поведение системы - Товары загружаются по API для листинга, карточки и связанных коллекций. - Frontend отображает только те поля, которые есть в контракте. - Бизнес-правила доступности товара приходят из backend. ## Обязательные JSON-свойства товара - itemID - name - price - currency - categoryID - visible ## Опциональные свойства - discount - images - badges - simpleDescription - attributes - stockStatus - rating ## Строгие правила - Цена и валюта должны передаваться как валидная пара. - Скрытые товары не участвуют в публичных витринах. - categoryID должен ссылаться на существующую категорию. - Виджет не изменяет товарные данные, только отображает. ## Пример JSON товара ```json { "itemID": 7812, "name": "Laptop Pro 14", "price": 129990, "currency": "RUB", "categoryID": 55, "visible": true, "discount": 10, "images": [ { "url": "https://cdn.example.com/items/7812/main.jpg", "isMain": true } ], "badges": ["featured", "new"] } ``` ## Ответственность Frontend - Показывать корректную цену, скидку, бейджи и доступность. - Поддерживать переход из листинга в карточку товара. - Учитывать locale/currency из tenant-конфигурации. ## Ответственность Backend - Возвращать актуальные цены и доступность. - Стабильно поддерживать идентификаторы товаров. - Предоставлять медиа и атрибуты в согласованном формате.