Skip to content

Руководство по конфигурации тенантов

ℹ️ Назначение: Настройка тенантов (клиентов) и их Telegram ботов для работы с системой.


📁 Структура конфигурации

Все тенанты находятся в одной папке config/tenant/.

Структура папки тенанта

config/tenant/
├── tenant_101/                 # Публичный тенант (ID = 101)
│   ├── tg_bot.yaml             # Конфигурация бота
│   ├── config.yaml             # Конфигурация тенанта (опционально)
│   ├── storage/                # Хранилище атрибутов тенанта (опционально)
│   │   └── ...                 # См. STORAGE_CONFIG_GUIDE.md
│   └── scenarios/              # Сценарии (опционально)
│       └── ...
├── tenant_137/                 # Публичный тенант (ID = 137)
│   └── ...
└── ...

Типы тенантов

  • Системные тенанты (ID < 100):

    • Ограничены в изменениях
    • Управляются системой
  • Публичные тенанты (ID ≥ 100):

    • Синхронизируются с внешним репозиторием Repository-Tenant
    • Полностью управляемые через конфигурацию
    • Используются для клиентских ботов и публичных сервисов

⚠️ ВАЖНО:

  • Название папки должно строго соответствовать формату tenant_<ID>, где <ID> — уникальный числовой идентификатор тенанта
  • Структура папок одинакова для всех тенантов независимо от типа

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

Публичные тенанты (ID ≥ 100) синхронизируются с внешним репозиторием Repository-Tenant через GitHub.

  • Обновление: Автоматическая синхронизация с GitHub
  • Управление: Через системные действия (sync_all_tenants, sync_tenant)
  • Назначение: Клиентские боты, публичные сервисы
  • Ручная синхронизация: Через системные действия при необходимости

🤖 tg_bot.yaml

Назначение: Конфигурация Telegram бота для тенанта.

Пример конфигурации:

yaml
# Конфигурация Telegram бота для тенанта
bot_name: "Мой бот"
bot_token: "1234567890:ABCdefGHIjklMNOpqrsTUVwxyz"
is_active: true

# Команды бота (опционально)
commands:
  - command: "start"
    description: "Основное меню"
    scope: "all_private_chats"
  - command: "help"
    description: "Справка"
    scope: "all_private_chats"

# Команды для очистки (опционально)
command_clear:
  - scope: "all_private_chats"        # Очистить команды в личных чатах
  - scope: "all_group_chats"          # Очистить команды в групповых чатах
  - scope: "chat"                     # Очистить команды в конкретном чате
    chat_id: 123456789
  - scope: "chat_member"              # Очистить команды у конкретного пользователя в чате
    chat_id: 123456789
    user_id: 987654321

Параметры:

  • bot_name — имя бота (отображается в системе)
  • bot_token — токен бота от BotFather (опционально)
  • is_active — активен ли бот (true/false)

💡 Хранение токена бота:

Токен бота может быть установлен двумя способами:

  1. Через конфигурацию (tg_bot.yaml) — при синхронизации конфигурации токен из файла сохраняется в базу данных
  2. Через мастер-бота — токен можно установить через интерфейс мастер-бота (бот должен быть создан через синхронизацию конфигурации)

Приоритет: При синхронизации конфигурации токен из tg_bot.yaml имеет приоритет и обновляет токен в базе данных.

💡 Лайфхак: Можно установить токен один раз через конфигурацию (tg_bot.yaml), затем удалить его из файла — токен останется в базе данных и будет использоваться дальше. Это позволяет не хранить токен в репозитории после первоначальной настройки.

  • commands — список команд бота (опционально):
    • command — название команды (без /)
    • description — описание команды
    • scope — область действия команды:
      • "default" — по умолчанию (личные чаты + группы)
      • "all_private_chats" — все личные чаты
      • "all_group_chats" — все групповые чаты
      • "chat" — конкретный чат (требует chat_id)
      • "chat_member" — конкретный пользователь в чате (требует chat_id и user_id)
  • command_clear — список областей для очистки команд (опционально):
    • scope — область для очистки команд (те же варианты, что и выше)
    • chat_id — ID чата (для scope: chat, chat_member)
    • user_id — ID пользователя (для scope: chat_member)

Важные особенности:

  • Активация ботов: Только боты с is_active: true будут запущены. Команды автоматически регистрируются в Telegram при запуске. Неактивные боты игнорируются системой
  • Области команд: Описаны в параметрах выше (default, all_private_chats, all_group_chats, chat, chat_member)

⚙️ config.yaml

Назначение: Конфигурация тенанта с атрибутами (API ключи, настройки и другие параметры).

Пример конфигурации:

yaml
# Конфигурация тенанта
ai_token: "sk-or-v1-..."  # AI API ключ для тенанта (опционально)

Параметры:

  • ai_token — AI API ключ для тенанта (опционально)
    • Используется для действий, требующих API ключ AI (например, completion, embedding, save_embedding)
    • Если не указан, действия могут использовать дефолтный ключ (если разрешено в настройках сервиса)

💡 Хранение конфигурации тенанта:

Конфигурация тенанта может быть установлена двумя способами:

  1. Через конфигурацию (config.yaml) — при синхронизации конфигурации атрибуты из файла сохраняются в базу данных
  2. Через мастер-бота — атрибуты можно обновить через интерфейс мастер-бота (аналогично токену бота)

Приоритет: При синхронизации конфигурации атрибуты из config.yaml имеют приоритет и обновляют значения в базе данных.

💡 Лайфхак: Можно установить токен один раз через конфигурацию (config.yaml), затем удалить его из файла — токен останется в базе данных и будет использоваться дальше. Это позволяет не хранить токен в репозитории после первоначальной настройки.

Использование в сценариях:

Все атрибуты из конфигурации тенанта автоматически доступны в сценариях через специальный словарь _config:

yaml
step:
  - action: "completion"
    params:
      prompt: "Привет!"
      # ai_token автоматически берется из _config.ai_token

Доступ через плейсхолдеры:

yaml
params:
  text: "Токен: {_config.ai_token|fallback:Не установлен}"

📂 scenarios/

Назначение: Организация сценариев тенанта. Все YAML-файлы из папки scenarios/ (включая подпапки) автоматически загружаются. Можно использовать подпапки для логической организации файлов.

📖 Подробное руководство: См. SCENARIO_CONFIG_GUIDE.md


💾 storage/

Назначение: Хранилище атрибутов тенанта (key-value структура для гибкого хранения настроек, лимитов, функций и других данных). Позволяет гибко управлять конфигурацией тенанта без изменения схемы БД.

📖 Подробное руководство: См. STORAGE_CONFIG_GUIDE.md

Coreness — Create. Automate. Scale.