ChatRAG/Settings/ConfidenceAwareSettings.cs
2025-06-22 19:58:43 -03:00

121 lines
4.1 KiB
C#

namespace ChatRAG.Settings
{
/// <summary>
/// Configurações específicas para o ConfidenceAwareRAG
/// </summary>
public class ConfidenceAwareSettings
{
/// <summary>
/// Habilita/desabilita verificação de confiança
/// true = só responde com confiança, false = sempre responde (como hoje)
/// </summary>
public bool EnableConfidenceCheck { get; set; } = true;
/// <summary>
/// Modo restrito (critérios rigorosos) vs modo relaxado
/// </summary>
public bool UseStrictMode { get; set; } = true;
/// <summary>
/// Mostra informações de debug na resposta (confiança, tempo, etc.)
/// </summary>
public bool ShowDebugInfo { get; set; } = false;
/// <summary>
/// Domínio padrão quando não conseguir detectar automaticamente
/// </summary>
public string DefaultDomain { get; set; } = "TI";
/// <summary>
/// Mapeamento de palavras-chave para domínios (detecção automática)
/// </summary>
public Dictionary<string, string> DomainMappings { get; set; } = new()
{
["software"] = "TI",
["sistema"] = "TI",
["api"] = "TI",
["backend"] = "TI",
["frontend"] = "TI",
["database"] = "TI",
["funcionário"] = "RH",
["colaborador"] = "RH",
["employee"] = "RH",
["hr"] = "RH",
["financeiro"] = "Financeiro",
["contábil"] = "Financeiro",
["financial"] = "Financeiro",
["accounting"] = "Financeiro",
["teste"] = "QA",
["qualidade"] = "QA",
["quality"] = "QA",
["testing"] = "QA"
};
/// <summary>
/// Configuração de idiomas suportados
/// </summary>
public LanguageSettings Languages { get; set; } = new();
/// <summary>
/// Configurações de cache para prompts
/// </summary>
public CacheSettings Cache { get; set; } = new();
}
/// <summary>
/// Configurações de idioma
/// </summary>
public class LanguageSettings
{
/// <summary>
/// Idioma padrão do sistema
/// </summary>
public string DefaultLanguage { get; set; } = "pt";
/// <summary>
/// Idiomas suportados
/// </summary>
public List<string> SupportedLanguages { get; set; } = new() { "pt", "en" };
/// <summary>
/// Auto-detectar idioma da pergunta
/// </summary>
public bool AutoDetectLanguage { get; set; } = true;
/// <summary>
/// Sempre responder no idioma detectado/solicitado, mesmo que prompts estejam em PT
/// </summary>
public bool AlwaysRespondInRequestedLanguage { get; set; } = true;
/// <summary>
/// Palavras-chave para detecção automática de idioma
/// </summary>
public Dictionary<string, List<string>> LanguageKeywords { get; set; } = new()
{
["en"] = new() { "what", "how", "why", "where", "when", "which", "who", "can", "could", "would", "should", "will", "the", "and", "or", "but", "system", "project", "document", "explain", "generate" },
["pt"] = new() { "que", "como", "por", "onde", "quando", "qual", "quem", "pode", "poderia", "deveria", "será", "o", "a", "e", "ou", "mas", "sistema", "projeto", "documento", "explique", "gere" }
};
}
/// <summary>
/// Configurações de cache
/// </summary>
public class CacheSettings
{
/// <summary>
/// Habilitar cache de prompts carregados
/// </summary>
public bool EnablePromptCache { get; set; } = true;
/// <summary>
/// Tempo de cache em minutos
/// </summary>
public int CacheExpirationMinutes { get; set; } = 30;
/// <summary>
/// Recarregar arquivos automaticamente quando modificados
/// </summary>
public bool AutoReloadOnFileChange { get; set; } = true;
}
}