using Fengling.RiskControl.Domain.Aggregates.RiskRules; using Fengling.RiskControl.Domain.Aggregates.RiskScores; namespace Fengling.RiskControl.Application.Services; public record RiskEvaluationRequest { public long MemberId { get; init; } public string EntityType { get; init; } = string.Empty; public string EntityId { get; init; } = string.Empty; public string ActionType { get; init; } = string.Empty; public Dictionary Context { get; init; } = new(); } public record RiskEvaluationResult { public int TotalScore { get; init; } public RiskLevel RiskLevel { get; init; } public RiskRuleAction RecommendedAction { get; init; } public List Factors { get; init; } = new(); public bool Blocked { get; init; } public string Message { get; init; } = string.Empty; } public record RiskFactorResult { public string FactorType { get; init; } = string.Empty; public int Points { get; init; } public string Description { get; init; } = string.Empty; public string RuleName { get; init; } = string.Empty; } public interface IRiskEvaluationService { Task EvaluateRiskAsync(RiskEvaluationRequest request); Task IsAllowedAsync(RiskEvaluationRequest request); }