Управление: данные, подключения, доступ
Разделы консоли для задеплоенного бота и воркспейса: таблицы, файлы, интеграции, переменные, участники и роли, аудит, аккаунт и токены доступа.
Управление — это разделы консоли для уже задеплоенного бота и вашего воркспейса. Здесь вы правите данные таблиц, скачиваете файлы, подключаете интеграции, задаёте секретные переменные, зовёте участников, читаете аудит и выпускаете токены для 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.
Файлы
Раздел перечисляет файлы бота из хранилища: ключ, тип содержимого, размер и
статус (uploaded — загрузка завершена). Кнопка скачивания тянет байты и
сохраняет их локально.
Скачивание идёт авторизованным запросом с Bearer-токеном, а не по прямой
ссылке: сырой URL без токена вернул бы 401. Ошибка скачивания видна прямо в
строке файла (например, HTTP 403), громко, а не тихо.
Как бот работает с файлами из кода (загрузка, приём присланного документа, передача PDF в LLM-шлюз), смотрите на странице файлы.
Интеграции
Раздел — каталог интеграций бота из двух блоков. Установленные — подключения этого бота со статусами. Доступные — определения из каталога, готовые к установке. Клик по карточке открывает страницу интеграции со своим URL.
Страница интеграции показывает метаданные определения (название, версия,
описание, видимость), чипы способностей, документацию (readme) и список
подключений. Чипы способностей — это каналы, экшены и события, которые
интеграция даёт боту. Каждое подключение несёт свой ref, необязательный
alias (канал) и статус: Подключено, Не подключено или Ошибка с
причиной.
owner и admin устанавливают интеграцию, регистрируют подключение
(«Подключить») и удаляют его. Форма установки строится из configSchema:
обязательные поля обязательны к заполнению, секретные вводятся как пароль.
Секретные поля интеграции передаются по HTTPS и шифруются на сервере — назад они не возвращаются. Отредактировать секрет можно только перезаписью.
Одну интеграцию можно установить несколько раз, например развести два канала.
Тогда каждому подключению задайте свой alias. Без различающего alias
повторная установка того же определения будет отклонена. Удаление подключения
необратимо и отключает интеграцию от бота.
Переменные бота
Переменные — это секреты и настройки бота. Платформа инжектит их в рантайм как
env.X. Список видит любой участник, но показывает он только имя и время
последнего изменения: сами значения зашифрованы и наружу не отдаются.
owner и admin задают переменную (имя + значение) и удаляют её. То же самое
делает CLI: brt config set и 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.
Токен выпускается с меткой. Значение показывается ровно один раз — в
копируемой панели сразу после выпуска. Дальше сервер отдаёт только id, метку и
дату создания. Скопируйте токен сразу и вставьте его в brt login. Отзыв
токена необратим и мгновенен: CLI с отозванным токеном тут же получит 401.
Секреты в платформе всюду write-only и показываются максимум один раз: ключ бота при провижене, значение PAT при выпуске, значения переменных и секретные поля интеграций. Потеряли — выпускайте заново, восстановить нельзя.