using Fengling.RiskControl.Domain.Aggregates.RiskRules; namespace Fengling.RiskControl.Evaluation; public class RiskEvaluationRequest { public string MemberId { get; set; } = string.Empty; public string EventType { get; set; } = string.Empty; public int? Amount { get; set; } public string? DeviceFingerprint { get; set; } public string? IpAddress { get; set; } public Dictionary Metadata { get; set; } = new(); } public class RiskEvaluationResult { public int TotalScore { get; set; } public RiskLevel RiskLevel { get; set; } public RiskRuleAction RecommendedAction { get; set; } public bool Blocked { get; set; } public string Message { get; set; } = string.Empty; public List Factors { get; set; } = new(); public DateTime EvaluatedAt { get; set; } = DateTime.UtcNow; } public class RiskFactorResult { public string RuleName { get; set; } = string.Empty; public string RuleType { get; set; } = string.Empty; public int Points { get; set; } public string? Detail { get; set; } } public enum RiskLevel { Low = 0, Medium = 1, High = 2 }