using Predictalytics.Domain.Enums; namespace Predictalytics.Domain.ValueObjects; /// /// Encapsulates a trader's calculated priority score with all component scores. /// public record PriorityScore( decimal ActivityScore, decimal QualityScore, decimal VolumeScore, decimal TimingScore, decimal CombinedScore, int? ManualOverride = null ) { /// /// The effective score, considering any manual override. /// public decimal EffectiveScore => ManualOverride.HasValue ? ManualOverride.Value : CombinedScore; /// /// Determine tier based on effective score. /// To reach Diamond, the score must be exceptionally high (top 1%). /// public TraderTier DetermineTier() => EffectiveScore switch { >= 95 => TraderTier.Diamond, >= 85 => TraderTier.Platinum, >= 70 => TraderTier.Gold, >= 50 => TraderTier.Silver, >= 30 => TraderTier.Bronze, _ => TraderTier.Unknown }; }