Biconnector 26.1700.0: Builder REST, секционные права и подписанный вход в Superset
Ломающее обновление
Удалены или изменены публичные API — прикладной код может перестать работать.
Biconnector 26.1700.0 меняет три публичных слоя: Builder REST, матрицу прав BI и вход в Superset. После обновления придётся проверить реализации IntegratorInterface, permission-set endpoint, создание внешних датасетов и TypeScript-клиенты AI-агента; пользователи получат секционные права и переработанную клавиатурную навигацию.
Новое
Builder получил действия Layout::getAction() и Layout::applyAction(). Первое читает layout доступного дашборда вместе с признаком published. Второе применяет пакет из 1–50 операций; реальное применение при dryRun=false разрешено только для черновика. Есть контроль версии и отдельная ошибка конфликта.
Действия доступны с feature-флагом BuilderAgentSkill.
Метод biconnector.builder.guide.get без section возвращает правила и оглавление, а с section — текст раздела, следующий раздел, ревизию и язык. Для 24 Builder REST-методов появились OpenAPI-описания, собранные из общего контракта аргументов. AI Assistant получил инструменты get_bi_guide, get_dashboard_layout и apply_dashboard_layout: guide доступен во всех BI-наборах, операции layout — в наборе для дашбордов.
При включённой оси табличных прав Builder REST, MCP и AI-инструменты читают и создают датасеты от имени текущего пользователя Superset. Отката к service account при отсутствии пользователя больше нет.
Закрытые таблицы, графики и фильтры дают раздельные ошибки доступа. DashboardSourceReaderInterface и DTO DashboardSource открывают positionJson, исходный JSON metadata, состояние публикации и chart IDs. В Dashboard добавлены совместимые необязательные поля positionJson и jsonMetadataSource.
Матрица прав разделена на основные права, группы дашбордов и группы таблиц. Новый набор API включает PermissionSection, базовые и предметные секции, SectionFactory и SectionSet; RoleManagementGuard отдельно проверяет создание, переименование и состав ролей. Появились действие ACTION_BIC_SECTION_EDIT_DASHBOARD_RIGHTS, permission ID BIC_SECTION_EDIT_DASHBOARD_RIGHTS и TableGroupManageRule. Экран показывает и сохраняет только доступные пользователю секции, а изменение ролей требует общего права управления ролями.
RequiredParameters::getList() читает обязательные URL-параметры из фактических native filters. Настройки принудительно оставляют такие параметры включёнными; публичная ссылка подставляет глобальные значения автора. Коннектор источника теперь может ответить через requiresPortalDataLock(), нужен ли ему общий BI-lock. Для состояния обновления облачного Superset добавлен Superset::getUpdatingStateAction().
Что сломается
IntegratorInterfaceизменил сигнатуры одиннадцати методов. Создание SQL- и virtual-датасетов теперь первым аргументом требуетUser, а шесть методов чтения —?User; старые вызовы этих восьми методов и сторонние реализации несовместимы.getChartById(),getDatasetById()иgetDashboardEmbeddedCredentials()получили хвостовой?User = null: прежние вызовы трёх методов работают, но реализации интерфейса должны добавить параметр. ВgetDemoEmbeddedCredentials()именованный аргументreportCode:надо заменить наdashboardCode:.PermissionSetService::getResponse()вместо одного аргумента принимает$login,$loginSignи$key. При выключенной оси табличных прав публичный BI endpoint сразу возвращаетaxis_enabled=false. При включённой оси он принимаетloginв JSON-теле и требуетlogin_sign: lowercase HMAC-SHA256 отbx-user:<login>с BI-ключом. Отсутствующий логин даётBAD_REQUEST, отсутствующая или неверная подпись —BAD_SIGNATURE. Контракт подписи вынесен вLoginSignature::sign()иLoginSignature::isValid().- Builder REST отклоняет неизвестные поля, неверные типы, пропущенные обязательные значения, выход за диапазоны и нарушения доменных правил с ошибкой
INVALID_ARGUMENT. PermissionConfigтребуетSectionSet;DashboardGroupsField— третий аргумент?array $requiredParamList; защищённыйNameFieldAssembler::getPinButton()— аргумент$title. Прямые вызовы и старые наследники надо обновить.- Внешний датасет нельзя создать без хотя бы одной группы таблиц даже при выключенной оси прав: контроллер возвращает
TABLE_GROUP_REQUIRED, форма импорта блокирует сохранение. Ссылку входа в Superset теперь получают только пользователи сACTION_BIC_DASHBOARD_EDIT; одного права просмотра недостаточно. - Публичная ссылка выпускает guest token от Superset-пользователя автора и ограничивает данные его правами.
SHARE_UNAVAILABLEвозвращается, если автора нет, ссылка заблокирована или автор потерялACTION_BIC_DASHBOARD_SHARE. Ошибка создания или синхронизации пользователя Superset даётDASHBOARD_UNAVAILABLE; fallback на администратора Superset убран. - Из экспортируемого
AiAgentConnectionParamsудалено полеoperations. Взамен доступныonStatusChange,readStatus()иsetAnchor(); типизированные object literals со старым полем перестанут собираться.
Deprecated
Bitrix\BIConnector\Access\Model\UserAccessItem::fillDefaultTableGroupAccess(int $groupId) помечен @deprecated, замена не указана. Новая группа таблиц больше не открывается автоматически ни одной роли, поэтому рассчитывать на прежнее поведение при создании группы нельзя.
БД
Схема таблиц, колонки и индексы не менялись.
Мигратор секций выдаёт право групп дашбордов ролям, которые раньше управляли правами, и все операции табличной оси на системных группах. Шаги идемпотентны; незавершённая установка продолжает их агентом раз в сутки. Version15 очищает PERMISSION_HASH пользователей Superset, поэтому роли синхронизируются при следующем входе, а UPDATED и CLIENT_ID сохраняются.
Агент CrmContactLinkTableGroupBindingAgent::run() удалён из декларативного списка вместе с классом. Новые обработчики HR-событий и изменений разделов инфоблока сбрасывают справочники USER_DEPARTMENT и DEPARTMENT_PARENT_AGGREGATION, когда меняется структура подразделений.
Мелочи и находки
- ClickHouse не занимает общий порталовый BI-lock и основной пул запросов. Для него выделены три слота, результат ограничен 1 ГБ с запасом 64 МБ под HTTP body.
- Во время обновления облачного Superset раздел BI показывает заглушку, проверяет состояние каждые 30 секунд и перезагружается после завершения. Метка живёт 1800 секунд; self-hosted этот режим не использует.
- Витрина AI-агентов получила статичные hero-иллюстрации, карточки задач, имя агента и управление внешним подключением со сроком действия. Интерфейс также показывает состояние подключения.
- Доступность доработана по всей BI-части: клавиатурные меню на детальной странице, live-анонсы статусов и ошибок, focus traps в публичной ссылке и экспорте, возврат фокуса в гридах и списках дашбордов, датасетов и источников. Редактор групп, карточка с именами авторов, импорт, карточки настроек и публичные ссылки получили
aria-*и доступные подсказки; импорт сохраняется поCtrl+Enter, а список дашбордов показывает статусы и промо AI без потери фокуса.
Устаревшие и удалённые API в этой версии
| Символ | Статус | Чем заменять |
|---|---|---|
Bitrix\BIConnector\Access\Model\UserAccessItem::fillDefaultTableGroupAccess(int $groupId)
|
Deprecated | — |