mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2025-04-28 21:39:46 +00:00
Implemented remaining fields for EDI assistant
This commit is contained in:
parent
e1c62e8dfc
commit
c6f78fce36
@ -33,8 +33,8 @@
|
|||||||
}
|
}
|
||||||
</MudStack>
|
</MudStack>
|
||||||
|
|
||||||
<MudStack Row="@false" AlignItems="AlignItems.Stretch" Class="mb-3">
|
<MudStack Row="@false" Spacing="1" Class="mb-3">
|
||||||
<MudSelect T="DataSources" @bind-Value="@this.selectedDataSource" AdornmentIcon="@Icons.Material.Filled.Dataset" Adornment="Adornment.Start" Label="Data source" Variant="Variant.Outlined" Margin="Margin.Dense" Validation="@this.ValidateDataSource">
|
<MudSelect T="DataSources" @bind-Value="@this.selectedDataSource" AdornmentIcon="@Icons.Material.Filled.Dataset" Adornment="Adornment.Start" Label="Data source" Variant="Variant.Outlined" Margin="Margin.Dense" Validation="@this.ValidateDataSource" SelectedValuesChanged="@this.DataSourceWasChanged">
|
||||||
@foreach (var dataSource in Enum.GetValues<DataSources>())
|
@foreach (var dataSource in Enum.GetValues<DataSources>())
|
||||||
{
|
{
|
||||||
<MudSelectItem Value="@dataSource">@dataSource.Name()</MudSelectItem>
|
<MudSelectItem Value="@dataSource">@dataSource.Name()</MudSelectItem>
|
||||||
@ -46,14 +46,36 @@
|
|||||||
}
|
}
|
||||||
</MudStack>
|
</MudStack>
|
||||||
|
|
||||||
<MudStack Row="@false" AlignItems="AlignItems.Stretch" Class="mb-3">
|
@if(this.selectedDataSource > DataSources.FILE_SYSTEM)
|
||||||
|
{
|
||||||
|
<MudTextField T="string" @bind-Text="@this.dataSourceProductName" Label="Data source: product name" Validation="@this.ValidateDataSourceProductName" Variant="Variant.Outlined" Margin="Margin.Dense" UserAttributes="@USER_INPUT_ATTRIBUTES" Class="mb-3"/>
|
||||||
|
}
|
||||||
|
|
||||||
|
@if (this.NeedHostnamePort())
|
||||||
|
{
|
||||||
|
<div class="mb-3">
|
||||||
|
<MudStack Row="@true">
|
||||||
|
<MudTextField T="string" @bind-Text="@this.dataSourceHostname" Label="Data source: hostname" Validation="@this.ValidateHostname" Variant="Variant.Outlined" Margin="Margin.Dense" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
|
||||||
|
<MudNumericField Label="Data source: port" Immediate="@true" Min="1" Max="65535" Validation="@this.ValidatePort" @bind-Value="@this.dataSourcePort" Variant="Variant.Outlined" Margin="Margin.Dense"/>
|
||||||
|
</MudStack>
|
||||||
|
@if (this.dataSourcePort < 1024)
|
||||||
|
{
|
||||||
|
<MudText Typo="Typo.body2">
|
||||||
|
<b>Warning:</b> Ports below 1024 are reserved for system services. Your EDI server need to run with elevated permissions (root user).
|
||||||
|
</MudText>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
<MudStack Row="@false" Spacing="1" Class="mb-1">
|
||||||
<MudSelectExtended
|
<MudSelectExtended
|
||||||
T="Auth"
|
T="Auth"
|
||||||
ShrinkLabel="@true"
|
ShrinkLabel="@true"
|
||||||
MultiSelection="@true"
|
MultiSelection="@true"
|
||||||
MultiSelectionTextFunc="@this.GetMultiSelectionAuthText"
|
MultiSelectionTextFunc="@this.GetMultiSelectionAuthText"
|
||||||
@bind-SelectedValues="@this.selectedAuthenticationMethods"
|
SelectedValues="@this.selectedAuthenticationMethods"
|
||||||
Validation="@this.ValidateAuthenticationMethods"
|
Validation="@this.ValidateAuthenticationMethods"
|
||||||
|
SelectedValuesChanged="@this.AuthenticationMethodWasChanged"
|
||||||
Label="Authentication method(s)"
|
Label="Authentication method(s)"
|
||||||
Variant="Variant.Outlined"
|
Variant="Variant.Outlined"
|
||||||
Margin="Margin.Dense">
|
Margin="Margin.Dense">
|
||||||
@ -62,7 +84,20 @@
|
|||||||
<MudSelectItemExtended Value="@authMethod">@authMethod.Name()</MudSelectItemExtended>
|
<MudSelectItemExtended Value="@authMethod">@authMethod.Name()</MudSelectItemExtended>
|
||||||
}
|
}
|
||||||
</MudSelectExtended>
|
</MudSelectExtended>
|
||||||
<MudTextField T="string" @bind-Text="@this.authDescription" ShrinkLabel="@true" Label="Describe how you planned the authentication" Validation="@this.ValidateAuthDescription" Variant="Variant.Outlined" Margin="Margin.Normal" Lines="3" AutoGrow="@true" MaxLines="6" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
|
<MudTextField T="string" @bind-Text="@this.authDescription" Label="@this.AuthDescriptionTitle()" Validation="@this.ValidateAuthDescription" Variant="Variant.Outlined" Margin="Margin.Normal" Lines="3" AutoGrow="@true" MaxLines="6" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
|
||||||
</MudStack>
|
</MudStack>
|
||||||
|
|
||||||
|
@if (this.selectedAuthenticationMethods.Contains(Auth.KERBEROS))
|
||||||
|
{
|
||||||
|
<MudSelect T="OperatingSystem" @bind-Value="@this.selectedOperatingSystem" Label="Operating system on which your EDI will run" Variant="Variant.Outlined" Margin="Margin.Dense" Validation="@this.ValidateOperatingSystem" Class="mb-1">
|
||||||
|
@foreach (var os in Enum.GetValues<OperatingSystem>())
|
||||||
|
{
|
||||||
|
<MudSelectItem Value="@os">@os.Name()</MudSelectItem>
|
||||||
|
}
|
||||||
|
</MudSelect>
|
||||||
|
}
|
||||||
|
|
||||||
|
<MudTextField T="string" @bind-Text="@this.retrievalDescription" Validation="@this.ValidateRetrievalDescription" Label="Describe your data retrieval process" Variant="Variant.Outlined" Margin="Margin.Normal" Lines="6" AutoGrow="@true" MaxLines="12" UserAttributes="@USER_INPUT_ATTRIBUTES" Class="mb-3"/>
|
||||||
|
<MudTextField T="string" @bind-Text="@this.additionalLibraries" Label="(Optional) Additional libraries" HelperText="Do you want to include additional libraries? Then name them and briefly describe what you want to achieve with them." Variant="Variant.Outlined" Margin="Margin.Normal" Lines="3" AutoGrow="@true" MaxLines="12" UserAttributes="@USER_INPUT_ATTRIBUTES" Class="mb-3"/>
|
||||||
|
|
||||||
<ProviderSelection @bind-ProviderSettings="@this.providerSettings" ValidateProvider="@this.ValidatingProvider"/>
|
<ProviderSelection @bind-ProviderSettings="@this.providerSettings" ValidateProvider="@this.ValidatingProvider"/>
|
@ -35,10 +35,45 @@ public partial class AssistantEDI : AssistantBaseCore
|
|||||||
|
|
||||||
protected override void ResetFrom()
|
protected override void ResetFrom()
|
||||||
{
|
{
|
||||||
|
if (!this.MightPreselectValues())
|
||||||
|
{
|
||||||
|
this.selectedProgrammingLanguage = ProgrammingLanguages.NONE;
|
||||||
|
this.otherProgrammingLanguage = string.Empty;
|
||||||
|
this.selectedDataSource = DataSources.NONE;
|
||||||
|
this.dataSourceProductName = string.Empty;
|
||||||
|
this.otherDataSource = string.Empty;
|
||||||
|
this.dataSourceHostname = string.Empty;
|
||||||
|
this.dataSourcePort = null;
|
||||||
|
this.selectedAuthenticationMethods = [];
|
||||||
|
this.authDescription = string.Empty;
|
||||||
|
this.selectedOperatingSystem = OperatingSystem.NONE;
|
||||||
|
this.retrievalDescription = string.Empty;
|
||||||
|
this.additionalLibraries = string.Empty;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool MightPreselectValues()
|
protected override bool MightPreselectValues()
|
||||||
{
|
{
|
||||||
|
if (this.SettingsManager.ConfigurationData.EDI.PreselectOptions)
|
||||||
|
{
|
||||||
|
this.selectedProgrammingLanguage = this.SettingsManager.ConfigurationData.EDI.PreselectedProgrammingLanguage;
|
||||||
|
this.otherProgrammingLanguage = this.SettingsManager.ConfigurationData.EDI.PreselectedOtherProgrammingLanguage;
|
||||||
|
this.selectedDataSource = this.SettingsManager.ConfigurationData.EDI.PreselectedDataSource;
|
||||||
|
this.dataSourceProductName = this.SettingsManager.ConfigurationData.EDI.PreselectedDataSourceProductName;
|
||||||
|
this.otherDataSource = this.SettingsManager.ConfigurationData.EDI.PreselectedOtherDataSource;
|
||||||
|
this.dataSourceHostname = this.SettingsManager.ConfigurationData.EDI.PreselectedDataSourceHostname;
|
||||||
|
this.dataSourcePort = this.SettingsManager.ConfigurationData.EDI.PreselectedDataSourcePort;
|
||||||
|
|
||||||
|
var authMethods = new HashSet<Auth>(this.SettingsManager.ConfigurationData.EDI.PreselectedAuthMethods);
|
||||||
|
this.selectedAuthenticationMethods = authMethods;
|
||||||
|
|
||||||
|
this.authDescription = this.SettingsManager.ConfigurationData.EDI.PreselectedAuthDescription;
|
||||||
|
this.selectedOperatingSystem = this.SettingsManager.ConfigurationData.EDI.PreselectedOperatingSystem;
|
||||||
|
this.retrievalDescription = this.SettingsManager.ConfigurationData.EDI.PreselectedRetrievalDescription;
|
||||||
|
this.additionalLibraries = this.SettingsManager.ConfigurationData.EDI.PreselectedAdditionalLibraries;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,8 +81,14 @@ public partial class AssistantEDI : AssistantBaseCore
|
|||||||
private string otherProgrammingLanguage = string.Empty;
|
private string otherProgrammingLanguage = string.Empty;
|
||||||
private DataSources selectedDataSource = DataSources.NONE;
|
private DataSources selectedDataSource = DataSources.NONE;
|
||||||
private string otherDataSource = string.Empty;
|
private string otherDataSource = string.Empty;
|
||||||
|
private string dataSourceProductName = string.Empty;
|
||||||
|
private string dataSourceHostname = string.Empty;
|
||||||
|
private int? dataSourcePort;
|
||||||
private IEnumerable<Auth> selectedAuthenticationMethods = new HashSet<Auth>();
|
private IEnumerable<Auth> selectedAuthenticationMethods = new HashSet<Auth>();
|
||||||
private string authDescription = string.Empty;
|
private string authDescription = string.Empty;
|
||||||
|
private OperatingSystem selectedOperatingSystem = OperatingSystem.NONE;
|
||||||
|
private string retrievalDescription = string.Empty;
|
||||||
|
private string additionalLibraries = string.Empty;
|
||||||
|
|
||||||
private string? ValidateProgrammingLanguage(ProgrammingLanguages language)
|
private string? ValidateProgrammingLanguage(ProgrammingLanguages language)
|
||||||
{
|
{
|
||||||
@ -82,6 +123,17 @@ public partial class AssistantEDI : AssistantBaseCore
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string? ValidateDataSourceProductName(string productName)
|
||||||
|
{
|
||||||
|
if(this.selectedDataSource is DataSources.CUSTOM or DataSources.NONE or DataSources.FILE_SYSTEM)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if(string.IsNullOrWhiteSpace(productName))
|
||||||
|
return "Please specify the product name of the data source, e.g., 'MongoDB', 'Redis', 'PostgreSQL', 'Neo4j', or 'MinIO', etc.";
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private string? ValidateOtherDataSource(string dataSource)
|
private string? ValidateOtherDataSource(string dataSource)
|
||||||
{
|
{
|
||||||
if(this.selectedDataSource != DataSources.CUSTOM)
|
if(this.selectedDataSource != DataSources.CUSTOM)
|
||||||
@ -93,6 +145,62 @@ public partial class AssistantEDI : AssistantBaseCore
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string? ValidateHostname(string hostname)
|
||||||
|
{
|
||||||
|
if(!this.NeedHostnamePort())
|
||||||
|
return null;
|
||||||
|
|
||||||
|
// When using a custom data source, the hostname is optional:
|
||||||
|
if(this.selectedDataSource is DataSources.CUSTOM)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if(string.IsNullOrWhiteSpace(hostname))
|
||||||
|
return "Please provide the hostname of the data source. Use 'localhost' if the data source is on the same machine as the EDI server.";
|
||||||
|
|
||||||
|
if(hostname.Length > 255)
|
||||||
|
return "The hostname of the data source must not exceed 255 characters.";
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private string? ValidatePort(int? port)
|
||||||
|
{
|
||||||
|
if(!this.NeedHostnamePort())
|
||||||
|
return null;
|
||||||
|
|
||||||
|
// When using a custom data source, the port is optional:
|
||||||
|
if(this.selectedDataSource is DataSources.CUSTOM)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if(port is null)
|
||||||
|
return "Please provide the port of the data source.";
|
||||||
|
|
||||||
|
if(port is < 1 or > 65535)
|
||||||
|
return "The port of the data source must be between 1 and 65535.";
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DataSourceWasChanged()
|
||||||
|
{
|
||||||
|
if(this.SettingsManager.ConfigurationData.EDI.PreselectedDataSourcePort is not null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Preselect the default port for the selected data source
|
||||||
|
//
|
||||||
|
this.dataSourcePort = this.selectedDataSource switch
|
||||||
|
{
|
||||||
|
DataSources.DOCUMENT_STORE => 27017,
|
||||||
|
DataSources.KEY_VALUE_STORE => 6379,
|
||||||
|
DataSources.OBJECT_STORAGE => 9000,
|
||||||
|
DataSources.RELATIONAL_DATABASE => 5432,
|
||||||
|
DataSources.GRAPH_DATABASE => 7687,
|
||||||
|
|
||||||
|
_ => null
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private string? ValidateAuthenticationMethods(Auth _)
|
private string? ValidateAuthenticationMethods(Auth _)
|
||||||
{
|
{
|
||||||
var authenticationMethods = (this.selectedAuthenticationMethods as HashSet<Auth>)!;
|
var authenticationMethods = (this.selectedAuthenticationMethods as HashSet<Auth>)!;
|
||||||
@ -102,6 +210,54 @@ public partial class AssistantEDI : AssistantBaseCore
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void AuthenticationMethodWasChanged(IEnumerable<Auth>? selectedValues)
|
||||||
|
{
|
||||||
|
if(selectedValues is null)
|
||||||
|
{
|
||||||
|
this.selectedAuthenticationMethods = [];
|
||||||
|
this.selectedOperatingSystem = OperatingSystem.NONE;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.selectedAuthenticationMethods = selectedValues;
|
||||||
|
if(!this.IsUsingKerberos())
|
||||||
|
this.selectedOperatingSystem = OperatingSystem.NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool IsUsingKerberos()
|
||||||
|
{
|
||||||
|
return this.selectedAuthenticationMethods.Contains(Auth.KERBEROS);
|
||||||
|
}
|
||||||
|
|
||||||
|
private string? ValidateOperatingSystem(OperatingSystem os)
|
||||||
|
{
|
||||||
|
if(!this.IsUsingKerberos())
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if(os is OperatingSystem.NONE)
|
||||||
|
return "Please select the operating system on which the EDI server will run. This is necessary when using SSO with Kerberos.";
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private string AuthDescriptionTitle()
|
||||||
|
{
|
||||||
|
const string TITLE = "Describe how you planned the authentication process";
|
||||||
|
return this.IsAuthDescriptionOptional() ? $"(Optional) {TITLE}" : TITLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool IsAuthDescriptionOptional()
|
||||||
|
{
|
||||||
|
var authenticationMethods = (this.selectedAuthenticationMethods as HashSet<Auth>)!;
|
||||||
|
if(authenticationMethods.Count > 1)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (authenticationMethods.Any(n => n == Auth.NONE) && authenticationMethods.Count > 1)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
private string? ValidateAuthDescription(string description)
|
private string? ValidateAuthDescription(string description)
|
||||||
{
|
{
|
||||||
var authenticationMethods = (this.selectedAuthenticationMethods as HashSet<Auth>)!;
|
var authenticationMethods = (this.selectedAuthenticationMethods as HashSet<Auth>)!;
|
||||||
@ -124,6 +280,27 @@ public partial class AssistantEDI : AssistantBaseCore
|
|||||||
|
|
||||||
return $"You have selected {selectedValues.Count} authentication methods";
|
return $"You have selected {selectedValues.Count} authentication methods";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string? ValidateRetrievalDescription(string description)
|
||||||
|
{
|
||||||
|
if(string.IsNullOrWhiteSpace(description))
|
||||||
|
return "Please describe how the data retrieval process should work. This is important for the integration of the data source into AI Studio by means of the EDI.";
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool NeedHostnamePort()
|
||||||
|
{
|
||||||
|
switch (this.selectedDataSource)
|
||||||
|
{
|
||||||
|
case DataSources.NONE:
|
||||||
|
case DataSources.FILE_SYSTEM:
|
||||||
|
return false;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private async Task GenerateServer()
|
private async Task GenerateServer()
|
||||||
{
|
{
|
||||||
|
@ -6,6 +6,7 @@ public enum DataSources
|
|||||||
CUSTOM,
|
CUSTOM,
|
||||||
|
|
||||||
FILE_SYSTEM,
|
FILE_SYSTEM,
|
||||||
|
|
||||||
OBJECT_STORAGE,
|
OBJECT_STORAGE,
|
||||||
KEY_VALUE_STORE,
|
KEY_VALUE_STORE,
|
||||||
DOCUMENT_STORE,
|
DOCUMENT_STORE,
|
||||||
|
9
app/MindWork AI Studio/Assistants/EDI/OperatingSystem.cs
Normal file
9
app/MindWork AI Studio/Assistants/EDI/OperatingSystem.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
namespace AIStudio.Assistants.EDI;
|
||||||
|
|
||||||
|
public enum OperatingSystem
|
||||||
|
{
|
||||||
|
NONE,
|
||||||
|
|
||||||
|
WINDOWS,
|
||||||
|
LINUX,
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
namespace AIStudio.Assistants.EDI;
|
||||||
|
|
||||||
|
public static class OperatingSystemExtensions
|
||||||
|
{
|
||||||
|
public static string Name(this OperatingSystem os) => os switch
|
||||||
|
{
|
||||||
|
OperatingSystem.NONE => "No operating system specified",
|
||||||
|
|
||||||
|
OperatingSystem.WINDOWS => "Windows",
|
||||||
|
OperatingSystem.LINUX => "Linux",
|
||||||
|
|
||||||
|
_ => "Unknown operating system"
|
||||||
|
};
|
||||||
|
}
|
@ -1,6 +1,8 @@
|
|||||||
using AIStudio.Assistants.EDI;
|
using AIStudio.Assistants.EDI;
|
||||||
using AIStudio.Provider;
|
using AIStudio.Provider;
|
||||||
|
|
||||||
|
using OperatingSystem = AIStudio.Assistants.EDI.OperatingSystem;
|
||||||
|
|
||||||
namespace AIStudio.Settings.DataModel;
|
namespace AIStudio.Settings.DataModel;
|
||||||
|
|
||||||
public sealed class DataEDI
|
public sealed class DataEDI
|
||||||
@ -25,11 +27,26 @@ public sealed class DataEDI
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public DataSources PreselectedDataSource { get; set; }
|
public DataSources PreselectedDataSource { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Do you want to preselect a product name for the data source?
|
||||||
|
/// </summary>
|
||||||
|
public string PreselectedDataSourceProductName { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Do you want to preselect any other data source?
|
/// Do you want to preselect any other data source?
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string PreselectedOtherDataSource { get; set; } = string.Empty;
|
public string PreselectedOtherDataSource { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Do you want to preselect a hostname for the data source?
|
||||||
|
/// </summary>
|
||||||
|
public string PreselectedDataSourceHostname { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Do you want to preselect a port for the data source?
|
||||||
|
/// </summary>
|
||||||
|
public int? PreselectedDataSourcePort { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Preselect any authentication methods?
|
/// Preselect any authentication methods?
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -39,6 +56,21 @@ public sealed class DataEDI
|
|||||||
/// Do you want to preselect any authentication description?
|
/// Do you want to preselect any authentication description?
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string PreselectedAuthDescription { get; set; } = string.Empty;
|
public string PreselectedAuthDescription { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Do you want to preselect an operating system? This is necessary when SSO with Kerberos is used.
|
||||||
|
/// </summary>
|
||||||
|
public OperatingSystem PreselectedOperatingSystem { get; set; } = OperatingSystem.NONE;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Do you want to preselect a retrieval description?
|
||||||
|
/// </summary>
|
||||||
|
public string PreselectedRetrievalDescription { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Do you want to preselect any additional libraries?
|
||||||
|
/// </summary>
|
||||||
|
public string PreselectedAdditionalLibraries { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The minimum confidence level required for a provider to be considered.
|
/// The minimum confidence level required for a provider to be considered.
|
||||||
|
Loading…
Reference in New Issue
Block a user