using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using FinlyticCore.Dtos.TechnicalAnalysis; using FinlyticCore.Dtos.Trading; namespace FinlyticEngine.Database.Entities; [Table("engine_trade_proposals")] public class EngineTradeProposalEntity { [Key] public Guid Id { get; set; } = Guid.NewGuid(); [Required] [MaxLength(20)] public string UnderlyingIsin { get; set; } = string.Empty; [MaxLength(30)] public string Symbol { get; set; } = string.Empty; [MaxLength(50)] public string StrategyKey { get; set; } = string.Empty; public SignalDirection Direction { get; set; } = SignalDirection.Buy; [Column(TypeName = "decimal(6,2)")] public decimal QualityScore { get; set; } [Column(TypeName = "decimal(6,2)")] public decimal CompositeScore { get; set; } [Column(TypeName = "decimal(18,4)")] public decimal CurrentPrice { get; set; } [Column(TypeName = "decimal(18,4)")] public decimal EntryPrice { get; set; } [Column(TypeName = "decimal(18,4)")] public decimal StopLoss { get; set; } [Column(TypeName = "decimal(18,4)")] public decimal TakeProfit1 { get; set; } [Column(TypeName = "decimal(8,2)")] public decimal RiskRewardRatio { get; set; } public ExitPlan ExitPlan { get; set; } = null!; public DerivativeSelectionDto? SelectedDerivative { get; set; } public AiValidationResultDto AiValidation { get; set; } = null!; public bool IsActive { get; set; } = true; [Required] public DateTime CreatedAtUtc { get; set; } = DateTime.UtcNow; [Required] public DateTime ExpiresAtUtc { get; set; } }