AACsearch
Диагностика

Синхронизация коннектора

Коннектор помечен как офлайн, heartbeat не проходит, задачи синхронизации зависли — диагностика токенов коннектора, сетевой доступности, несоответствия режима синхронизации и кеша дашборда.

Коннектор считается «онлайн», когда сервер получил от него heartbeat в течение последних 5 минут. «Неизвестно» — между 5 и 30 минутами. «Офлайн» — более 30 минут.

Если ваш коннектор неожиданно переходит в офлайн, пройдите по этим проверкам.

Симптомы

Дашборд показываетВероятная причина
Статус: офлайнПроцесс коннектора не запущен или ошибка аутентификации
Статус: неизвестноПропущен недавний heartbeat — подождите 1–2 мин
Статус: онлайн, но задачи синхронизации падаютОшибка валидации по задаче; см. Ошибки индексации
Статус: онлайн, но данные устарелиКоннектор запущен, но не отправляет — проверьте дельта-курсор
403 invalid_or_revoked_key от CMS-модуляТокен отозван или никогда не совпадал

Дерево решений

Статус коннектора = офлайн?
  ├─ Вызов heartbeat возвращает 200?
  │  ├─ нет  → см. [Ошибки аутентификации](/troubleshooting/auth-errors)
  │  └─ да  → процесс коннектора молча падает; проверьте логи процесса
  └─ Задержка синхронизации статуса; обновите через 2 мин

Задача синхронизации зависла в "running"?
  ├─ Задача > 30 мин? → вероятно, троттлинг воркера; см. [Ошибки индексации](/troubleshooting/ingest-failures)
  └─ Задача < 30 мин? → ждите; большие каталоги требуют времени

Данные устарели несмотря на "онлайн"?
  ├─ Был ли сброшен дельта-курсор?
  └─ Доходят ли изменения документов до коннектора вообще?

Проверка 1: heartbeat работает от начала до конца

С хоста, на котором работает коннектор:

curl -i -X POST https://app.aacsearch.com/api/connectors/<connectorId>/heartbeat \
  -H "Authorization: Bearer ss_connector_..." \
  -H "Content-Type: application/json"

Ожидаемый ответ:

HTTP/1.1 200 OK
{ "status": "ok", "timestamp": "2026-05-11T12:00:00.000Z" }

Если 401, см. Ошибки аутентификации. Если 200, но дашборд всё ещё показывает офлайн, подождите 2 минуты — дашборд кеширует lastUsedAt для производительности.

Проверка 2: рукопожатие успешно

Каждый коннектор должен вызывать handshake при запуске. Перезапустите его вручную:

curl -X POST https://app.aacsearch.com/api/connectors/handshake \
  -H "Authorization: Bearer ss_connector_..." \
  -H "Content-Type: application/json" \
  -d '{ "moduleVersion": "1.0.0", "platform": "prestashop" }'

Ожидается 200 с projectId, indexSlug, метаданными connector. Возвращённый здесь projectId — это то, что вы передаёте как :projectId в последующих вызовах синхронизации.

Если ответ говорит, что коннектор disabled или not_found, повторно включите его из Коннекторы → коннектор → Настройки.

Проверка 3: жизненный цикл задачи синхронизации

Задача синхронизации проходит через:

pending → running → completed (или failed)
curl -X GET https://app.aacsearch.com/api/v1/projects/<projectId>/sync-jobs \
  -H "Authorization: Bearer aa_admin_..."

Строки задачи включают status, documentsTotal, documentsProcessed, error, startedAt, completedAt.

СтатусДействие
pending > 5 минОчередь воркеров заполнена — см. Ошибки индексации
running > 30 мин для < 10k док.Исследовать; сообщить ID задачи в поддержку
failedПроверить поле error; см. частые ошибки ниже
completed, но данные всё ещё устарелиДельта-курсор; см. Проверку 5

Проверка 4: полный vs дельта-режим

Разные коннекторы поддерживают разные режимы. Ответ handshake объявляет какие:

{
  "connector": {
    "id": "prestashop",
    "syncModes": ["full", "delta"]
  }
}

Если ваш коннектор поддерживает только full, а вы вызываете sync/delta, запрос возвращает 400 sync_mode_not_supported. Переключитесь на sync/full (медленнее, но работает всегда).

Для высокочастотного отслеживания изменений sync/delta — правильный выбор: он отправляет только документы, изменённые с последнего курсора.

Проверка 5: дельта-курсор застрял

sync/delta управляется курсором, хранящимся в коннекторе. Если курсор неверен (например, сброшен на далеко будущую метку времени), ничего нового не будет подобрано.

Сбросьте курсор из собственного UI администрирования коннектора (каждый CMS-модуль имеет кнопку «принудительная полная повторная синхронизация») или вызовите sync/full один раз для заполнения.

# Сброс и переустановка базовой линии
curl -X POST https://app.aacsearch.com/api/projects/<projectId>/sync/full \
  -H "Authorization: Bearer ss_connector_..." \
  -H "Content-Type: application/json" \
  -d '{ "products": [...] }'

После успешного sync/full локальный курсор коннектора должен продвинуться до «сейчас».

Проверка 6: сетевая доступность

Если хост, на котором работает коннектор, находится в частной сети, он должен иметь возможность достичь https://app.aacsearch.com исходяще на порт 443. Проверьте:

curl -v https://app.aacsearch.com/api/health
# ожидается HTTP/1.1 200 OK

Если не удаётся, файрвол или прокси блокирует исходящий трафик. Добавьте app.aacsearch.com в белый список.

Проверка 7: область действия токена коннектора

Токен коннектора должен иметь область connector_write. Если вы по ошибке создали ключ ss_search_* и попытались использовать его как токен коннектора, каждый вызов коннектора вернёт 403 forbidden.

// Серверная сторона, с административным ключом
const keys = await admin.listKeys();
const yours = keys.find((k) => k.id === "key_...");
console.log(yours.scopes); // должно содержать "connector_write"

Создайте правильный тип в Поиск → API-ключи → Создать ключ → тип "Connector". См. API-ключи.

Частые ошибки задач

error упавшей задачиВероятная причина
validation_failedНесоответствие схемы по документу — см. Ошибки индексации
batch_too_largeБолее 1000 документов в одном пакете
payload_too_largeОдин документ > 1 МБ
index_not_foundindexSlug не существует для этой организации
quota_exceededДостигнут лимит тарифа — см. Лимиты биллинга
worker_timeoutВоркер превысил потолок времени на задачу — разделите на меньшие пакеты

Матрица решений

ДиагнозРешение
Heartbeat 401/403Создать свежий токен коннектора
Процесс не запущенПерезапустить коннектор; просмотреть его лог
Кеш дашбордаПодождать 2 мин после успешного heartbeat
Несоответствие режима синхронизацииПереключиться на режим, который рекламирует коннектор
Дельта-курсор застрялПринудительный sync/full для переустановки базовой линии
Сеть заблокированаДобавить app.aacsearch.com:443 в белый список исходящих
Неверная областьПересоздать токен с областью connector_write
Тайм-аут задачиРазделить на пакеты по < 500 документов

Диагностический пакет

ПолеПримечания
ID организацииобязательно
ID коннектораиз списка коннекторов
Префикс токена коннекторатолько первые 12 символов
Последний успешный heartbeat (UTC)из лога коннектора
ID и статус последней задачи синхронизациииз списка sync-jobs
Версия модуля коннекторасо страницы «О программе» CMS-модуля
Пример упавшего пакетаесли применимо

CMS-модули логируют полный запрос/ответ каждого вызова синхронизации. Приложите лог коннектора за окно вокруг сбоя — он обычно показывает причину без дальнейшего расследования.

Связанные страницы

On this page