using System.Collections.Generic; using System.Text.Json.Serialization; namespace FinlyticCore.Dtos.Sentiment; /// /// Individual analysis entry inside a Sector sentiment summary file. /// public record SectorAnalysisEntry { /// /// Gets or sets the unique analysis ID. /// [JsonPropertyName("analysisId")] public string AnalysisId { get; init; } = string.Empty; /// /// Gets or sets the timestamp in ISO-8601 format. /// [JsonPropertyName("timestamp")] public string Timestamp { get; init; } = string.Empty; /// /// Gets or sets the related asset ISIN. /// [JsonPropertyName("relatedIsin")] public string RelatedIsin { get; init; } = string.Empty; /// /// Gets or sets the article ID. /// [JsonPropertyName("articleId")] public string ArticleId { get; init; } = string.Empty; /// /// Gets or sets the FinBERT analysis result. /// [JsonPropertyName("finbertResult")] public FinBertResultDto FinbertResult { get; init; } = new(); } /// /// Current summary aggregate header inside a Sector sentiment summary file. /// public record SectorCurrentSummary { /// /// Gets or sets the sector compound score (-1.0 to +1.0). /// [JsonPropertyName("compoundScore")] public double CompoundScore { get; init; } /// /// Gets or sets the overall sector sentiment label ("POSITIVE", "NEGATIVE", "NEUTRAL"). /// [JsonPropertyName("sentimentLabel")] public string SentimentLabel { get; init; } = "NEUTRAL"; /// /// Gets or sets the total number of articles analyzed for this sector. /// [JsonPropertyName("totalArticlesAnalyzed")] public int TotalArticlesAnalyzed { get; init; } /// /// Gets or sets the total number of distinct companies in this sector. /// [JsonPropertyName("totalCompanies")] public int TotalCompanies { get; init; } /// /// Gets or sets the list of active asset ISINs influencing the sector. /// [JsonPropertyName("activeIsins")] public List ActiveIsins { get; init; } = []; /// /// Gets or sets the overview text for the sector. /// [JsonPropertyName("text")] public string Text { get; init; } = string.Empty; } /// /// Data transfer object for a Sector sentiment summary file. /// public record SectorSentimentSummaryDto { /// /// Gets or sets the sector name. /// [JsonPropertyName("sector")] public string Sector { get; init; } = string.Empty; /// /// Gets or sets the last updated timestamp in ISO-8601 format. /// [JsonPropertyName("lastUpdated")] public string LastUpdated { get; init; } = string.Empty; /// /// Gets or sets the current sector summary metrics and overview. /// [JsonPropertyName("currentSummary")] public SectorCurrentSummary CurrentSummary { get; init; } = new(); /// /// Gets or sets the list of historical sector analysis entries. /// [JsonPropertyName("analyses")] public List Analyses { get; init; } = []; }