Покупателям
Инструмент Электрика и свет Ручной инструмент Офис и дом Строительные материалы Спецодежда и СИЗ Расходные материалы Складское оборудование Крепёж Климатическое оборудование Сантехника Автосервисное оборудование Строительное оборудование Спорт и туризм Станки Всё для сада Клининговое оборудование

Работа AI-агента с фильтрами и диапазонами

Категориальные фасеты, числовые диапазоны и опубликованный data-* контракт каталога Vesremont. Исходный файл для машинного чтения: /llms/filters.md.

Версия AI-документации: 1.14.31. Ревизия: sha256:5645af5ca9e82c3127c691283c5eec16d7efab8039972ccbbae5ae4b8ec746ce.

Индекс документации: https://vesremont.com/llms.txt

Связь этого раздела с задачей

Задача: Сузить выбор, не смешивая HTML-фасеты и параметры API.

Что нужно на входе: Текущий раздел/бренд и его опубликованные фильтры; ID и допустимые границы берутся с сайта.

Результат: Проверенная подборка с выбранными характеристиками; после изменения фильтра перечитывается список.

Другая цель? Карта всех задач и режимов. Права личного доступа — auth.md; это не обязательный шаг для публичного чтения.

Следующий раздел по теме: Данные карточки товара — сравнить характеристики кандидатов · URL и параметры — собрать допустимое состояние HTML-каталога · Навигация по брендам — ограничить подборку производителем.

Фильтры REST и удалённых протоколов

Сначала запросите GET /api/v1/catalog/filters с section_id либо brand_id. Используйте возвращённые ID, типы, значения и границы; не переносите URL HTML-фасетов в REST. Для GET /api/v1/products параметр filters — один URL-encoded JSON object. Список сортировок и структура запроса определены в OpenAPI. MCP/A2A используют схемы реестра операций, UCP — собственную catalog schema. Полный контракт.

Соответствие сортировок

ПорядокHTML URLREST search_productsBrowser WebMCP set_catalog_sort
Штатныйбез sortssort=id_sortsort=default
Цена по возрастаниюsorts=price_minsort=price_minsort=price_asc
Цена по убываниюsorts=price_maxsort=price_maxsort=price_desc

Это разные имена одного выбранного порядка в разных интерфейсах. Browser-инструмент сам преобразует свой enum в HTML URL; параметры sorts и sort не взаимозаменяемы. UCP использует собственную схему, не эту REST-таблицу. После перехода перечитайте результаты.

Категориальные фильтры

Каждая группа имеет контейнер:

<div data-filter-type="categorical"
     data-filter-id="..."
     data-filter-name="...">

Значения представлены ссылками со следующими атрибутами:

  • href — готовое следующее состояние; это основной интерфейс;
  • data-filter-id и data-filter-name — группа;
  • data-filter-value-id — внутренний ID значения;
  • data-filter-value-code — символьный код URL;
  • data-checked="true|false" — текущее состояние;
  • видимые имя и количество подходящих товаров.

Используйте href, потому что сервер может переместить значение между path и повторяемым filter=..., а также нормализовать порядок path-сегментов.

Диапазонные фильтры

Контейнер диапазона публикует:

<div data-filter-type="range"
     data-filter-id="4283"
     data-filter-name="Длина"
     data-range-min="1"
     data-range-max="2000"
     data-range-step="1"
     data-range-selected-min="398"
     data-range-selected-max="1437">

Number inputs дополнительно содержат data-filter-id и data-range-bound="min|max". Значения формируются из тех же серверных данных, что и UI, и обновляются после AJAX-навигации.

Алгоритм для запроса «длина 500–1000»:

  1. Найдите range-контейнер с data-filter-name="Длина".
  2. Прочитайте его ID, допустимые min/max и step.
  3. Ограничьте запрос пользователя опубликованными границами и соблюдайте step.
  4. Удалите существующий range с тем же ID.
  5. Добавьте range={id}_s_o_500-e_d_1000.
  6. Удалите page, потому что набор результатов изменился.
  7. Откройте URL и проверьте новые data-range-selected-*.

Если выбран полный опубликованный диапазон, штатный UI удаляет соответствующий range из URL.

Несколько фильтров

  • Разные категориальные группы комбинируются.
  • Разные range ID комбинируются повторяемыми range.
  • Категориальные и range фильтры комбинируются между собой.
  • UI предполагает переключение, а не множественный выбор нескольких значений одной категориальной группы.

Сброс

Активные категориальные значения и группы имеют ссылки сброса. Активный range имеет ссылку, которая удаляет только параметр соответствующего ID. Предпочитайте эти ссылки ручному редактированию сложного path.

Динамичность

Допустимые значения, количества и границы зависят от выбранной категории и остальных фильтров. Не кэшируйте их как глобальный справочник и не переносите ID между несвязанными страницами без повторной проверки HTML.

В WebMCP сначала вызывайте get_catalog_filters без filterId: он возвращает до трёх групп, nextOffset и выбранные значения. Для раскрытия конкретной группы повторите вызов с её filterId; значения также идут страницами до трёх элементов через nextValueOffset. Для перехода используйте возвращённый resultUrl или типизированные set_catalog_range/set_catalog_sort.

Правила AI-блока на страницах магазина

Эти правила и блок на сайте формируются из одного источника. Числа в фигурных скобках — обозначения, не реальные ID.

Каталог и фильтры

Вы на странице раздела или отфильтрованной подборки. Используйте опубликованные ссылки подкатегорий, товаров и пагинации; не угадывайте URL и ID. Для известного артикула быстрее поиск, для подбора — каталог.

Как уточнить подборку

Берите значения, диапазоны и ссылки фильтров из текущей страницы. После изменения перечитайте список и выбранные фильтры. Для REST сначала GET /api/v1/catalog/filters?section_id={section_id} либо ?brand_id={brand_id}, затем GET /api/v1/products с тем же контекстом и filters — одним URL-кодированным JSON-объектом по схеме. HTML-сегменты URL не являются REST-параметрами. Фильтры и диапазоны · HTML URL · OpenAPI.

Из листинга в карточку

Откройте ссылку нужного товара. В нижнем блоке карточки «Для AI-систем» указаны внутренний product_id, данные для текстового клиента и готовая ссылка на корзину, если доступно оформление. Не подставляйте артикул, ID бренда/раздела или строки корзины вместо product_id. Сверьте модель, текущую цену и возможность заказа в карточке; совпадение фотографии недостаточно. Правила карточки · Цена и наличие.

Если товар не найден

Публичный поиск без регистрации: GET /api/v1/products?q={артикул}&per_page=5. Числовой items[].id — ID товара. Если клиент не читает JSON, используйте /api/v1/products.md?q={артикул} или /search/?search={артикул}. Сверьте точное совпадение; несколько подходящих вариантов требуют уточнения. Пример Markdown-каталога · Поиск · API.

Передать корзину

Передайте опубликованную в карточке ссылку /buy/{product_id}:{quantity} либо получите share_url через GET /api/v1/cart-drafts/?product_id={product_id}&quantity=1. Вход, cookies, API-ключ и OAuth для подготовки ссылки не нужны. GET корзину не меняет. Когда покупатель откроет ссылку, сайт защищённым POST-запросом перенесёт товар в его корзину и заново проверит текущую цену и наличие. Заказ при этом не оформляется, а доступа к чужой корзине ссылка не даёт. Перенос подборки и оформление.

Личные операции отдельно

Для чтения или изменения личной корзины через REST, MCP, A2A или UCP нужно отдельное разрешение покупателя. Общее разрешение агенту не подтверждает конкретный заказ: его состав и сумму покупатель подтверждает отдельно. Выбрать сценарий · Разработчикам.