feat(news): add scraper adapters, article deduplication, blocklist service, and remove tracked publish artifacts
This commit is contained in:
@@ -2,26 +2,36 @@ using FinlyticCore.Models.Settings;
|
||||
|
||||
namespace FinlyticNews.Util;
|
||||
|
||||
/// <summary>
|
||||
/// Service-scoped dynamic setting keys for FinlyticNews.
|
||||
/// </summary>
|
||||
public static class SettingKeys
|
||||
{
|
||||
// --- Logging-Kanäle ---
|
||||
public static readonly SettingKey<bool> NewsChannel = new("Logging.Channel.News", true);
|
||||
public static readonly SettingKey<bool> MqttChannel = new("Logging.Channel.MQTT", true);
|
||||
public static readonly SettingKey<bool> HealthPingChannel = new("Logging.Channel.Health", true);
|
||||
public static readonly SettingKey<bool> ScraperChannel = new("Logging.Channel.Scraper", true);
|
||||
public static readonly SettingKey<bool> MatcherChannel = new("Logging.Channel.Matcher", true);
|
||||
public static readonly SettingKey<bool> DeduplicationChannel = new("Logging.Channel.Deduplication", true);
|
||||
|
||||
// --- Scraping & Feed-Konfiguration ---
|
||||
public static readonly SettingKey<int> ScrapeIntervalMinutes = new("Scraping.IntervalMinutes", 15);
|
||||
public static readonly SettingKey<int> MaxArticlesPerFeed = new("Scraping.MaxArticlesPerFeed", 20);
|
||||
public static readonly SettingKey<bool> EnableAutoScraping = new("Feature.EnableAutoScraping", true);
|
||||
public static readonly SettingKey<int> HttpTimeoutSeconds = new("Scraping.HttpTimeoutSeconds", 20);
|
||||
public static readonly SettingKey<int> HttpTimeoutSeconds = new("Scraping.HttpTimeoutSeconds", 30);
|
||||
|
||||
// --- KI & Sentiment-Konfiguration ---
|
||||
public static readonly SettingKey<int> FinBertBatchSize = new("AI.FinBertBatchSize", 8);
|
||||
public static readonly SettingKey<double> MinSentimentConfidence = new("AI.MinSentimentConfidence", 0.65);
|
||||
// --- Deduplication & Fingerprinting ---
|
||||
public static readonly SettingKey<double> TitleSimilarityThreshold = new("Deduplication.TitleSimilarityThreshold", 0.85);
|
||||
public static readonly SettingKey<int> SimHashMaxHammingDistance = new("Deduplication.SimHashMaxHammingDistance", 3);
|
||||
public static readonly SettingKey<int> DeduplicationWindowDays = new("Deduplication.WindowDays", 7);
|
||||
|
||||
// --- Asset Matching & Validation ---
|
||||
public static readonly SettingKey<int> MinNameLength = new("Matching.MinNameLength", 3);
|
||||
public static readonly SettingKey<bool> EnableSectorClustering = new("Matching.EnableSectorClustering", true);
|
||||
public static readonly SettingKey<bool> RequireFinancialContextForShortNames = new("Matching.RequireFinancialContextForShortNames", true);
|
||||
|
||||
// --- Daten-Retention & Cleanup ---
|
||||
public static readonly SettingKey<int> ArticleRetentionDays = new("Data.ArticleRetentionDays", 90);
|
||||
|
||||
// --- N8N / Webhook-Konfiguration ---
|
||||
public static readonly SettingKey<string> N8nArticleExtractionUrl = new("N8N.ArticleExtractionUrl", "https://n8n.kleidukos.me/webhook/gemini/article/extraction");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user