ИИ-поиск магазина: готовый набор для приёмки
Коротко
- Сначала запишите, какие товары поиск вправе вернуть на каждый запрос, и только потом смотрите выдачу.
- Ниже — учебный каталог из 12 термокружек, 14 запросов с допустимыми артикулами и заполненный журнал, который можно взять за основу.
- Это подготовка к приёмке: ответы в примере придуманы, работа SearchBooster или другого поисковика здесь не проверяется.
Что подготовить до начала
Нужны редактор таблиц или текстовый редактор и Python 3 для воспроизведения упражнения. Скачайте учебный набор и распакуйте в отдельную папку. Внутри — каталог, запросы, ожидания, программа проверки и журнал. Для этого этапа не нужны аккаунт поисковика, ключи API, платный тариф или рабочая выгрузка магазина.
Заложите час на разбор и замену примеров своими товарами. Это ориентир для планирования, не измеренное время внедрения. При условной стоимости часа сотрудника 1 000 ₽ подготовка обойдётся в 1 000 ₽: 1 час × 1 000 ₽. Вызовы сервиса в этот расчёт не входят; запросите у поставщика отдельную оценку интеграции и последующих прогонов.
Набор подходит руководителю интернет-магазина и разработчику, которые договариваются о требованиях к поиску. Он не заменит проверку многомиллионного каталога, нагрузки и скорости обновления остатков. Если задача — сначала выбрать продукт, начните с карточки SearchBooster или anyQuery: здесь нет рейтинга поставщиков.
Шаг 1. Сохраните каталог и правила
В учебном магазине наличие зависит от города, а цены в обоих городах одинаковы. Остаток больше нуля означает «можно показать как доступный». Это выбранное нами правило, не универсальная трактовка полей поисковика.
Скопируйте каталог в таблицу. Все строки ниже придуманы редакцией; цены — рубли, объём — миллилитры, остатки — штуки. Название каждого товара — «Учебная термокружка» с артикулом из первой колонки.
| Артикул | Материал | Объём, мл | Цвет | Ручка | Цена, ₽ | Москва | Казань |
|---|---|---|---|---|---|---|---|
| K01 | Сталь | 500 | Чёрный | Нет | 1490 | 5 | 0 |
| K02 | Сталь | 500 | Белый | Да | 1790 | 0 | 4 |
| K03 | Пластик | 350 | Чёрный | Нет | 690 | 10 | 10 |
| K04 | Стекло | 400 | Прозрачный | Да | 1190 | 2 | 1 |
| K05 | Сталь | 750 | Чёрный | Нет | 2490 | 3 | 2 |
| K06 | Сталь | 500 | Белый | Нет | 1990 | 2 | 5 |
| K07 | Пластик | 500 | Белый | Да | 990 | 0 | 8 |
| K08 | Сталь | 350 | Красный | Нет | 1290 | 7 | 0 |
| K09 | Стекло | 500 | Чёрный | Нет | 1590 | 0 | 0 |
| K10 | Сталь | 500 | Чёрный | Неизвестно | 1390 | 1 | 1 |
| K11 | Сталь | 750 | Белый | Да | 2990 | 0 | 3 |
| K12 | Пластик | 350 | Белый | Нет | 590 | 6 | 0 |
До запросов запишите правила: город обязателен; товар с ценой ровно на указанном пределе подходит; все ограничения действуют одновременно. «Без ручки» требует известного значения «нет»: неизвестная характеристика у K10 не подходит. Если подходящих товаров нет, поиск сообщает об этом; предложение расширить бюджет должно быть отдельным, с согласия покупателя.
На выходе: один снимок каталога и письменные правила. Не меняйте их после просмотра ответов ради красивого результата. В своём каталоге добавьте разные региональные цены: учебная таблица проверяет различие остатков, но не различие цен между городами.
Шаг 2. Задайте передачу региона в фид и запрос
Это отдельная проверка входных данных, до оценки смысла запроса.
Например, документация YML
SearchBooster требует при использовании region
передавать наличие, цену и остатки внутри соответствующего регионального
блока; без region эти параметры находятся в
offer. Остаток count при региональной
структуре также помещают в region.
Для K01 задайте такое учебное соответствие:
| Город | ID региона | Цена, ₽ | Наличие | Остаток, шт. |
|---|---|---|---|---|
| Москва | msk | 1490 | true | 5 |
| Казань | kzn | 1490 | false | 0 |
Идентификаторы msk и kzn здесь назначили
мы, их нужно согласовать с собственной интеграцией. Не оставляйте цену
от одного города рядом с наличием другого.
В описании
API поиска SearchBooster у метода
GET /api/{uuid}/search/ есть необязательный строковый
параметр regionId. Необязательный параметр сам по себе не
объясняет, какой город будет выбран без него. Для учебного магазина
правило строже: сначала выбрать город; поведение поставщика без региона
нужно отдельно выяснить и проверить, а не считать Москвой по
умолчанию.
Сверьте один артикул по цепочке: исходный каталог → сформированный фид → загруженный документ товара → параметры запроса → карточка в ответе. В журнале сохраните время снимка, артикул, город, цену и наличие на каждом звене. В нашем локальном примере копия импортированного K01 намеренно получила нулевой московский остаток вместо пяти: товар исчез ещё до ранжирования.
На выходе: таблица соответствий городов и полей плюс список того, что нужно подтвердить у поставщика. Сам приёмочный набор можно подготовить без подключения; загруженный документ и реальную цепочку запросов вы проверите уже на стенде поставщика.
Шаг 3. Назовите допустимые товары до первого ответа
Ниже — весь учебный список ожиданий. Для каждой строки любой артикул, которого нет в колонке «Допустимо», запрещён. При пустом списке запрещены все товары из каталога. Это проверка состава первых пяти результатов, не их порядка: все допустимые товары должны в них попасть, посторонние — нет.
| № | Запрос покупателя | Город | Допустимо | Что проверяем |
|---|---|---|---|---|
| Q01 | K01 | Москва | K01 | Точный артикул |
| Q02 | термокрушка белая до 1000 рублей | Москва | K12 | Опечатка не отменяет бюджет |
| Q03 | белая термокружка до 1990 включительно | Казань | K02, K06, K07 | Цена на границе допустима |
| Q04 | термокружка не пластиковая до 1600 | Москва | K01, K04, K08, K10 | Отрицание материала |
| Q05 | чёрная без ручки до 1600 | Москва | K01, K03 | Неизвестно — не «нет» |
| Q06 | белая пластиковая | Казань | K07 | Казанский остаток |
| Q07 | белая пластиковая | Москва | K12 | Тот же запрос, другой город |
| Q08 | стальная 750 мл до 2500 | Казань | K05 | Объём и бюджет вместе |
| Q09 | стальная 750 мл до 2000 | Казань | Нет товаров | Не расширять бюджет молча |
| Q10 | стеклянная 500 мл | Москва | Нет товаров | K09 нет в наличии |
| Q11 | красная без ручки | Казань | Нет товаров | Московский остаток не подходит |
| Q12 | чёрная стальная до 1500 | Москва | K01, K10 | Ручку здесь не спрашивали |
| Q13 | термокружка до 590 включительно | Москва | K12 | Нижняя ценовая граница |
| Q14 | белая термокружка | Не выбран | Нет выдачи: спросить город | Не путать уточнение с отсутствием товара |
В большом каталоге не требуйте показать все подходящие товары на первой странице. Задайте отдельно обязательные товары и допустимые замены, размер проверяемой выдачи и правила порядка. Здесь подходящих товаров в каждой строке мало: их можно показать на первых пяти местах.
На выходе: сохранённые ожидания, независимые от будущих ответов. В архиве есть отдельная таблица ожиданий и список запросов; запреты развёрнуты для каждой строки.
Шаг 4. Заполните журнал и найдите нарушение
В таблице ниже только придуманные учебные ответы, а не выдача сервиса. Мы намеренно внесли ошибки, чтобы показать, как читать журнал. Полный запрос и ожидаемые товары берите из предыдущей таблицы.
| № | Учебный ответ: артикулы или действие | Итог | Причина |
|---|---|---|---|
| Q01 | K01 | Прошёл | Точное совпадение |
| Q02 | K12 | Прошёл | Цвет, бюджет и город соблюдены |
| Q03 | K02, K06, K07, K11 | Не прошёл | K11 дороже 1990 ₽ |
| Q04 | K01, K04, K08, K10 | Прошёл | Пластика нет, бюджет соблюдён |
| Q05 | K01, K03, K10 | Не прошёл | У K10 ручка неизвестна |
| Q06 | K07, K12 | Не прошёл | K12 нет в Казани |
| Q07 | K12 | Прошёл | Московский товар доступен |
| Q08 | K05 | Прошёл | Объём и цена подходят |
| Q09 | K05 | Не прошёл | Бюджет самовольно расширен |
| Q10 | K09 | Не прошёл | Товара нет в наличии |
| Q11 | Сообщить: подходящих товаров нет | Прошёл | Красной кружки нет в Казани |
| Q12 | K01, K10 | Прошёл | Оба товара подходят |
| Q13 | K12 | Прошёл | Цена равна пределу |
| Q14 | Сообщить: подходящих товаров нет | Не прошёл | Нужен вопрос о городе |
Программа сравнила заданные ответы с правилами: прошли 8 из 14 запросов, не прошли 6 из 14. Ошибки перечислены в последней колонке.
Не угадывайте причину по одному плохому ответу. Идите по слоям:
- Неверная цена или остаток уже в исходном каталоге. Исправьте источник данных и создайте новый снимок. Ожидаемый результат — правильное значение до выгрузки.
- В каталоге верно, в фиде или загруженном документе неверно. Проверьте преобразование полей, регион и обновление. Ожидаемый результат — совпадение значений во всех трёх местах. У SearchBooster переиндексация из фида перезаписывает изменения, внесённые через API: правку надо сохранять в источнике, который переживёт следующую загрузку.
- Документ верен, но запрос потерял бюджет, отрицание или город. Сверьте разобранные условия и фильтры с запросом покупателя. Ожидаемый результат — ограничения не исчезли по дороге.
- Кандидаты допустимы, но нужный товар ниже согласованного места. Только теперь разбирайте отбор кандидатов и ранжирование. Ожидаемый результат — обязательный товар попал в оговорённую часть выдачи.
Без снимков этих слоёв в журнале пишите «причина не установлена», а не «модель плохо ранжирует».
На выходе: у каждой ошибки есть нарушенное правило, фактический ответ и следующий шаг проверки. После исправления повторите тот же набор, не убирая неудобные запросы.
Шаг 5. Предусмотрите запасной поиск без ИИ
Договоритесь о поведении при тайм-ауте, недоступности ИИ или некорректном ответе. Наше требование: перейти на обычный поиск по артикулу и словам с теми же жёсткими ограничениями города, бюджета и наличия. Если запрос не удалось разобрать, покажите обычную форму и фильтры; не угадывайте отсутствующее условие. Если актуальность данных неизвестна, не обещайте покупателю наличие.
В локальном упражнении запасной путь получает уже разобранные условия. Он проверяет фильтры, но не распознаёт живую речь, не исправляет опечатки и не подключён к магазину. Для каждого запроса мы подставили три учебных отказа: тайм-аут, недоступность и неверный ответ. Все 42 сочетания сохранили ожидаемые ограничения; отдельная проверка устаревшего снимка запретила выдачу вместо обещания наличия.
На реальном стенде отключите ИИ-ветку и выполните свои запросы через интерфейс магазина. Сравните цену, город и наличие с исходным каталогом; измерьте время ответа и убедитесь, что покупатель может продолжить поиск. Предел задержки и допустимый возраст остатков назначьте до прогона под свой магазин.
На выходе: заранее согласованный запасной сценарий. Успех локальной модели не доказывает, что переключение работает у поставщика.
Как воспроизвести учебный результат
- Откройте терминал в распакованной папке. На компьютере должен быть установлен Python 3; программа использует только стандартную библиотеку, к внешним API не обращается.
- Запустите
python3 run.py. В терминале появится сводка, а в папке — журналы и страница с результатом. - Откройте
exercise.htmlв браузере. Вы увидите таблицу сравнения ответов и ожиданий.
Ожидаемый результат: программа подтвердила, что исходные файлы не изменились, и заново получила те же допустимые товары; в первом журнале 8 успешных и 6 неуспешных строк из 14. В исправленном учебном журнале проходят все 14 строк. В запасном пути проходят 42 сочетания запросов и отказов из 42.
Чтобы проверить собственный поиск, заведите рядом новый каталог и новые ожидания, не переписывая замороженный учебный пример. Сохраните реальный ответ целиком, время, выбранный регион и версию загруженного каталога. Не подменяйте ответы поставщика готовыми учебными строками.
Как мы проверяли
Проверено: открытая документация SearchBooster и локальное упражнение v1 на Python 3.14.4; интерфейс сервиса не использовался, версия веб-документации не указана.
Редакция Кометы подготовила каталог и правила, сохранила ожидания до
ответов, выполнила локальную программу и получила журналы до и после
учебной правки. Дата указана в начале страницы, среда — в начале раздела; запись
упражнения — data/tests/catalog-search-acceptance-v1, её
входы и результаты доступны в архиве. Страницы документации открыли
заново и сверили по содержанию.
Запросы к работающему поиску, эмбеддинги, загрузка каталога в сервис, коммерческие тарифы и качество ранжирования не проверялись. Учебные ответы и цены сочинила редакция, чужих товарных выгрузок и персональных данных нет. Открытая документация подтверждает описанный формат, но не успешность вашей интеграции.
Источники
- YML SearchBooster: региональные цена, наличие и остатки — проверено 17.10.2026.
- OpenAPI поиска SearchBooster: параметр regionId — проверено 17.10.2026.
- Индексация SearchBooster: приоритет данных фида при переиндексации — проверено 17.10.2026.
- Учебный набор
редакции: каталог, ожидания, программа и журналы — версия v1; запись
data/tests/catalog-search-acceptance-v1. Данные придуманы редакцией, CC0.