Експертиза · Інтернет-магазини
Магазин, у якому каталог читається в реальному часі, а не копіюється один раз і забувається.
Ми будуємо магазини і, поверх них, шар, якого зазвичай бракує: агент, який відповідає клієнту, читає ціну і запас безпосередньо з магазину, у момент запитання, і відмовляється вигадувати непубліковану ціну.
Вже збудованоЦе можна перевірити зовні просто зараз, без того щоб питати нас. Наш каталоговий пункт, переданий дистриб’ютору, відповідає 200 і каже «154 результати»; публічний інтерфейс його магазину, запитаний напряму, повертає заголовок `x-wp-total: 154`. Одна й та сама цифра, два незалежні джерела, перевірено 06.09.2026. Друга реалізація інтегрована в платформу асистентів: сервіс `storeCatalog.service.js` плюс три інструменти, які агент може викликати. Застереження, яке треба сказати: цей другий маршрут лежить на гілці розробки (`feat/store-catalog-global`, `481cfa0`) і ще не злитий у trunk — отже, він поставляється для клієнтів, яких ми підключили, а не запускається за замовчуванням для всіх.
Більшість «інтеграцій каталогу» насправді є експортом. Хтось один раз завантажує товари, вставляє їх у файл, і відтоді агент, який говорить із клієнтом, читає стару фотографію магазину. Це працює бездоганно до першої зміни ціни або першого відсутнього товару — а тоді помиляється з упевненістю, що гірше, ніж мовчати.
Ми читаємо магазин у момент запиту. Для магазинів на WooCommerce є публічний інтерфейс — Store API — який повертає товари, ціни та доступність без ключів, без акаунта, без встановленого плагіна. Адреса — `/wp-json/wc/store/v1/products`, ми запитуємо її зі 100 товарами на сторінку, з максимальним часом очікування 20 секунд, і дізнаємося із заголовка відповіді, скільки є сторінок, замість того щоб вгадувати. Першу сторінку беремо окремо, решту — паралельно.
Частина, що відрізняє правильну інтеграцію від такої, яка лише виглядає правильною, — це переклад ціни. Store API не повертає «129,90»; він повертає рядок цифр у менших одиницях і, окремо, скільки десяткових знаків має валюта. Хто ділить на 100 за звичкою, той тихо помиляється на будь-якій валюті, де не дві десяткові знаки. І ще важливіше: нульова ціна не означає безкоштовно, вона означає неопубліковано. У нас нуль стає «ціна за запитом — підтверджується колегами», а агент отримує явну інструкцію не вигадувати. Це видно в публічній відповіді точки каталогу, просто зараз.
Поверх каталогу йдуть інші частини, кожна зі своїм реальним станом: кошик і передача замовлення до системи обліку ресторану або магазину, оплата через інтерфейс MAIB для продавців або через Stripe, відновлення покинутих кошиків, відстеження стану замовлення із синхронізацією кожні 15 хвилин. Де в нас немає функціональної інтеграції — а такі випадки є — нижче точно вкажіть, які саме.