using FinlyticCore.Models.Settings;
namespace FinlyticNews.Util;
///
/// Service-scoped dynamic setting keys for FinlyticNews.
///
public static class SettingKeys
{
// --- Logging-Kanäle ---
public static readonly SettingKey NewsChannel = new("Logging.Channel.News", true);
public static readonly SettingKey MqttChannel = new("Logging.Channel.MQTT", true);
public static readonly SettingKey HealthPingChannel = new("Logging.Channel.Health", true);
public static readonly SettingKey ScraperChannel = new("Logging.Channel.Scraper", true);
public static readonly SettingKey MatcherChannel = new("Logging.Channel.Matcher", true);
public static readonly SettingKey DeduplicationChannel = new("Logging.Channel.Deduplication", true);
// --- Scraping & Feed-Konfiguration ---
public static readonly SettingKey ScrapeIntervalMinutes = new("Scraping.IntervalMinutes", 15);
public static readonly SettingKey MaxArticlesPerFeed = new("Scraping.MaxArticlesPerFeed", 20);
public static readonly SettingKey EnableAutoScraping = new("Feature.EnableAutoScraping", true);
public static readonly SettingKey HttpTimeoutSeconds = new("Scraping.HttpTimeoutSeconds", 30);
// --- Deduplication & Fingerprinting ---
public static readonly SettingKey TitleSimilarityThreshold = new("Deduplication.TitleSimilarityThreshold", 0.85);
public static readonly SettingKey SimHashMaxHammingDistance = new("Deduplication.SimHashMaxHammingDistance", 3);
public static readonly SettingKey DeduplicationWindowDays = new("Deduplication.WindowDays", 7);
// --- Asset Matching & Validation ---
public static readonly SettingKey MinNameLength = new("Matching.MinNameLength", 3);
public static readonly SettingKey EnableSectorClustering = new("Matching.EnableSectorClustering", true);
public static readonly SettingKey RequireFinancialContextForShortNames = new("Matching.RequireFinancialContextForShortNames", true);
// --- Daten-Retention & Cleanup ---
public static readonly SettingKey ArticleRetentionDays = new("Data.ArticleRetentionDays", 90);
}