Skip to content

Product Search

shaerware edited this page Oct 26, 2026 · 4 revisions

Единый поиск товара

Подсистема, из которой торговый ассистент берёт цены, артикулы, наличие и сроки. Главный принцип: ассистент не выдумывает позиции. Если поиск ничего не нашёл — он так и говорит и предлагает передать запрос менеджеру. Это сделано кодом, а не просьбой в промпте, поэтому обойти нельзя.

Источники данных

Источник Что даёт Объём Обновление
Каталог сайта (WooCommerce) название, артикул, розничная цена, характеристики, ссылка, наличие и срок по части позиций 30 163 позиции автоматически, каждую ночь
Прайсы поставщиков (xlsx/xls/pdf) закупочная цена, остаток у поставщика 7 поставщиков, вкл. Промситех автоматически, каждую ночь — из папки на Google Диске или из папки на сервере
EKF IMS (API) — не подключено —

Закупочные цены — конфиденциальны. Их видит только менеджер в админском чате; виджет сайта, WhatsApp и Telegram получают исключительно розничные цены каталога, без упоминания поставщиков.

Наличие: что означает каждая формулировка

Это самая тонкая часть. Магазин не ведёт собственный складской учёт — у всех 30 163 товаров учёт остатков в WooCommerce выключен, а статус «в наличии» стоит по умолчанию у всех подряд. Принимать его за наличие нельзя: ассистент бы отвечал «✅ В наличии» про любую позицию каталога.

Настоящие данные о наличии приходят из двух мест — остатков поставщиков в карточке товара и прайсов поставщиков:

Формулировка ассистента Что за ней стоит Сколько позиций
в наличии N шт., срок поставки до X дн. в карточке заполнен остаток конкретного поставщика — известны и количество, и его собственный срок ~1 300
есть у поставщика — уточнить только срок артикул найден в прайсе поставщика, и поставщик подтверждает остаток зависит от свежести прайсов
есть в прайсе поставщика — уточнить срок артикул в прайсе есть, остаток не указан —
наличие уточняется позиция в каталоге есть, подтверждения остатка нет ни от сайта, ни от поставщиков остальные
НЕТ в наличии явно указанный нулевой остаток редко

Важное правило: «остаток не указан» ≠ «нет в наличии». Файлы остатков перечисляют только то, что у поставщика ЕСТЬ, поэтому отсутствие строки означает «не знаем», а не «нет». Раньше это путалось, и ассистент отказывал клиентам по 20 тысячам позиций, которые на самом деле поставляются.

То же и с карточкой: если все поставщики, чьи остатки магазин ведёт, показывают ноль, это ещё не отказ — позицию может возить тот, чьих данных на сайте нет.

Срок берётся у того поставщика, у кого товар есть

Магазин хранит остаток и срок отдельно по каждому поставщику, и сроки у них разные: у одного день, у другого 1–2 дня, у третьего 3–4. Ассистент называет срок того поставщика, у которого позиция действительно в наличии, и всегда верхнюю границу: «3-4 дня» он озвучит как «до 4 дней». Обещать быстрее, чем подтвердил поставщик, нельзя.

Если товар лежит у нескольких — выбирается самый быстрый из них, и показывается именно его остаток, а не сумма всех складов. Иначе «12 шт., срок до 2 дней» означало бы, что за два дня приедут и те семь, что лежат у поставщика с четырёхдневной доставкой.

Почему не общая сводка на карточке. В карточке есть ещё сводный блок наличия, но после смены темы магазина (28.09.2026) он разошёлся с исходными данными: срок в нём проставлен один и тот же — «1-2 дня» — всем поставщикам подряд, хотя у части доставка занимает 3–4 дня, а количество расходится с реальными остатками. Ассистент его не использует, кроме одного поставщика (ПРОМСИТЕХ), у которого своих полей нет, — и срок оттуда не берёт.

Как ассистент ищет

Поиск точный, по словам и артикулам — не «по смыслу». Для коммерческого предложения это принципиально: цена и артикул должны совпадать с прайсом буквально.

Что умеет поиск:

  • артикул — точное совпадение важнее частичного, частичное важнее совпадения по названию;
  • номинальный ток — на запрос «контактор 20 А» позиция на 225 А не обгонит 18-амперную: для электротехники номинал определяющий;
  • сам товар выше аксессуара к нему — «катушка управления для контактора» не подменяет контакторы (но найдётся, если просят именно катушку);
  • аббревиатуры — ЧРП, ПЧ, частотник → преобразователь частоты; УЗО, УПП, дифавтомат;
  • запрос строится из диалога, а не из последней реплики — на уточнение «модульный не подходит, нужен промышленный» ассистент не станет искать по слову «модульный», то есть по тому, что клиент только что отверг;
  • позиции с ценой держатся в выдаче — у части каталога цена не заполнена, и такие строки не должны вытеснять те, по которым можно назвать цифру.

Для смысловых вопросов («чем запитать насос 5,5 кВт») подключается описательная часть каталога — она помогает понять задачу, но цены, артикулы и наличие берутся только из точного поиска.

Коммерческое предложение

Ассистент собирает черновик КП: таблица позиций, итог без НДС / НДС 16 % / с НДС, курс доллара с датой (если в позиции валютный прайс), строка про доставку по факту веса и габаритов, срок действия цен. Поставщики клиенту не раскрываются. Позиции с нулевой маржой в итог автоматически не идут — помечаются для директора. Любое КП — черновик на подтверждение, не финальный документ.

Как обновить прайс поставщика

Через Google Диск (рекомендуется)

  1. В админке: Настройки → Google — подключите аккаунт, которому расшарена папка с прайсами.
  2. База знаний → вкладка Google Drive → «Подключить папку или файлы».
  3. Выберите папку (раздел «Доступные мне» — там лежат папки, расшаренные вам другими) или вставьте ссылку на неё. Можно отметить отдельные файлы.
  4. Назначение — «Прайсы поставщиков» (или «Прайсы + база знаний»). Оставьте галочку «Проверять изменения раз в сутки».

Дальше поставщики могут просто заменять файлы в папке на Диске. Каждую ночь, прямо перед пересчётом цен, секретарь сверяет даты файлов: если что-то поменялось — скачивает и пересчитывает, если нет — ничего не трогает. Кнопка ↻ обновляет сразу.

Замена идёт по поставщику: старый файл убирается в архив (_archive/<дата>/), только когда пришёл новый для того же поставщика. Прайсы поставщиков, которых в папке на Диске нет, остаются как были. Если папка вдруг опустела или доступ закрыли — текущие прайсы не трогаются.

После каждой синхронизации под источником виден отчёт: какой файл какому поставщику достался и сколько позиций разобрано. Жёлтое предупреждение — файл не подошёл ни одному поставщику (его никто не читает, цены этого поставщика остаются старыми); красное — файл подошёл сразу двум.

Скачивание идёт от имени того пользователя админки, который создал источник, — у него должен быть подключён Google-аккаунт с доступом к папке.

Вручную на сервере

Положить новый файл в папку прайсов на сервере — ночью система перечитает её сама. Если файлов одного поставщика несколько, берётся самый новый.

Как система узнаёт поставщика

По имени файла, без учёта регистра и разницы «пробел / подчёркивание»: «Диллер…» и «ОСТАТКИ 15.10…» — SunWell/EKF, «аксима…» / «axima…» — Аксима, «Остатки и доступность…» — Chint, «Остатки от …xls» — Промситех, «X-Trade…», «Электрокомплект…», «Сталкер прайс…». Столбцы у Аксимы и Промситеха находятся по заголовкам, так что сдвиг колонок в новой выгрузке из 1С ничего не ломает; остатки суммируются по всем складам.

Если файла поставщика нет вообще, он просто пропускается — остальные разберутся как обычно.

Промситех: цена из файла идёт клиенту как есть, без наценки; закупочная цена поставщиком не раскрывается, поэтому менеджер видит «закуп не раскрывается».

Что ещё не сделано

  • Автоматической выгрузки прайсов из почты пока нет: свежесть зависит от того, как быстро новый файл попадёт в папку на Google Диске.
  • У 11 378 позиций каталога (38 %) цена в магазине не заполнена. Прайсами поставщиков они не покрыты, поэтому назвать цену неоткуда — такие запросы уходят менеджеру.
  • Интеграция с EKF по API не подключена.

Смотри также

  • WooCommerce — синхронизация каталога
  • CRM — разбор входящих заявок
  • Widget, WhatsApp — каналы, где работает ассистент

Clone this wiki locally