using Dpz.Core.EnumLibrary;

namespace Dpz.Core.Public.ViewModel.Response;

/// <summary>
/// Represents the HealthCheckResponse type.
/// </summary>
public class HealthCheckResponse
{
    /// <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分析的结果,请根据实际情况进行判断。

这是一个用于健康检查响应的数据传输对象(DTO)类,用于表示服务健康检查的结果和配置信息。让我详细解释一下这个类的结构和功能:

类概述

HealthCheckResponse 是一个响应视图模型类,用于封装健康检查服务的完整信息,包括服务配置、状态信息、重试策略等。

属性分析

1. 基础标识

public string Id { get; set; } = "";
  • 用于唯一标识每个健康检查项

2. 基础属性区域

public required string Name { get; set; }           // 服务名称(必填)
public required string Endpoint { get; set; }       // 检测地址(必填)
public ProtocolType Protocol { get; set; }          // 协议类型(HTTP/TCP等)
public required TimeSpan Interval { get; set; }     // 检测间隔(必填)
public HealthStatus Status { get; set; }            // 当前健康状态
public DateTime? LastCheckTime { get; set; }        // 上次检测时间

3. 重试配置区域

public int RetryCount { get; set; } = 3;                           // 失败重试次数
public TimeSpan Timeout { get; set; } = TimeSpan.FromSeconds(5);   // 超时时间

4. 状态追踪区域

public TimeSpan? LastCheckDuration { get; set; }    // 最后检测耗时
public string? ErrorMessage { get; set; }           // 错误信息
public bool IsEnabled { get; set; } = true;         // 是否启用检测
public string? Description { get; set; }            // 服务描述

5. 分类管理区域

public int Priority { get; set; } = 1;              // 检测优先级(1-5级)
public List<string> Tags { get; set; } = [];        // 分类标签

设计特点

  1. 必填字段验证: 使用 required 关键字确保关键属性必须赋值
  2. 默认值设置: 为常用属性提供合理的默认值
  3. 可空类型: 对于可能为空的状态信息使用可空类型
  4. 分区组织: 通过 #region 将相关属性分组,提高代码可读性
  5. 灵活配置: 支持优先级、标签等扩展配置

使用场景

这个类通常用于:

  • 微服务架构中的健康检查系统
  • 监控系统的服务状态报告
  • API 响应中返回服务健康状态
  • 服务注册与发现系统

这是一个设计良好的响应模型,既包含了核心的健康检查信息,又提供了丰富的配置和状态追踪功能。

评论加载中...