botruntime
Эксплуатация

Управление: данные, подключения, доступ

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

Управление — это разделы консоли для бота и вашего воркспейса. Они доступны и до первого Production-deploy: пустые состояния подскажут следующий шаг. Здесь вы правите данные таблиц, скачиваете файлы, подключаете интеграции, задаёте секретные переменные, зовёте участников, читаете аудит и выпускаете токены для CLI.

Консоль ничего не хранит сама. Она показывает и меняет состояние на API-бэкенде.

Разделы отличаются областью действия и правами.

РазделОбластьКто читаетКто меняет
Таблицы, Файлы, Операции, Интеграции, Переменныеботлюбой участникowner / admin
Участникиворкспейслюбой участникowner
Аудитворкспейсowner / admin— (только чтение)
Аккаунт, токенываш аккаунтвывы

Роли и воркспейсы разобраны в разделе мультитенантность. Ниже — что делает каждый раздел.

Таблицы

Раздел показывает таблицы бота: те, что бот объявил в коде и синкнул на деплое. По каждой таблице список даёт имя, число колонок, время обновления и два флага — заморожена (деплой не трогает схему) и вычисляемая. Клик по строке открывает грид данных.

Грид отдаёт по 25 строк на страницу. Он выводит служебную колонку id, а при активном семантическом поиске — ещё колонку similarity. Тип колонки консоль берёт из схемы: string, number, boolean, object, array и date (строка с форматом date-time).

В заголовке колонки видны индикаторы. Значок поиска: колонка индексируется для семантического поиска. Значок вычисления: колонку считает движок, вручную её не поправить. Устаревшее значение помечается точкой прямо в ячейке.

Сортировка трёхпозиционная. Клик по заголовку гонит по возрастанию → по убыванию → без сортировки. Колонки object и array не сортируются.

Фильтр и поиск

Над гридом два независимых инструмента. Поиск семантический — по колонкам, помеченным как индексируемые. Фильтр — построитель условий в стиле Mongo. Каждое правило — это колонка, оператор и значение. Несколько правил комбинируются по И ($and). Набор операторов зависит от типа колонки.

ОператорЗначениеДля каких типов
$eq / $neравно / не равновсе, кроме массива и объекта
$gt / $gte / $lt / $lteбольше / меньше (и «или равно»)число, дата
$in / $ninв списке / не в спискестрока, число, дата
$regexсовпадение по регулярному выражениюстрока
$existsполе присутствует / отсутствуетвсе
$sizeдлина массивамассив
$modостаток от деления [делитель, остаток]число

Построитель собирает из правил обычный JSON-фильтр. Тот же формат принимает findRows в коде бота:

фильтр из построителя
{
  "$and": [
    { "status": { "$in": ["open", "pending"] } },
    { "amountRub": { "$gte": 100000 } }
  ]
}

Счётчик «из N» есть только у чистого списка. С фильтром или поиском консоль отдаёт диапазон видимых строк (показаны 1–25) без итога: платформа не отдаёт честный отфильтрованный total, и консоль его не выдумывает. Пагинация идёт по признаку «есть ли следующая страница».

Правка строк

owner и admin правят или удаляют любую строку прямо в гриде. Кнопки появляются при наведении. Редактор показывает только объявленные не-вычисляемые колонки. Ввод приводится к типу колонки, пустое поле значит null. Сохранение идёт через upsertRows по ключу id, удаление — по id и необратимо. Участник с ролью member видит данные, но не правит их.

Запись в таблицу — это merge-patch по JSONB. Чтобы очистить опциональную колонку, задайте ей явный null. В редакторе консоли пустое поле уже означает null.

Файлы

Раздел перечисляет файлы бота из хранилища: ключ, тип содержимого, точное текущее поколение, SHA-256, размер и состояние. Рядом можно скопировать точный селектор {id,generation}. Если загрузка ещё не опубликована, поколение не показывается.

Удаление сразу убирает логический файл из каталога и поиска. Поколение, уже закреплённое за длительной операцией, может храниться до конца установленного срока: это позволяет операции продолжить чтение прежних байтов. Восстановить удалённый файл через консоль нельзя.

Скачивание идёт авторизованным запросом с Bearer-токеном, а не по прямой ссылке: сырой URL без токена вернул бы 401. Ошибка скачивания видна прямо в строке файла (например, HTTP 403), громко, а не тихо.

Как бот работает с файлами из кода (загрузка, приём присланного документа, передача PDF в LLM-шлюз), смотрите на странице файлы.

Операции интеграций

Раздел показывает длительные действия выбранного бота: состояние, ход выполнения, номер попытки, сроки, число закреплённых файлов и сводку контрольной точки. Список ограничен 100 строками на страницу, продолжается по курсору и фильтруется по состоянию и времени.

Входные данные, результат поставщика, служебные ключи, коды и тексты ошибок, а также значения контрольной точки намеренно не показываются. Состояние «Результат неизвестен» означает, что внешний запрос мог уже сработать. Консоль не предлагает слепой повтор: сначала нужно сверить результат у поставщика.

Интеграции

Раздел — каталог интеграций бота из двух блоков. Установленные — подключения этого бота со статусами. Доступные — определения из каталога, готовые к установке. Клик по карточке открывает страницу интеграции со своим URL.

Страница интеграции показывает метаданные определения (название, версия, описание, видимость), чипы способностей, документацию (readme) и список подключений. Чипы способностей — это каналы, экшены и события, которые интеграция даёт боту. Каждое подключение несёт свой ref, необязательный alias (канал) и статус: Подключено, Не подключено или Ошибка с причиной.

owner и admin устанавливают интеграцию, регистрируют подключение («Подключить») и удаляют его. Форма установки строится из configSchema: обязательные поля обязательны к заполнению, секретные вводятся как пароль.

Секретные поля интеграции передаются по HTTPS и шифруются на сервере — назад они не возвращаются. Отредактировать секрет можно только перезаписью.

Одну интеграцию можно установить несколько раз, например развести два канала. Тогда каждому подключению задайте свой alias. Без различающего alias повторная установка того же определения будет отклонена. Удаление подключения необратимо и отключает интеграцию от бота.

Secrets бота

Этот раздел хранит только зашифрованные secrets/env. Список показывает имя и время последнего изменения; значения наружу не отдаются. Публичная конфигурация из agent.config.ts — другой ресурс (bot.configuration.data) и управляется brt config.

owner и admin задают secret и удаляют его. То же самое делает brt secret set.

Значения переменных write-only: их нельзя прочитать, только перезаписать. Удалите переменную — при следующем старте бота она перестанет инжектиться. Проверьте, что бот без неё запустится.

Участники и роли

Раздел управляет доступом людей к воркспейсу. Список участников (email и роль) видит любой участник. Управление доступно только владельцу.

owner добавляет участника по email с ролью admin или member, меняет роль и удаляет участника. Строка владельца неизменяема: воркспейс не остаётся без owner. Удаление участника отбирает доступ к воркспейсу, но не трогает данные ботов.

РольДанные ботаУправление ботомУчастникиАудит
ownerчтение + правкададада
adminчтение + правкаданетда
memberтолько чтениенетнетнет

Аудит

Журнал аудита — обратно-хронологическая история значимых действий в воркспейсе: создание и удаление бота, передача бота, смена ролей участников, изменение интеграций. Доступен owner и admin.

Каждая запись несёт действие, цель, актора и время, а при наличии — новое значение. Действие идёт локализованной меткой с тоном: «Удалён бот» подсвечивается как опасное. Цель — это имя или id ресурса. Актор-человек показывается по email; машинное действие отмечается как API-ключ без человека. Лента подгружается страницами по keyset-курсору («Загрузить ещё»).

Запрос журнала стартует только после того, как подтверждена роль owner / admin — чтобы не биться в 403 до загрузки прав. Пока роль не подтверждена, консоль показывает скелет, а не ошибку.

Аккаунт и токены доступа

Раздел «Аккаунт» — вне воркспейсов, он про вас лично. Показывает email со статусом подтверждения и отображаемое имя, которое можно поменять. Здесь же вы выпускаете личные токены доступа (PAT) для ручного входа и автоматизации. В повседневной работе CLI brt входит в облако botruntime.ru через device authorization: достаточно выполнить brt login.

Токен выпускается с меткой. Значение показывается ровно один раз — в копируемой панели сразу после выпуска. Дальше сервер отдаёт только id, метку и дату создания. Для ручного входа выполните brt login --no-device и вставьте PAT в защищённый запрос CLI; для CI используйте явные auth-флаги из справочника CLI. Отзыв токена необратим и мгновенен: CLI с отозванным токеном тут же получит 401.

Секреты в платформе всюду write-only и показываются максимум один раз: ключ бота при провижене, значение PAT при выпуске, значения переменных и секретные поля интеграций. Потеряли — выпускайте заново, восстановить нельзя.

Дальше

On this page