Перенести настройки ИИ-провайдера в панель оператора #31

Open
stepan wants to merge 4 commits from t30_operator_ai_settings into main
Owner

Ссылка на задачу: #30

Провайдера, модель, baseUrl и API-ключ ИИ теперь задаёт оператор: конфигурация общая для всех
тенантов, пользователь сохраняет те же ИИ-функции без выбора и настройки моделей.

Что сделано

Хранение и ручки

  • Глобальный ключ aiConfig в public.global_settings + сервис AiGlobalConfigService
    (чтение/эффективные значения, шифрование ключа enc:, маска keyMasked, каталог провайдеров).
  • GET/PUT /api/operator/settings/ai-config, POST /api/operator/settings/ai-config/check;
    аудит ai_config_changed (детали без секрета).

Перевод вызовов

  • AiProviderConfigBuilder читает глобальную конфигурацию — на неё работают классификация,
    фильтр, ключи поиска и карточки всех тенантов. Конфигурация не задана — понятное
    AiUnavailableException («ИИ не настроен оператором системы»), без 500.

Снятие тенантной поверхности

  • Убраны aiProvider/aiConfigs/providers из GET/PATCH /api/settings
    (PublicSettingsDto, SettingsKeys, SettingKind.AiConfigs, SettingsDefaults,
    SettingsService.PatchSecrets/PublicForms); данные в БД не удаляются.
  • Удалён пользовательский POST /api/ai/check.

Интерфейс

  • Консоль оператора: новый раздел «ИИ» (провайдер из каталога, модель, baseUrl для локальных и
    «Другого», API-ключ, проверка связи, маска ключа).
  • Вкладка «ИИ» пользователя: убран выбор провайдера/модели и поле ключа; тумблеры ИИ,
    промпты, библиотека и «Мои промпты» без изменений.

Проверки

  • Сборка core 0/0; тесты core 1375 (добавлены AiGlobalConfigServiceTests,
    OperatorAiConfigEndpointsHttpTests, TestAiConfig) — зелёные.
  • Фронтенд: npm run build + npm run lint:i18n — чисто.
  • Документация: ТЗ, api-map, техническая документация, инструкция пользователя, контракт
    операторских настроек (docs/ + вики).

Нюанс

Живая проверка в локальном докере не выполнена: докер-демон на машине сейчас не запущен.

Ссылка на задачу: https://gitea.khomegeneric.keenetic.pro/rust/Deal/issues/30 Провайдера, модель, baseUrl и API-ключ ИИ теперь задаёт оператор: конфигурация общая для всех тенантов, пользователь сохраняет те же ИИ-функции без выбора и настройки моделей. ## Что сделано **Хранение и ручки** - Глобальный ключ `aiConfig` в `public.global_settings` + сервис `AiGlobalConfigService` (чтение/эффективные значения, шифрование ключа `enc:`, маска `keyMasked`, каталог провайдеров). - `GET/PUT /api/operator/settings/ai-config`, `POST /api/operator/settings/ai-config/check`; аудит `ai_config_changed` (детали без секрета). **Перевод вызовов** - `AiProviderConfigBuilder` читает глобальную конфигурацию — на неё работают классификация, фильтр, ключи поиска и карточки всех тенантов. Конфигурация не задана — понятное `AiUnavailableException` («ИИ не настроен оператором системы»), без 500. **Снятие тенантной поверхности** - Убраны `aiProvider`/`aiConfigs`/`providers` из `GET/PATCH /api/settings` (`PublicSettingsDto`, `SettingsKeys`, `SettingKind.AiConfigs`, `SettingsDefaults`, `SettingsService.PatchSecrets/PublicForms`); данные в БД не удаляются. - Удалён пользовательский `POST /api/ai/check`. **Интерфейс** - Консоль оператора: новый раздел «ИИ» (провайдер из каталога, модель, baseUrl для локальных и «Другого», API-ключ, проверка связи, маска ключа). - Вкладка «ИИ» пользователя: убран выбор провайдера/модели и поле ключа; тумблеры ИИ, промпты, библиотека и «Мои промпты» без изменений. ## Проверки - Сборка core 0/0; тесты core **1375** (добавлены `AiGlobalConfigServiceTests`, `OperatorAiConfigEndpointsHttpTests`, `TestAiConfig`) — зелёные. - Фронтенд: `npm run build` + `npm run lint:i18n` — чисто. - Документация: ТЗ, api-map, техническая документация, инструкция пользователя, контракт операторских настроек (docs/ + вики). ## Нюанс Живая проверка в локальном докере не выполнена: докер-демон на машине сейчас не запущен.
stepan added 3 commits 2026-09-15 22:01:52 +03:00
Провайдера, модель, baseUrl и API-ключ задаёт оператор: конфигурация хранится в public.global_settings (ключ aiConfig, шифрование enc:), читается общей для всех тенантов и используется AiProviderConfigBuilder во всех ИИ-вызовах. Настройки тенанта больше не содержат aiProvider/aiConfigs, пользовательский POST /api/ai/check удалён. Добавлены операторские ручки GET/PUT /api/operator/settings/ai-config и POST .../check с аудитом ai_config_changed.
Оператор выбирает провайдера из каталога, задаёт модель, baseUrl (для локальных и «Другого») и API-ключ, проверяет связь. Во вкладке «ИИ» пользователя выбор провайдера, модель и поле ключа убраны — остались тумблер ИИ, промпты и библиотека; прочие функции не изменились.
ТЗ, api-map, техническая документация, инструкция пользователя и контракт операторских настроек: настройки ИИ-провайдера перенесены в консоль оператора, пользовательский POST /api/ai/check удалён.
stepan requested review from rust 2026-09-15 22:02:01 +03:00
stepan added 1 commit 2026-09-15 22:09:21 +03:00
All checks were successful
ci / build-test (pull_request) Successful in 2m49s
This pull request doesn't have enough required approvals yet. 0 of 1 approvals granted from users or teams on the allowlist.
This pull request has official review requests.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin t30_operator_ai_settings:t30_operator_ai_settings
git checkout t30_operator_ai_settings
Sign in to join this conversation.