using Dpz.Core.EnumLibrary;

namespace Dpz.Core.Public.ViewModel.Request;

/// <summary>
/// Represents the SaveHealthCheckRequest type.
/// </summary>
public class SaveHealthCheckRequest
{
    /// <summary>
    /// Gets or sets Id.
    /// </summary>
    public string Id { get; set; } = "";

    #region 基础属性

    /// <summary>
    /// 服务名称(必需)
    /// </summary>
    public required string Name { get; set; }

    /// <summary>
    /// 检测地址(必需)
    /// </summary>
    public required string Endpoint { get; set; }

    /// <summary>
    /// 协议类型(扩展)
    /// </summary>
    public ProtocolType Protocol { get; set; }

    /// <summary>
    /// 检测间隔(必需)
    /// </summary>
    public required TimeSpan Interval { get; set; }

    /// <summary>
    /// 当前健康状态
    /// </summary>
    public HealthStatus Status { get; set; }

    /// <summary>
    /// 上次检测时间
    /// </summary>
    public DateTime? LastCheckTime { get; set; }

    #endregion

    #region 重试配置

    /// <summary>
    /// 失败重试次数(默认3)
    /// </summary>
    public int RetryCount { get; set; } = 3;

    /// <summary>
    /// 超时时间(默认5s)
    /// </summary>
    public TimeSpan Timeout { get; set; } = TimeSpan.FromSeconds(5);

    #endregion

    #region 状态追踪

    /// <summary>
    /// 最后检测耗时
    /// </summary>
    public TimeSpan? LastCheckDuration { get; set; }

    /// <summary>
    /// 错误信息
    /// </summary>
    public string? ErrorMessage { get; set; }

    // 配置属性

    /// <summary>
    /// 是否启用检测
    /// </summary>
    public bool IsEnabled { get; set; } = true;

    /// <summary>
    /// 服务描述
    /// </summary>
    public string? Description { get; set; }

    #endregion

    #region 分类管理

    /// <summary>
    /// 检测优先级(1-5)
    /// </summary>
    public int Priority { get; set; } = 1;

    /// <summary>
    /// 分类标签
    /// </summary>
    public List<string> Tags { get; set; } = [];

    #endregion
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

这是一个用于保存健康检查配置的请求模型类,属于 ViewModel 层的数据传输对象(DTO)。让我详细解释一下这个代码:

类的用途

SaveHealthCheckRequest 用于封装保存或更新健康检查服务配置时需要传递的所有参数。

主要属性分析

1. 基础标识

  • Id: 健康检查配置的唯一标识符,用于区分新增还是更新操作

2. 基础属性(核心配置)

  • Name: 服务名称,使用 required 关键字标记为必需字段
  • Endpoint: 检测的目标地址/URL,也是必需字段
  • Protocol: 协议类型(如HTTP、TCP等),使用枚举类型
  • Interval: 检测间隔时间,必需字段,控制多久执行一次健康检查
  • Status: 当前健康状态(如健康、不健康、未知等)
  • LastCheckTime: 上次执行检查的时间

3. 重试配置

  • RetryCount: 失败时的重试次数,默认3次
  • Timeout: 单次检查的超时时间,默认5秒

4. 状态追踪

  • LastCheckDuration: 最后一次检查耗时,用于性能监控
  • ErrorMessage: 检查失败时的错误信息
  • IsEnabled: 是否启用该健康检查,默认启用
  • Description: 服务的详细描述

5. 分类管理

  • Priority: 检查优先级(1-5级),可能用于调度顺序
  • Tags: 分类标签列表,用于服务分组和筛选

设计特点

  1. 数据验证: 使用 required 关键字确保关键字段不为空
  2. 默认值设置: 为常用配置提供合理的默认值
  3. 可空类型: 对于可选或状态相关的字段使用可空类型
  4. 分组组织: 通过 #region 将相关属性进行逻辑分组
  5. 现代C#语法: 使用了集合表达式 [] 和 required 修饰符

这个类为健康检查系统提供了完整的配置数据结构,支持灵活的监控策略配置。

评论加载中...