namespace Deal.Modules.Settings.Application.Models;
///
/// Снимок глобальной конфигурации ИИ-провайдера с расшифрованным ключом (только для внутреннего использования).
///
/// Id провайдера из каталога ; пусто — конфигурация не задана.
/// Базовый URL API (эффективный: сохранённый или дефолт каталога).
/// Активная модель (эффективная: сохранённая или первая из каталога).
/// API-ключ открытым текстом (пусто — не задан; локальным провайдерам не нужен).
public sealed record AiGlobalConfigSnapshot(
string ProviderId,
string BaseUrl,
string Model,
string ApiKey)
{
///
/// Провайдер каталога по или null для неизвестного/незаданного id
///
public AiProviderDefinition? Meta => AiProviders.All.FirstOrDefault(provider => provider.Id == ProviderId);
///
/// Конфигурация готова к вызовам ИИ: провайдер известен, адрес и модель непустые,
/// ключ задан (или не нужен локальному провайдеру)
///
public bool Configured => Meta is not null
&& BaseUrl.Length > 0
&& Model.Length > 0
&& (Meta.Local || ApiKey.Length > 0);
}