Админка

«Админка» — консоль владельца установки. Пункт меню появляется только у пользователя с глобальной ролью admin, и все её запросы к API закрыты тем же правом: у обычного редактора эти данные не откроются, даже если он наберёт адрес вручную.

Экран разделён на три вкладки: «Пользователи», «Тарифы» и «Журнал аудита».

app.iterna.ai

Тарифы и пользователи

Пользователи

1–50 из 214

EmailРольТарифКредитыСтатус
ada@example.comадминpaid1 240активна
boris@example.comредакторfree18активна
carol@example.comредакторpaid0приостановлен

Пользователи

Поиск по email или имени, постранично по 50 записей. В таблице — роль аккаунта, назначенный тариф, остаток кредитов и статус подписки. Клик по строке открывает карточку пользователя, а в ней четыре блока.

Роль аккаунтаПодпискаКвоты и использованиеПереопределения

Роль аккаунта. Переключатель «редактор» / «админ». Роль читается из базы на каждый запрос, поэтому повышение и понижение действуют сразу, без перевыпуска токена. Админ обходит тарифные ограничения — выдавать эту роль вместо повышенных лимитов не стоит.

Подписка. Выбор тарифа, баланс кредитов и статус («активна» или «приостановлена»). Кнопка «Применить подписку» записывает всё три значения разом.

Квоты и использование. Баланс, израсходованные и включённые в тариф кредиты, полоски занятого места по базе знаний, файлам и базе данных, а также действующие значения параллельности и таймаута. Ниже — полный список действующих лимитов; те из них, что заданы персонально, помечены значком «переопределено».

Персональные переопределения. Форма поверх тарифа: любое поле можно изменить только для этого пользователя, пустое поле возвращает значение тарифа. Сначала нужно назначить тариф — переопределения без него не сохраняются.

Тарифы

Тариф — это шаблон лимитов, который потом назначают пользователям на вкладке «Пользователи». В списке видны код, название, описание, число настроенных ограничений и метки: «системный», «активный» или «неактивный».

Редактор тарифа открывается кнопкой «Изменить», новый создаётся кнопкой «Новый тариф». Код (free, paid, custom …) задаётся при создании и дальше неизменяем — по нему тариф находят в коде и миграциях. Системные тарифы удалить нельзя; у остальных рядом есть корзина с подтверждением.

Ограничения сгруппированы по смыслу: кредиты и период их начисления, параллельность и исполнение, квоты хранилища (значение 0 = без ограничения), штучные лимиты (воркфлоу, коллекции, базы знаний, файлы, участники), функции-переключатели (публичный чат, свои LLM-интеграции, white-label, перерасход кредитов). Отдельный блок «Дополнительно» редактируется как сырой JSON: списки разрешённых типов нод, моделей, видов интеграций и потолков параметров нод. Некорректный JSON форма не принимает, а неизвестный ключ отвергает сервер.

Журнал аудита

Хронология чувствительных действий, поиск по названию действия, постранично по 50 записей. В таблице — время, действие, результат (success или failure), инициатор и рабочее пространство. Клик по строке раскрывает карточку с целью действия, IP-адресом и полным JSON деталей.

Записываются, в частности: входы и регистрации (auth.login, auth.register), смена роли аккаунта (user.role_changed), операции с тарифами и подписками (plan.created, plan.updated, plan.deleted, subscription.assigned), работа с секретами и интеграциями (secret.*, connection.*), изменения рабочего пространства (workspace.member.*, workspace.brand.updated, workspace.db_quota_changed), оплата (billing.*), очистка истории Telegram (telegram.history.erase) и действия модерации (telegram.moderate.*).

Неудачная попытка входа тоже попадает в журнал — с результатом failure, — поэтому подбор пароля виден без дополнительных инструментов.

Что дальше