⌨ CLI-утилита

Для администраторов: CLI-утилита `sku-cli` позволяет управлять сервисом из командной строки — от поиска до управления моделями. Справка встроена: `sku-cli --help` и `sku-cli <команда> --help`.

Общие параметры

# Указать сервер явно
    sku-cli -s http://localhost:8081 health

    # Или через переменную окружения
    export SKU_CLI_SERVER=http://localhost:8082
    sku-cli health

    # Тихий режим (только JSON) — только флаг `-q`, env не поддерживается
    sku-cli -q search "болт" --format json

    # Авторизация по API-ключу (если включена) — только флаг `-a`, env не поддерживается
    sku-cli -a secret-key search "болт"

    # Загрузить config.toml (нужен для csv.default_delimiter и др.)
    sku-cli --config /etc/sku-search/config.toml health
Глобальные флаги: -s / --server, -a / --api-key, -q / --quiet, -c / --config. Переменные окружения поддерживаются только для SKU_CLI_SERVER.

1. Поиск

Команда search принимает позиционный запрос (название) и дополнительные фильтры. UUID длиной 36 символов автоматически интерпретируется как id.

# Обычный поиск
    sku-cli search "болт м16" --limit 5

    # Поиск по коду, артикулу, штрихкоду
    sku-cli search --code CSV-001 --art ART-42
    sku-cli search --barcode 4601234567890 --barcode 4609876543210
    sku-cli search --id 550e8400-e29b-41d4-a716-446655440000

    # Поиск с указанием стратегии (принимается везде, эффект только в PRO)
    sku-cli search "шуруповерт" --strategy hybrid --limit 10

    # Поиск только по динамическим/extra-полям (PRO only)
    sku-cli search "" --field supplier="ООО Ромашка" --dynamic-only
    sku-cli search "болт" --field material=сталь --field color=черный

    # Поиск с дополнительными 1С-полями
    sku-cli search "болт" --type "крепеж" --desc "оцинкованный" --ref "uuid-123"

    # Поиск с детальной статистикой
    sku-cli search "болт" --show-stats --format json

Стратегии поиска

Флаг --strategy принимается в обеих редакциях, но эффект имеет только в PRO (во Free любое значение сводится к fs_only).

  • fs_only — только полнотекстовый поиск (default).
  • embedding_only — только векторный (семантический) поиск (PRO).
  • hybrid — полнотекстовый поиск + эмбеддинги, взвешенный скор (PRO).
  • parallel — полнотекстовый поиск и эмбеддинги параллельно, быстрее, но выше нагрузка (PRO).

2. Добавление товаров

Команда add загружает JSON-файл с массивом объектов ItemQuery.

# Прямая загрузка
    sku-cli add items.json

    # Проверка без записи
    sku-cli add items.json --dry-run

    # Только полнотекстовый индекс (без эмбеддингов, быстрее)
    sku-cli add items.json --fs-only

Пример файла items.json:

[
      {
        "id": "ID-001",
        "name": "Болт М6x20",
        "code": "CSV-001",
        "art": "ART-001",
        "barcode": ["4601234567890"],
        "type": "крепеж",
        "material": "сталь",
        "color": "оцинкованный"
      }
    ]
Поля `id` и `name` обязательны. Поля `code`, `art`, `barcode` — основные идентификаторы. Все остальные поля сохраняются как extra-атрибуты и доступны для поиска через `-F`.

3. Импорт из CSV

Команда import преобразует CSV в батчи /add.

# Базовый импорт (батчи по 500 строк — лимит сервера)
    sku-cli import --csv items.csv

    # Импорт демо-данных из архива
    sku-cli import --csv data/demo-data.csv --batch-size 500

    # Сухой запуск
    sku-cli import --csv items.csv --dry-run

    # Пропуск ошибок и свой размер батча
    sku-cli import --csv items.csv --skip-errors --batch-size 500

    # Нестандартный разделитель через флаг
    sku-cli import --csv items.csv --delimiter ';'

    # Разделитель по умолчанию из config.toml
    sku-cli --config config.toml import --csv items.csv

    # Без эмбеддингов
    sku-cli import --csv items.csv --fs-only

CSV должен содержать колонки id и name. Рекомендуемые колонки: code, art, barcode, type. Остальные колонки импортируются как extra-атрибуты. Сервер принимает батчи максимум 500 строк; CLI по умолчанию использует 500.

4. Экспорт

# JSON в stdout
    sku-cli export --format json --limit 1000 > backup.json

    # CSV в файл
    sku-cli export --format csv --limit 10000 --output export.csv

    # Постранично
    sku-cli export --format json --offset 1000 --limit 1000 > page2.json

5. Удаление

# По одному ID
    sku-cli delete "ID-001"

    # Несколько ID
    sku-cli delete "ID-001" "ID-002" "ID-003"

    # Из файла (один ID на строку)
    sku-cli delete --file ids.txt

6. Обратная связь (feedback)

Помогает обучению поиска. Регистрирует, какой результат был выбран для запроса.

# Подтвердить релевантность (для обучения синонимов важно передать product_name)
    sku-cli feedback --query "болт м10" --matched-id "ID-001" --action accept --product-name "Болт М10х40 оцинкованный"

    # Отметить нерелевантность
    sku-cli feedback --query "болт м10" --matched-id "ID-002" --action reject

    # Запрос без результатов
    sku-cli feedback --query "перфоратор бош" --action zero_result

    # Дополнительные опции: --product-art, --product-barcode, --matched-by, --position, --session-id, --expected-id

7. Синонимы

# Добавить синонимы
    sku-cli synonyms add --word "цинк" --expansions "оцинкованный,zn,zinc"

    # Список всех синонимов
    sku-cli synonyms list

    # Фильтр по слову
    sku-cli synonyms list --word "цинк"

    # Удалить синоним
    sku-cli synonyms remove --word "цинк"

8. Администрирование индекса (PRO only)

# Статистика индекса
    sku-cli index-stats

    # Оптимизация индекса (мерж сегментов)
    sku-cli optimize

    # Очистка кэша запросов
    sku-cli cache-clear

    # Полная очистка индекса (ОСТОРОЖНО!)
    sku-cli clear --force
Все команды этого раздела работают только при подключении к PRO-серверу. Во Free-сборке соответствующие HTTP-роуты отсутствуют, и CLI получит 404.

9. Аналитика и обучение (PRO)

# Топ запросов
    sku-cli top-queries --limit 20

    # Статистика аналитики
    sku-cli analytics stats

    # Рекомендации по тюнингу
    sku-cli analytics tuning

    # Сброс накопленной аналитики
    sku-cli analytics reset

    # Предложения синонимов на основе фидбека
    sku-cli learn

10. Управление эмбеддингами (PRO)

# Статистика эмбеддинг-движка
    sku-cli embedding stats

    # Статус фоновой очереди
    sku-cli background

    # Переиндексация векторов (синхронно)
    sku-cli embedding reindex

    # Переиндексация векторов в фоне
    sku-cli embedding reindex --background

    # Оптимизация векторного индекса
    sku-cli embedding optimize

    # Очистка кэша модели
    sku-cli embedding cache-clear

    # Удалить все векторы (ОСТОРОЖНО!)
    sku-cli embedding clear

11. Иерархия (PRO)

# Разузлование (дети)
    sku-cli hierarchy "ID-001" --direction down --depth 3

    # Where-used (родители)
    sku-cli hierarchy "ID-001" --direction up --depth 3

    # С кросс-кодами и JSON-выводом
    sku-cli hierarchy "ID-001" --include-cross --format json

12. Утилиты

# Проверка здоровья сервера
    sku-cli health
    sku-cli health | jq .db_record_count

    # Текущая конфигурация поиска
    sku-cli config

    # Версия CLI
    sku-cli version

    # Автодополнение для bash
    sku-cli completion -s bash > /etc/bash_completion.d/sku-cli

    # Автодополнение для zsh
    sku-cli completion -s zsh > ~/.zsh/completions/_sku-cli

    # Man-страница
    sku-cli man > /tmp/sku-cli.1

Быстрый справочник по переменным окружения

SKU_CLI_SERVER http://localhost:8080
Базовый URL сервиса. Для Free используйте `http://localhost:8081`, для PRO — `http://localhost:8082`.
Поддерживается только SKU_CLI_SERVER. API-ключ (-a) и тихий режим (-q) задаются только флагами, переменных окружения для них нет.
Пример использования в скриптах:
#!/bin/bash
    # Автоматическая синхронизация с 1С

    # Выгружаем все товары в CSV
    sku-cli export --format csv --limit 50000 --output /tmp/export.csv

    # Импортируем новые товары из прайса
    sku-cli import --csv /tmp/price.csv --skip-errors

    # Оптимизируем индекс
    sku-cli optimize

    # Получаем статистику
    sku-cli health | jq .db_record_count