using AIStudio.Assistants.SlideBuilder;
using AIStudio.Settings;
using System.Text.Json.Serialization;
namespace AIStudio.Assistants.VisualBriefing;
///
/// Defines VisualBriefingLocalSettings for the visual briefing feature.
///
public sealed class VisualBriefingLocalSettings
{
///
/// Defines ProviderId for the visual briefing feature.
///
public string ProviderId { get; set; } = string.Empty;
///
/// Defines ModelId for the visual briefing feature.
///
public string ModelId { get; set; } = string.Empty;
///
/// Defines ProfileIds for the visual briefing feature.
///
public HashSet ProfileIds { get; set; } = [];
[JsonPropertyName("ProfileId")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? LegacyProfileId
{
get => null;
set
{
if (this.ProfileIds.Count == 0 &&
!string.IsNullOrWhiteSpace(value) &&
!value.Equals(Profile.NO_PROFILE.Id, StringComparison.OrdinalIgnoreCase))
this.ProfileIds.Add(value);
}
}
///
/// Defines TargetLanguage for the visual briefing feature.
///
public CommonLanguages TargetLanguage { get; set; } = CommonLanguages.EN_US;
///
/// Defines CustomTargetLanguage for the visual briefing feature.
///
public string CustomTargetLanguage { get; set; } = string.Empty;
///
/// Defines AudienceProfile for the visual briefing feature.
///
public AudienceProfile AudienceProfile { get; set; }
///
/// Defines AudienceAgeGroup for the visual briefing feature.
///
public AudienceAgeGroup AudienceAgeGroup { get; set; }
///
/// Defines AudienceOrganizationalLevel for the visual briefing feature.
///
public AudienceOrganizationalLevel AudienceOrganizationalLevel { get; set; }
///
/// Defines AudienceExpertise for the visual briefing feature.
///
public AudienceExpertise AudienceExpertise { get; set; }
///
/// Defines ShowSourceReferences for the visual briefing feature.
///
public bool ShowSourceReferences { get; set; } = true;
///
/// Defines OptimizeImages for the visual briefing feature.
///
public bool OptimizeImages { get; set; } = true;
///
/// Defines Instruction for the visual briefing feature.
///
public string Instruction { get; set; } = string.Empty;
///
/// Defines ProtectionLevel for the visual briefing feature.
///
public VisualBriefingProtectionLevel ProtectionLevel { get; set; } = VisualBriefingProtectionLevel.INTERNAL;
///
/// Defines CustomProtectionLevel for the visual briefing feature.
///
public string CustomProtectionLevel { get; set; } = string.Empty;
}