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); }