using System; using System.Collections.Generic; namespace FinlyticCore.Models.Analyzer; public class TargetAssetInfo { public string Symbol { get; set; } = string.Empty; // e.g. "AAPL" public string Name { get; set; } = string.Empty; // e.g. "Apple Inc." public string Isin { get; set; } = string.Empty; public string Sector { get; set; } = string.Empty; } public class MarketContextInfo { public decimal Vix { get; set; } public string MarketRegime { get; set; } = string.Empty; } public class FilterContextInfo { public double ImpactScore { get; set; } public string RawNewsHeadline { get; set; } = string.Empty; } public class UserPreferencesInfo { public int RiskScore { get; set; } = 50; // 0 to 100 public string RiskTolerance { get; set; } = "Balanced"; public int MinTimeframeValue { get; set; } = 1; public int MaxTimeframeValue { get; set; } = 7; public string TimeframeUnit { get; set; } = "Tage"; // "Stunden", "Tage", "Wochen", "Monate" public string TimeframeFormatted { get; set; } = "1-7 Tage"; public string InstrumentType { get; set; } = "Stock"; // "Stock", "KnockOut", "Option", "CFD", "Future" public string UserNotes { get; set; } = string.Empty; } public class TradeFeedbackInfo { public int TotalAssetTrades { get; set; } public double AssetWinRate { get; set; } public double AvgReturnPercent { get; set; } public string LastTradeResult { get; set; } = "NONE"; // "WIN", "LOSS", "NONE" } public class PatternContextInfo { public string PatternName { get; set; } = string.Empty; public string? BreakoutDirection { get; set; } public double? TargetPrice { get; set; } public double? PotentialPercent { get; set; } } public class TechnicalContextInfo { public string Rsi { get; set; } = "N/A"; public string SupertrendStatus { get; set; } = "N/A"; public string Atr { get; set; } = "N/A"; public double? Sma50 { get; set; } public double? Sma200 { get; set; } public List DetectedPatterns { get; set; } = new(); } public class SentimentContextInfo { public double AssetSentimentScore { get; set; } public double SectorSentimentScore { get; set; } public string NewsSentimentSummary { get; set; } = "Neutral"; } public class FundamentalContextInfo { public double? PeRatio { get; set; } public double? ForwardPeRatio { get; set; } public double? PegRatio { get; set; } public double? MarketCap { get; set; } public double? DebtToEquity { get; set; } public double? GrossMargin { get; set; } public double? NetProfitMargin { get; set; } public double? ReturnOnEquity { get; set; } public double? DividendYield { get; set; } public double? ShortPercentOfFloat { get; set; } public double? AnalystTargetMedian { get; set; } public double? EvToEbitda { get; set; } } public class N8nAnalysisRequestDto { public string RequestId { get; set; } = string.Empty; public DateTime Timestamp { get; set; } = DateTime.UtcNow; public string TriggerType { get; set; } = "AutomatedNews"; // "Manual" | "AutomatedNews" public TargetAssetInfo TargetAsset { get; set; } = new(); public MarketContextInfo MarketContext { get; set; } = new(); public FilterContextInfo FilterContext { get; set; } = new(); public UserPreferencesInfo UserPreferences { get; set; } = new(); public TradeFeedbackInfo TradeFeedback { get; set; } = new(); public TechnicalContextInfo TechnicalContext { get; set; } = new(); public SentimentContextInfo SentimentContext { get; set; } = new(); public FundamentalContextInfo FundamentalContext { get; set; } = new(); }