852 lines
24 KiB
C#
852 lines
24 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using NPP.SmartSchedue.Api.Contracts.Services.Integration.Output;
|
|
|
|
namespace NPP.SmartSchedue.Api.Contracts.Services.Integration.Models
|
|
{
|
|
/// <summary>
|
|
/// 验证违规信息
|
|
/// 通用的验证违规模型,用于各类验证场景
|
|
/// </summary>
|
|
public class ValidationViolation
|
|
{
|
|
/// <summary>
|
|
/// 违规ID
|
|
/// </summary>
|
|
public string ViolationId { get; set; } = Guid.NewGuid().ToString();
|
|
|
|
/// <summary>
|
|
/// 违规类型
|
|
/// </summary>
|
|
public string ViolationType { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// 违规描述
|
|
/// </summary>
|
|
public string Description { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// 违规严重程度
|
|
/// </summary>
|
|
public ViolationSeverity Severity { get; set; } = ViolationSeverity.Medium;
|
|
|
|
/// <summary>
|
|
/// 相关实体ID
|
|
/// </summary>
|
|
public long EntityId { get; set; }
|
|
|
|
/// <summary>
|
|
/// 相关实体类型
|
|
/// </summary>
|
|
public string EntityType { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// 违规详细信息
|
|
/// </summary>
|
|
public Dictionary<string, object> Details { get; set; } = new();
|
|
|
|
/// <summary>
|
|
/// 建议解决方案
|
|
/// </summary>
|
|
public List<string> SuggestedSolutions { get; set; } = new();
|
|
|
|
/// <summary>
|
|
/// 发现时间
|
|
/// </summary>
|
|
public DateTime DetectedAt { get; set; } = DateTime.Now;
|
|
|
|
/// <summary>
|
|
/// 是否为阻塞性问题
|
|
/// </summary>
|
|
public bool IsBlockingIssue { get; set; } = false;
|
|
|
|
/// <summary>
|
|
/// 业务影响度 (1-10)
|
|
/// </summary>
|
|
public int BusinessImpact { get; set; } = 5;
|
|
|
|
/// <summary>
|
|
/// 违规分类
|
|
/// </summary>
|
|
public ViolationCategory Category { get; set; } = ViolationCategory.General;
|
|
|
|
/// <summary>
|
|
/// 是否可通过审批强制执行
|
|
/// </summary>
|
|
public bool CanOverrideWithApproval { get; set; } = true;
|
|
|
|
/// <summary>
|
|
/// 所需审批级别
|
|
/// </summary>
|
|
public ApprovalLevel RequiredApprovalLevel { get; set; } = ApprovalLevel.None;
|
|
|
|
/// <summary>
|
|
/// 违规风险评估
|
|
/// </summary>
|
|
public ViolationRiskAssessment RiskAssessment { get; set; } = new();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 验证警告信息
|
|
/// 通用的验证警告模型,用于各类验证场景
|
|
/// </summary>
|
|
public class ValidationWarning
|
|
{
|
|
/// <summary>
|
|
/// 警告ID
|
|
/// </summary>
|
|
public string WarningId { get; set; } = Guid.NewGuid().ToString();
|
|
|
|
/// <summary>
|
|
/// 警告类型
|
|
/// </summary>
|
|
public string WarningType { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// 警告消息
|
|
/// </summary>
|
|
public string Message { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// 警告级别
|
|
/// </summary>
|
|
public WarningLevel Level { get; set; } = WarningLevel.Medium;
|
|
|
|
/// <summary>
|
|
/// 相关实体ID
|
|
/// </summary>
|
|
public long EntityId { get; set; }
|
|
|
|
/// <summary>
|
|
/// 相关实体类型
|
|
/// </summary>
|
|
public string EntityType { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// 建议关注程度 (1-10)
|
|
/// </summary>
|
|
public int AttentionLevel { get; set; } = 5;
|
|
|
|
/// <summary>
|
|
/// 相关任务ID列表
|
|
/// </summary>
|
|
public List<long> RelatedTaskIds { get; set; } = new();
|
|
|
|
/// <summary>
|
|
/// 建议操作
|
|
/// </summary>
|
|
public string SuggestedAction { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// 发现时间
|
|
/// </summary>
|
|
public DateTime DetectedAt { get; set; } = DateTime.Now;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 约束违规信息
|
|
/// 专门用于约束评估过程中的违规记录,比通用违规类更轻量
|
|
/// </summary>
|
|
public class ConstraintViolation
|
|
{
|
|
/// <summary>
|
|
/// 违规ID
|
|
/// </summary>
|
|
public string ViolationId { get; set; } = Guid.NewGuid().ToString();
|
|
|
|
/// <summary>
|
|
/// 违规类型
|
|
/// </summary>
|
|
public string ViolationType { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// 违规描述
|
|
/// </summary>
|
|
public string Description { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// 违规严重程度
|
|
/// </summary>
|
|
public ViolationSeverity Severity { get; set; } = ViolationSeverity.Medium;
|
|
|
|
/// <summary>
|
|
/// 违规详细信息
|
|
/// </summary>
|
|
public Dictionary<string, object> Details { get; set; } = new();
|
|
|
|
/// <summary>
|
|
/// 发现时间
|
|
/// </summary>
|
|
public DateTime DetectedAt { get; set; } = DateTime.Now;
|
|
|
|
/// <summary>
|
|
/// 是否为阻塞性问题
|
|
/// </summary>
|
|
public bool IsBlockingIssue { get; set; } = false;
|
|
|
|
/// <summary>
|
|
/// 业务影响度 (1-10)
|
|
/// </summary>
|
|
public int BusinessImpact { get; set; } = 5;
|
|
|
|
/// <summary>
|
|
/// 违规分类
|
|
/// </summary>
|
|
public ViolationCategory Category { get; set; } = ViolationCategory.General;
|
|
|
|
/// <summary>
|
|
/// 是否可通过审批强制执行
|
|
/// </summary>
|
|
public bool CanOverrideWithApproval { get; set; } = true;
|
|
|
|
/// <summary>
|
|
/// 所需审批级别
|
|
/// </summary>
|
|
public ApprovalLevel RequiredApprovalLevel { get; set; } = ApprovalLevel.None;
|
|
|
|
/// <summary>
|
|
/// 建议解决方案
|
|
/// </summary>
|
|
public List<string> SuggestedSolutions { get; set; } = new();
|
|
|
|
/// <summary>
|
|
/// 违规风险评估
|
|
/// </summary>
|
|
public ViolationRiskAssessment RiskAssessment { get; set; } = new();
|
|
|
|
/// <summary>
|
|
/// 创建新的约束违规实例
|
|
/// </summary>
|
|
public static ConstraintViolation Create(string violationType, string description, ViolationSeverity severity = ViolationSeverity.Medium)
|
|
{
|
|
return new ConstraintViolation
|
|
{
|
|
ViolationType = violationType,
|
|
Description = description,
|
|
Severity = severity,
|
|
DetectedAt = DateTime.Now
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// 创建阻塞性违规
|
|
/// </summary>
|
|
public static ConstraintViolation CreateBlocking(string violationType, string description, ViolationSeverity severity = ViolationSeverity.High)
|
|
{
|
|
return new ConstraintViolation
|
|
{
|
|
ViolationType = violationType,
|
|
Description = description,
|
|
Severity = severity,
|
|
IsBlockingIssue = true,
|
|
DetectedAt = DateTime.Now
|
|
};
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 违规类型枚举
|
|
/// 定义人员分配过程中可能出现的各种违规类型
|
|
/// </summary>
|
|
public enum ViolationType
|
|
{
|
|
/// <summary>
|
|
/// 通用违规
|
|
/// </summary>
|
|
General = 0,
|
|
|
|
/// <summary>
|
|
/// 资质不匹配
|
|
/// 业务场景:人员资质与任务要求不符
|
|
/// </summary>
|
|
QualificationMismatch = 1,
|
|
|
|
/// <summary>
|
|
/// 时间冲突
|
|
/// 业务场景:人员在同一时间段被分配多个任务
|
|
/// </summary>
|
|
TimeConflict = 2,
|
|
|
|
/// <summary>
|
|
/// 工作量超限
|
|
/// 业务场景:人员工作负载超过限制
|
|
/// </summary>
|
|
WorkloadExceeded = 3,
|
|
|
|
/// <summary>
|
|
/// 班次规则冲突
|
|
/// 业务场景:违反班次连续性、同天班次等规则
|
|
/// </summary>
|
|
ShiftRuleViolation = 4,
|
|
|
|
/// <summary>
|
|
/// 工作限制违规
|
|
/// 业务场景:违反连续工作天数、周班次数等限制
|
|
/// </summary>
|
|
WorkLimitViolation = 5,
|
|
|
|
/// <summary>
|
|
/// 系统状态违规
|
|
/// 业务场景:人员状态异常、系统配置问题等
|
|
/// </summary>
|
|
SystemStateViolation = 6,
|
|
|
|
/// <summary>
|
|
/// 业务规则冲突
|
|
/// 业务场景:违反项目特定规则、部门限制等
|
|
/// </summary>
|
|
BusinessRuleViolation = 7
|
|
}
|
|
|
|
/// <summary>
|
|
/// 违规严重程度枚举
|
|
/// 定义违规的严重程度级别,用于决策和审批流程
|
|
/// </summary>
|
|
public enum ViolationSeverity
|
|
{
|
|
/// <summary>
|
|
/// 信息级 - 纯信息提示,不影响分配
|
|
/// 业务场景:建议性信息、优化提示、统计数据
|
|
/// 处理方式:记录但不影响分配决策
|
|
/// </summary>
|
|
Info = 0,
|
|
|
|
/// <summary>
|
|
/// 低级 - 轻微问题,可接受
|
|
/// 业务场景:次优选择、轻微偏好违背、资源利用率稍低
|
|
/// 处理方式:允许分配,但降低优先级
|
|
/// </summary>
|
|
Low = 1,
|
|
|
|
/// <summary>
|
|
/// 警告级 - 需要关注但不阻止
|
|
/// 业务场景:连续工作天数较多、工作负载偏高、非首选班次
|
|
/// 处理方式:允许分配,但给出明确警告
|
|
/// </summary>
|
|
Warning = 2,
|
|
|
|
/// <summary>
|
|
/// 中级 - 需要关注的问题
|
|
/// 业务场景:技能匹配度不理想、班次连续性问题、资源冲突风险
|
|
/// 处理方式:默认阻止分配,可通过管理员审批
|
|
/// </summary>
|
|
Medium = 3,
|
|
|
|
/// <summary>
|
|
/// 高级 - 重要问题,建议阻止
|
|
/// 业务场景:工作限制超出、重要资质缺失、严重时间冲突
|
|
/// 处理方式:强烈建议阻止,需要高级权限审批
|
|
/// </summary>
|
|
High = 4,
|
|
|
|
/// <summary>
|
|
/// 错误级 - 业务规则违反,必须处理
|
|
/// 业务场景:违反硬性约束、安全规定冲突、合规性问题
|
|
/// 处理方式:阻止分配,必须修复后重试
|
|
/// </summary>
|
|
Error = 5,
|
|
|
|
/// <summary>
|
|
/// 严重级 - 系统级问题,完全阻止
|
|
/// 业务场景:数据完整性问题、系统状态异常、关键资源不可用
|
|
/// 处理方式:完全阻止分配,需要系统级修复
|
|
/// </summary>
|
|
Critical = 6
|
|
}
|
|
|
|
/// <summary>
|
|
/// 警告级别枚举
|
|
/// </summary>
|
|
public enum WarningLevel
|
|
{
|
|
/// <summary>
|
|
/// 低级警告
|
|
/// </summary>
|
|
Low = 1,
|
|
|
|
/// <summary>
|
|
/// 中级警告
|
|
/// </summary>
|
|
Medium = 2,
|
|
|
|
/// <summary>
|
|
/// 高级警告
|
|
/// </summary>
|
|
High = 3
|
|
}
|
|
|
|
/// <summary>
|
|
/// 违规分类枚举
|
|
/// </summary>
|
|
public enum ViolationCategory
|
|
{
|
|
/// <summary>
|
|
/// 通用违规
|
|
/// </summary>
|
|
General = 0,
|
|
|
|
/// <summary>
|
|
/// 资质相关违规
|
|
/// </summary>
|
|
Qualification = 1,
|
|
|
|
/// <summary>
|
|
/// 时间冲突违规
|
|
/// </summary>
|
|
TimeConflict = 2,
|
|
|
|
/// <summary>
|
|
/// 工作限制违规
|
|
/// </summary>
|
|
WorkLimit = 3,
|
|
|
|
/// <summary>
|
|
/// 班次规则违规
|
|
/// </summary>
|
|
ShiftRule = 4,
|
|
|
|
/// <summary>
|
|
/// 业务规则违规
|
|
/// </summary>
|
|
BusinessRule = 5,
|
|
|
|
/// <summary>
|
|
/// 安全规定违规
|
|
/// </summary>
|
|
Safety = 6,
|
|
|
|
/// <summary>
|
|
/// 合规性违规
|
|
/// </summary>
|
|
Compliance = 7,
|
|
|
|
/// <summary>
|
|
/// 系统状态违规
|
|
/// </summary>
|
|
SystemState = 8
|
|
}
|
|
|
|
/// <summary>
|
|
/// 审批级别枚举
|
|
/// </summary>
|
|
public enum ApprovalLevel
|
|
{
|
|
/// <summary>
|
|
/// 无需审批
|
|
/// </summary>
|
|
None = 0,
|
|
|
|
/// <summary>
|
|
/// 自动审批
|
|
/// </summary>
|
|
Automatic = 1,
|
|
|
|
/// <summary>
|
|
/// 主管审批
|
|
/// </summary>
|
|
Supervisor = 2,
|
|
|
|
/// <summary>
|
|
/// 管理员审批
|
|
/// </summary>
|
|
Manager = 3,
|
|
|
|
/// <summary>
|
|
/// 高级管理员审批
|
|
/// </summary>
|
|
SeniorManager = 4,
|
|
|
|
/// <summary>
|
|
/// 系统管理员审批
|
|
/// </summary>
|
|
SystemAdmin = 5
|
|
}
|
|
|
|
/// <summary>
|
|
/// 违规风险评估
|
|
/// </summary>
|
|
public class ViolationRiskAssessment
|
|
{
|
|
/// <summary>
|
|
/// 安全风险等级 (1-10)
|
|
/// </summary>
|
|
public int SafetyRiskLevel { get; set; } = 1;
|
|
|
|
/// <summary>
|
|
/// 合规风险等级 (1-10)
|
|
/// </summary>
|
|
public int ComplianceRiskLevel { get; set; } = 1;
|
|
|
|
/// <summary>
|
|
/// 运营风险等级 (1-10)
|
|
/// </summary>
|
|
public int OperationalRiskLevel { get; set; } = 1;
|
|
|
|
/// <summary>
|
|
/// 财务风险等级 (1-10)
|
|
/// </summary>
|
|
public int FinancialRiskLevel { get; set; } = 1;
|
|
|
|
/// <summary>
|
|
/// 综合风险评分 (1-10)
|
|
/// </summary>
|
|
public double OverallRiskScore => (SafetyRiskLevel + ComplianceRiskLevel + OperationalRiskLevel + FinancialRiskLevel) / 4.0;
|
|
|
|
/// <summary>
|
|
/// 风险描述
|
|
/// </summary>
|
|
public string RiskDescription { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// 缓解措施建议
|
|
/// </summary>
|
|
public List<string> MitigationSuggestions { get; set; } = new();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 违规严重程度判定辅助类
|
|
/// 智能排班系统违规严重程度业务逻辑判定器
|
|
/// 深度业务思考:根据不同业务场景智能判定违规的真实严重程度和处理方式
|
|
/// </summary>
|
|
public static class ViolationSeverityJudge
|
|
{
|
|
/// <summary>
|
|
/// 判定是否为阻塞性违规
|
|
/// 深度业务思考:根据严重程度和业务影响综合判断是否应该阻止分配
|
|
/// </summary>
|
|
public static bool IsBlockingViolation(ViolationSeverity severity, int businessImpact = 5, ViolationCategory category = ViolationCategory.General)
|
|
{
|
|
// 信息级和低级违规不阻塞
|
|
if (severity <= ViolationSeverity.Low) return false;
|
|
|
|
// 警告级违规根据业务影响和分类判断
|
|
if (severity == ViolationSeverity.Warning)
|
|
{
|
|
// 安全和合规相关的警告需要阻塞
|
|
if (category == ViolationCategory.Safety || category == ViolationCategory.Compliance)
|
|
return businessImpact >= 7;
|
|
|
|
// 其他警告不阻塞
|
|
return false;
|
|
}
|
|
|
|
// 中级违规根据分类判断
|
|
if (severity == ViolationSeverity.Medium)
|
|
{
|
|
// 资质和安全相关的中级违规需要阻塞
|
|
return category == ViolationCategory.Qualification ||
|
|
category == ViolationCategory.Safety ||
|
|
category == ViolationCategory.Compliance;
|
|
}
|
|
|
|
// 高级及以上违规都需要阻塞
|
|
return severity >= ViolationSeverity.High;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 计算违规失败阈值
|
|
/// 深度业务思考:不同业务场景下的违规容忍度不同
|
|
/// </summary>
|
|
public static ViolationSeverity GetFailureThreshold(ValidationContext context)
|
|
{
|
|
// 紧急情况下提高容忍度
|
|
if (context.IsEmergencyMode)
|
|
return ViolationSeverity.Error;
|
|
|
|
// 关键任务降低容忍度
|
|
if (context.IsCriticalTask)
|
|
return ViolationSeverity.Medium;
|
|
|
|
// 安全相关任务严格控制
|
|
if (context.IsSafetyRelated)
|
|
return ViolationSeverity.Warning;
|
|
|
|
// 默认阈值:高级违规
|
|
return ViolationSeverity.High;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取所需审批级别
|
|
/// </summary>
|
|
public static ApprovalLevel GetRequiredApprovalLevel(ViolationSeverity severity, ViolationCategory category)
|
|
{
|
|
return (severity, category) switch
|
|
{
|
|
(ViolationSeverity.Info or ViolationSeverity.Low, _) => ApprovalLevel.None,
|
|
(ViolationSeverity.Warning, ViolationCategory.Safety or ViolationCategory.Compliance) => ApprovalLevel.Supervisor,
|
|
(ViolationSeverity.Warning, _) => ApprovalLevel.Automatic,
|
|
(ViolationSeverity.Medium, ViolationCategory.Safety) => ApprovalLevel.Manager,
|
|
(ViolationSeverity.Medium, _) => ApprovalLevel.Supervisor,
|
|
(ViolationSeverity.High, ViolationCategory.Safety or ViolationCategory.Compliance) => ApprovalLevel.SeniorManager,
|
|
(ViolationSeverity.High, _) => ApprovalLevel.Manager,
|
|
(ViolationSeverity.Error, ViolationCategory.SystemState) => ApprovalLevel.SystemAdmin,
|
|
(ViolationSeverity.Error, _) => ApprovalLevel.SeniorManager,
|
|
(ViolationSeverity.Critical, _) => ApprovalLevel.SystemAdmin,
|
|
_ => ApprovalLevel.None
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// 判断是否可以通过审批强制执行
|
|
/// </summary>
|
|
public static bool CanOverrideWithApproval(ViolationSeverity severity, ViolationCategory category)
|
|
{
|
|
// 系统状态和关键安全违规不能强制执行
|
|
if (category == ViolationCategory.SystemState && severity >= ViolationSeverity.Error)
|
|
return false;
|
|
|
|
if (category == ViolationCategory.Safety && severity >= ViolationSeverity.Critical)
|
|
return false;
|
|
|
|
// 严重级系统违规不能强制执行
|
|
if (severity == ViolationSeverity.Critical &&
|
|
(category == ViolationCategory.SystemState || category == ViolationCategory.Compliance))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 计算违规权重
|
|
/// 用于验证评分计算
|
|
/// </summary>
|
|
public static double GetViolationWeight(ViolationSeverity severity)
|
|
{
|
|
return severity switch
|
|
{
|
|
ViolationSeverity.Info => 0.5,
|
|
ViolationSeverity.Low => 1.0,
|
|
ViolationSeverity.Warning => 2.0,
|
|
ViolationSeverity.Medium => 5.0,
|
|
ViolationSeverity.High => 10.0,
|
|
ViolationSeverity.Error => 20.0,
|
|
ViolationSeverity.Critical => 50.0,
|
|
_ => 1.0
|
|
};
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 验证上下文
|
|
/// 用于判定违规严重程度的业务上下文
|
|
/// </summary>
|
|
public class ValidationContext
|
|
{
|
|
/// <summary>
|
|
/// 是否为紧急模式
|
|
/// </summary>
|
|
public bool IsEmergencyMode { get; set; } = false;
|
|
|
|
/// <summary>
|
|
/// 是否为关键任务
|
|
/// </summary>
|
|
public bool IsCriticalTask { get; set; } = false;
|
|
|
|
/// <summary>
|
|
/// 是否与安全相关
|
|
/// </summary>
|
|
public bool IsSafetyRelated { get; set; } = false;
|
|
|
|
/// <summary>
|
|
/// 业务优先级 (1-10)
|
|
/// </summary>
|
|
public int BusinessPriority { get; set; } = 5;
|
|
|
|
/// <summary>
|
|
/// 验证模式
|
|
/// </summary>
|
|
public ValidationMode Mode { get; set; } = ValidationMode.Standard;
|
|
|
|
/// <summary>
|
|
/// 额外上下文信息
|
|
/// </summary>
|
|
public Dictionary<string, object> AdditionalContext { get; set; } = new();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 验证模式枚举
|
|
/// </summary>
|
|
public enum ValidationMode
|
|
{
|
|
/// <summary>
|
|
/// 标准验证
|
|
/// </summary>
|
|
Standard = 0,
|
|
|
|
/// <summary>
|
|
/// 严格验证
|
|
/// </summary>
|
|
Strict = 1,
|
|
|
|
/// <summary>
|
|
/// 宽松验证
|
|
/// </summary>
|
|
Lenient = 2,
|
|
|
|
/// <summary>
|
|
/// 紧急验证
|
|
/// </summary>
|
|
Emergency = 3
|
|
}
|
|
|
|
/// <summary>
|
|
/// 优化评分结果
|
|
/// 用于记录人员分配优化过程中的各项评分和决策信息
|
|
/// </summary>
|
|
public class OptimizationScoreResult
|
|
{
|
|
/// <summary>
|
|
/// 候选人信息
|
|
/// </summary>
|
|
public object Candidate { get; set; }
|
|
|
|
/// <summary>
|
|
/// 各维度评分
|
|
/// </summary>
|
|
public Dictionary<string, double> DimensionScores { get; set; } = new();
|
|
|
|
/// <summary>
|
|
/// 优化总分
|
|
/// </summary>
|
|
public double OptimizationScore { get; set; }
|
|
|
|
/// <summary>
|
|
/// 置信度
|
|
/// </summary>
|
|
public double Confidence { get; set; }
|
|
|
|
/// <summary>
|
|
/// 推荐等级
|
|
/// </summary>
|
|
public RecommendationLevel RecommendationLevel { get; set; }
|
|
|
|
/// <summary>
|
|
/// 优化理由
|
|
/// </summary>
|
|
public string OptimizationReason { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// 风险评估
|
|
/// </summary>
|
|
public RiskAssessment RiskAssessment { get; set; } = new();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 推荐等级枚举
|
|
/// </summary>
|
|
public enum RecommendationLevel
|
|
{
|
|
/// <summary>
|
|
/// 强烈推荐
|
|
/// </summary>
|
|
HighlyRecommended = 5,
|
|
|
|
/// <summary>
|
|
/// 推荐
|
|
/// </summary>
|
|
Recommended = 4,
|
|
|
|
/// <summary>
|
|
/// 可接受
|
|
/// </summary>
|
|
Acceptable = 3,
|
|
|
|
/// <summary>
|
|
/// 不推荐
|
|
/// </summary>
|
|
NotRecommended = 2,
|
|
|
|
/// <summary>
|
|
/// 不可行
|
|
/// </summary>
|
|
NotFeasible = 1
|
|
}
|
|
|
|
/// <summary>
|
|
/// 风险评估
|
|
/// </summary>
|
|
public class RiskAssessment
|
|
{
|
|
/// <summary>
|
|
/// 风险因子列表
|
|
/// </summary>
|
|
public List<RiskFactor> RiskFactors { get; set; } = new();
|
|
|
|
/// <summary>
|
|
/// 总体风险等级
|
|
/// </summary>
|
|
public RiskLevel OverallRiskLevel { get; set; } = RiskLevel.Low;
|
|
|
|
/// <summary>
|
|
/// 风险评分
|
|
/// </summary>
|
|
public double RiskScore { get; set; }
|
|
|
|
/// <summary>
|
|
/// 风险描述
|
|
/// </summary>
|
|
public string RiskDescription { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// 缓解建议
|
|
/// </summary>
|
|
public List<string> MitigationSuggestions { get; set; } = new();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 风险因子
|
|
/// </summary>
|
|
public class RiskFactor
|
|
{
|
|
/// <summary>
|
|
/// 风险类型
|
|
/// </summary>
|
|
public string RiskType { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// 风险描述
|
|
/// </summary>
|
|
public string Description { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// 风险等级
|
|
/// </summary>
|
|
public RiskLevel Level { get; set; } = RiskLevel.Low;
|
|
|
|
/// <summary>
|
|
/// 发生概率 (0-100)
|
|
/// </summary>
|
|
public double Probability { get; set; }
|
|
|
|
/// <summary>
|
|
/// 影响程度 (0-100)
|
|
/// </summary>
|
|
public double Impact { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// 决策评分
|
|
/// </summary>
|
|
public class DecisionScore
|
|
{
|
|
/// <summary>
|
|
/// 最终评分
|
|
/// </summary>
|
|
public double FinalScore { get; set; }
|
|
|
|
/// <summary>
|
|
/// 置信度
|
|
/// </summary>
|
|
public double ConfidenceLevel { get; set; }
|
|
|
|
/// <summary>
|
|
/// 风险等级
|
|
/// </summary>
|
|
public RiskLevel RiskLevel { get; set; } = RiskLevel.Low;
|
|
|
|
/// <summary>
|
|
/// 决策理由
|
|
/// </summary>
|
|
public string DecisionReason { get; set; } = string.Empty;
|
|
}
|
|
} |