fengling-risk-control/Fengling.RiskControl.Application/Services/IRiskEvaluationService.cs

38 lines
1.3 KiB
C#

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<string, object> Context { get; init; } = new();
}
public record RiskEvaluationResult
{
public int TotalScore { get; init; }
public RiskLevel RiskLevel { get; init; }
public RiskRuleAction RecommendedAction { get; init; }
public List<RiskFactorResult> 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<RiskEvaluationResult> EvaluateRiskAsync(RiskEvaluationRequest request);
Task<bool> IsAllowedAsync(RiskEvaluationRequest request);
}