mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-19 10:36:33 +08:00
dbeaver/pro#9994 fixes broken AI settings to fix the AI form flow (#4540)
* dbeaver/pro#9994 fixes broken AI settings to fix the AI form flow * dbeaver/pro#9994 reverts ai settings changes * dbeaver/pro#9994 fix returning empty configuration id * dbeaver/pro#9994 adds validations and info messages to handle empty default configuration case * dbeaver/pro#9994 syncs resources to get changes from backend ai settings * dbeaver/pro#9994 cleanup * dbeaver/pro#9994 allows to reset language --------- Co-authored-by: Ainur <ainur.iagudin@dbeaver.com> Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
This commit is contained in:
co-authored by
Ainur
Daria Marutkina
parent
9078a379b0
commit
2d0b7d428c
+6
-10
@@ -75,16 +75,12 @@ public class WebServiceAI implements DBWServiceAI {
|
||||
public WebAISettingsConfig getAiSettings() throws DBWebException {
|
||||
WebAIUtils.validateAiPluginEnabled();
|
||||
AISettings settings = AISettingsManager.getInstance().getSettings();
|
||||
try {
|
||||
AIConfigurationProfile configuration = settings.getDefaultConfiguration();
|
||||
return new WebAISettingsConfig(
|
||||
configuration.getEngineId(),
|
||||
configuration.getProfileId(),
|
||||
getAiLanguage()
|
||||
);
|
||||
} catch (DBException e) {
|
||||
throw new DBWebException(e);
|
||||
}
|
||||
AIConfigurationProfile configuration = settings.getDefaultConfigurationOrNull();
|
||||
return new WebAISettingsConfig(
|
||||
configuration == null ? "" : configuration.getEngineId(),
|
||||
configuration == null ? null : configuration.getProfileId(),
|
||||
getAiLanguage()
|
||||
);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -8,12 +8,14 @@
|
||||
import { observer } from 'mobx-react-lite';
|
||||
|
||||
import {
|
||||
Alert,
|
||||
ColoredContainer,
|
||||
Select,
|
||||
Container,
|
||||
Form,
|
||||
Group,
|
||||
GroupTitle,
|
||||
Text,
|
||||
ToolsAction,
|
||||
ToolsPanel,
|
||||
useAutoLoad,
|
||||
@@ -51,16 +53,6 @@ export const AIAdministrationPage = observer<{
|
||||
onSubmit: handleSave,
|
||||
});
|
||||
|
||||
function handleLanguageChange(value: string | null) {
|
||||
settingsInfoPart.state.language = value ?? '';
|
||||
}
|
||||
|
||||
function selectDefaultProfile(value: string | null) {
|
||||
if (value) {
|
||||
settingsInfoPart.state.defaultConfiguration = value;
|
||||
}
|
||||
}
|
||||
|
||||
async function handleSave() {
|
||||
const saved = await formState.save();
|
||||
|
||||
@@ -97,28 +89,33 @@ export const AIAdministrationPage = observer<{
|
||||
<Group gap keepSize medium>
|
||||
<Container gap vertical>
|
||||
<GroupTitle>{translate('ai_administration_settings')}</GroupTitle>
|
||||
{!profiles.length && (
|
||||
<Alert title={translate('plugin_ai_administration_default_profile_no_profiles_title')}>
|
||||
<Text>{translate('plugin_ai_administration_default_profile_no_profiles_message')}</Text>
|
||||
</Alert>
|
||||
)}
|
||||
<Select
|
||||
items={profiles}
|
||||
valueSelector={value => value.name}
|
||||
keySelector={value => value.id}
|
||||
value={settingsInfoPart.state.defaultConfiguration}
|
||||
state={settingsInfoPart.state}
|
||||
name="defaultConfiguration"
|
||||
description={translate('plugin_ai_administration_default_profile_description')}
|
||||
disabled={!profiles.length}
|
||||
iconSelector={value => aiEnginesResource.data.find(e => e.id === value.engineId)?.icon}
|
||||
small
|
||||
onSelect={selectDefaultProfile}
|
||||
>
|
||||
{translate('plugin_ai_administration_default_profile_label')}
|
||||
</Select>
|
||||
|
||||
<Combobox
|
||||
value={settingsInfoPart.state.language}
|
||||
name="language"
|
||||
state={settingsInfoPart.state}
|
||||
items={LANGUAGE_OPTIONS}
|
||||
description={translate('plugin_ai_administration_language_description')}
|
||||
allowCustomValue
|
||||
allowClear
|
||||
small
|
||||
onChange={handleLanguageChange}
|
||||
>
|
||||
{translate('plugin_ai_administration_language_label')}
|
||||
</Combobox>
|
||||
|
||||
@@ -40,6 +40,7 @@ export class AIProfilesResource extends CachedMapResource<string, AIProfile> {
|
||||
permissionsResource.require(this, EAdminPermission.admin).outdateResource(this);
|
||||
|
||||
this.onItemDelete.addHandler(() => aiSettingsResource.markOutdated());
|
||||
this.onItemUpdate.addHandler(() => aiSettingsResource.markOutdated());
|
||||
}
|
||||
|
||||
async create(config: AIProfileInput): Promise<AIAdminProfile> {
|
||||
|
||||
+2
-6
@@ -54,13 +54,9 @@ export class AdministrationAISettingsInfoPart extends FormPart<IAdministrationAI
|
||||
}
|
||||
|
||||
protected override async saveChanges(): Promise<void> {
|
||||
if (!this.state.defaultConfiguration) {
|
||||
return;
|
||||
}
|
||||
|
||||
await this.aiSettingsResource.saveSettings({
|
||||
defaultConfiguration: this.state.defaultConfiguration,
|
||||
language: this.state.language ?? undefined,
|
||||
defaultConfiguration: this.state.defaultConfiguration ?? undefined,
|
||||
language: this.state.language ?? '',
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@ export default [
|
||||
['plugin_ai_administration_language_length_validation_error', 'Die Sprache darf nicht länger als 128 Zeichen sein'],
|
||||
['plugin_ai_administration_default_profile_label', 'Standardprofil'],
|
||||
['plugin_ai_administration_default_profile_description', 'Profil, das standardmäßig für KI-Funktionen verwendet wird'],
|
||||
['plugin_ai_administration_default_profile_no_profiles_title', 'No profiles available'],
|
||||
['plugin_ai_administration_default_profile_no_profiles_message', 'Create a profile in the "{alias:plugin_ai_administration_profiles_title}" tab'],
|
||||
['plugin_ai_administration_profiles_title', 'Profile'],
|
||||
['plugin_ai_administration_profiles_table_empty_placeholder', 'Keine Profile gefunden. Erstellen Sie ein neues Profil'],
|
||||
['plugin_ai_administration_profile_column_name', 'Name'],
|
||||
|
||||
@@ -21,6 +21,8 @@ export default [
|
||||
['plugin_ai_administration_language_length_validation_error', 'Language must not be longer than 128 characters'],
|
||||
['plugin_ai_administration_default_profile_label', 'Default profile'],
|
||||
['plugin_ai_administration_default_profile_description', 'Profile used by default for AI features'],
|
||||
['plugin_ai_administration_default_profile_no_profiles_title', 'No profiles available'],
|
||||
['plugin_ai_administration_default_profile_no_profiles_message', 'Create a profile in the "{alias:plugin_ai_administration_profiles_title}" tab'],
|
||||
['plugin_ai_administration_profiles_title', 'Profiles'],
|
||||
['plugin_ai_administration_profiles_table_empty_placeholder', 'No profiles found. Create a new profile'],
|
||||
['plugin_ai_administration_profile_column_name', 'Name'],
|
||||
|
||||
@@ -21,6 +21,8 @@ export default [
|
||||
['plugin_ai_administration_language_length_validation_error', 'La langue ne doit pas dépasser 128 caractères'],
|
||||
['plugin_ai_administration_default_profile_label', 'Profil par défaut'],
|
||||
['plugin_ai_administration_default_profile_description', "Profil utilisé par défaut pour les fonctionnalités d'IA"],
|
||||
['plugin_ai_administration_default_profile_no_profiles_title', 'No profiles available'],
|
||||
['plugin_ai_administration_default_profile_no_profiles_message', 'Create a profile in the "{alias:plugin_ai_administration_profiles_title}" tab'],
|
||||
['plugin_ai_administration_profiles_title', 'Profils'],
|
||||
['plugin_ai_administration_profiles_table_empty_placeholder', 'Aucun profil trouvé. Créez un nouveau profil'],
|
||||
['plugin_ai_administration_profile_column_name', 'Nom'],
|
||||
|
||||
@@ -21,6 +21,8 @@ export default [
|
||||
['plugin_ai_administration_language_length_validation_error', 'Язык не должен превышать 128 символов'],
|
||||
['plugin_ai_administration_default_profile_label', 'Профиль по умолчанию'],
|
||||
['plugin_ai_administration_default_profile_description', 'Профиль, используемый по умолчанию для функций ИИ'],
|
||||
['plugin_ai_administration_default_profile_no_profiles_title', 'Нет доступных профилей'],
|
||||
['plugin_ai_administration_default_profile_no_profiles_message', 'Создайте профиль на вкладке "{alias:plugin_ai_administration_profiles_title}"'],
|
||||
['plugin_ai_administration_profiles_title', 'Профили'],
|
||||
['plugin_ai_administration_profiles_table_empty_placeholder', 'Профили не найдены. Создайте новый профиль'],
|
||||
['plugin_ai_administration_profile_column_name', 'Название'],
|
||||
|
||||
Reference in New Issue
Block a user