# Проверка запуска и решение проблем

Проверяйте интеграцию в тестовом сценарии кампании и на устройстве покупателя. Для сообщений в Shopping Assistant API используйте `trafficType: "test"`; debug-режим проверяет отображение заглушки и не проверяет каталог или качество консультации.

## Чеклист запуска

- [ ] Выбрана подключённая секция; базовый запрос работает в «Превью».
- [ ] Каталог содержит ожидаемые SKU и актуальные данные карточек.
- [ ] Кампания и сценарий опубликованы; таргетинг совпадает с тестовым пользователем и страницей.
- [ ] Контрольная группа обрабатывается без показа ассистента.
- [ ] Пользователь получил `uid`; он передаётся как `resourceId` без общей заглушки для всех покупателей.
- [ ] `threadId` стабилен внутри разговора; новое сообщение продолжает предыдущий контекст.
- [ ] Ответ, товары, быстрые ответы и поддерживаемые кнопки отображаются на desktop и mobile.
- [ ] Подборка сохраняет порядок SKU; товарный шаблон не добавляет посторонние товары или дубли.
- [ ] Оценка связана с правильным `assistantMessageId`; сохранение подтверждено HTTP-ответом. В собственном интерфейсе ошибка отправки не остаётся успешной оценкой.
- [ ] Каждый показ и custom event фиксируется один раз. Ошибка трекинга не блокирует чат.
- [ ] При SPA-переходе контекст актуален, остаётся один экземпляр чата и один комплект обработчиков.
- [ ] Проверены отсутствие товаров, сетевой сбой и повтор запроса.

## Чат или кнопка не появились

1. Проверьте статус кампании, сценария и публикацию.
2. Проверьте тип страницы, URL, аудиторию и попадание в контрольную группу.
3. В Network проверьте загрузку JS/CSS одной версии, а в консоли — наличие `window.GF` и `ShoppingAssistant`.
4. При `autoInsertTrigger: false` убедитесь, что ваша кнопка существует и вызывает `assistant.open()`.
5. Проверьте контейнер `attachTo` и CSS, который может скрывать чат.

Если интерфейс появился, но запрос не отправляется, отдельно проверьте готовность `GF.userData.uid`, `GF.section` и контекста.

## Ответ есть, товаров нет

Сначала посмотрите `response.contents`. Если нет непустого блока `products`, ответ мог быть уточнением, справочной консультацией или сообщением об отсутствии подходящих товаров.

Если товары пришли в JSON, но не отображаются:

1. Проверьте обработчик `shopping-assistant-recs` или рендеринг собственного интерфейса.
2. Проверьте ID товарного шаблона, существование контейнера и запрос рекомендаций.
3. Сравните SKU ответа и фида, включая регистр. Проверьте регион и наличие.
4. Убедитесь, что шаблон не заменяет отсутствующие позиции другими товарами.

Если товаров нет и в API, повторите запрос в «Превью» с тем же контекстом. Проверьте данные, правила отбора и подключение поиска. Debug-ответ не подтверждает работоспособность поиска.

## Ассистент не учитывает страницу или пользователя

В запросе генерации проверьте `resourceId`, `runtimeContext.tenant_id` и `runtimeContext.ctx`. В Web они зависят от `GF.userData.uid`, `GF.section` и `GF.pageContext`.

- Не используйте общий `resourceId` для разных покупателей.
- Не меняйте `threadId` после каждого сообщения.
- На SPA-переходе обновляйте [контекст](/Integration/web_integration/spa.md).
- Для конкретного магазина передавайте согласованный `storeId`; региональный `lng` его не заменяет.

При `409 MESSAGE_ID_CONFLICT` один ID сообщения использован для разных запросов. Для нового сообщения создайте новый ID, для повтора сохраняйте исходные данные.

## Оценка не сохраняется

| Ответ feedback | Что проверить |
| --- | --- |
| `400` | Поля запроса и реакцию. GET поддерживает `like` и `dislike`; PUT также принимает `null`. |
| `403` у PUT | Условия доступа и допустимый IP для секции. |
| `404` | Совпадение пользователя, диалога и ID сохранённого ответа. Debug-ответ нельзя оценить. |
| `500` | Сохраните код и время ошибки, повторите позже. |

Виджет `1.41` отправляет оценку через PUT. В собственном интерфейсе готовые GET-ссылки вызывайте только при нажатии нужной кнопки. Контракт: [Оценка ответа](integrations/reference/feedback.md).

## Нет диалогов, оценок или тем в кабинете

1. Проверьте секцию, период и тип трафика: «Превью» относится к тестовому.
2. Debug-запросы не сохраняются и не появляются в истории.
3. Отсутствие автоматической оценки не означает плохой ответ; отсутствие реакции не является дизлайком.
4. Если нет тем, проверьте условия [подключения классификации](analysis/topics.md#если-темы-не-появились).

История диалогов и custom events — разные источники. Успешный ответ API не подтверждает отправку событий интерфейса. См. [трекинг](integrations/tracking.md).

## Что передать поддержке

Напишите в рабочий чат проекта Gravity Field: секцию, время и часовой пояс, тип страницы, канал, версию виджета, HTTP-статус и код ошибки, шаги воспроизведения. При необходимости приложите `threadId` и ID проблемного сообщения в закрытом рабочем канале.

Удалите из диагностических материалов API-ключи, токены публичных ссылок и персональные данные. Не публикуйте полную историю покупателя вместе с сообщением об ошибке.
