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

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

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

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

<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.