Merge remote-tracking branch 'origin/master'(告警中心/通知模块 与 产品/物模型模块 合并,EntityMapper.cs 保留双方映射区域)
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
using Model.Entity.Inspection;
|
||||
|
||||
namespace Model.Dto.Inspection
|
||||
{
|
||||
/// <summary>
|
||||
/// 告警消息 DTO(Id 转 string 防前端精度丢失)
|
||||
/// </summary>
|
||||
public class AlertMessageDto
|
||||
{
|
||||
/// <summary>主键 Id</summary>
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
public DateTime? CreateTime { get; set; }
|
||||
|
||||
/// <summary>告警来源</summary>
|
||||
public AlertSourceEnum Source { get; set; }
|
||||
|
||||
/// <summary>关联告警规则Id("0"表示无)</summary>
|
||||
public string? RuleId { get; set; }
|
||||
|
||||
/// <summary>设备编号</summary>
|
||||
public string? DeviceCode { get; set; }
|
||||
|
||||
/// <summary>设备名称</summary>
|
||||
public string? DeviceName { get; set; }
|
||||
|
||||
/// <summary>设备类型</summary>
|
||||
public string? DeviceType { get; set; }
|
||||
|
||||
/// <summary>测点/监测指标</summary>
|
||||
public string? Metric { get; set; }
|
||||
|
||||
/// <summary>告警类型</summary>
|
||||
public AlertTypeEnum AlertType { get; set; }
|
||||
|
||||
/// <summary>告警级别(1信息/2警告/3紧急)</summary>
|
||||
public AlertLevelEnum AlertLevel { get; set; }
|
||||
|
||||
/// <summary>当前值</summary>
|
||||
public double? CurrentValue { get; set; }
|
||||
|
||||
/// <summary>阈值</summary>
|
||||
public double? ThresholdValue { get; set; }
|
||||
|
||||
/// <summary>告警内容描述</summary>
|
||||
public string? Content { get; set; }
|
||||
|
||||
/// <summary>通知模板编码(预留)</summary>
|
||||
public string? TemplateCode { get; set; }
|
||||
|
||||
/// <summary>触发次数(合并窗口内累计)</summary>
|
||||
public int TriggerCount { get; set; }
|
||||
|
||||
/// <summary>首次告警时间</summary>
|
||||
public DateTime FirstAlertTime { get; set; }
|
||||
|
||||
/// <summary>最近告警时间</summary>
|
||||
public DateTime LastAlertTime { get; set; }
|
||||
|
||||
/// <summary>告警状态(1未确认/2已确认/3已处理/4已关闭/5已忽略/6已转工单)</summary>
|
||||
public AlertStatusEnum AlertStatus { get; set; }
|
||||
|
||||
/// <summary>确认人</summary>
|
||||
public string? AckBy { get; set; }
|
||||
|
||||
/// <summary>确认时间</summary>
|
||||
public DateTime? AckTime { get; set; }
|
||||
|
||||
/// <summary>处理人</summary>
|
||||
public string? HandleBy { get; set; }
|
||||
|
||||
/// <summary>处理时间</summary>
|
||||
public DateTime? HandleTime { get; set; }
|
||||
|
||||
/// <summary>处理备注</summary>
|
||||
public string? HandleRemark { get; set; }
|
||||
|
||||
/// <summary>关联工单Id(预留二期,"0"表示未转工单)</summary>
|
||||
public string? WorkOrderId { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,136 @@
|
||||
using Model.Entity.Inspection;
|
||||
|
||||
namespace Model.Dto.Inspection
|
||||
{
|
||||
/// <summary>
|
||||
/// 通知渠道 DTO(Id 转 string;Secret 出口脱敏为是否已配置)
|
||||
/// </summary>
|
||||
public class AlertNotifyChannelDto
|
||||
{
|
||||
/// <summary>主键 Id</summary>
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
public DateTime? CreateTime { get; set; }
|
||||
|
||||
/// <summary>渠道类型(1飞书/2钉钉/3企微)</summary>
|
||||
public NotifyChannelTypeEnum ChannelType { get; set; }
|
||||
|
||||
/// <summary>渠道名称</summary>
|
||||
public string? Name { get; set; }
|
||||
|
||||
/// <summary>Webhook 地址</summary>
|
||||
public string? WebhookUrl { get; set; }
|
||||
|
||||
/// <summary>加签密钥(入参可传;出口仅返回脱敏标记,不回传明文)</summary>
|
||||
public string? Secret { get; set; }
|
||||
|
||||
/// <summary>是否已配置加签密钥(出口专用)</summary>
|
||||
public bool HasSecret { get; set; }
|
||||
|
||||
/// <summary>推送模式(1直连/2Outbox跨网中转)</summary>
|
||||
public NotifyPushModeEnum PushMode { get; set; }
|
||||
|
||||
/// <summary>是否启用</summary>
|
||||
public bool IsEnabled { get; set; }
|
||||
|
||||
/// <summary>备注</summary>
|
||||
public string? Remark { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通知规则 DTO
|
||||
/// </summary>
|
||||
public class AlertNotifyRuleDto
|
||||
{
|
||||
/// <summary>主键 Id</summary>
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
public DateTime? CreateTime { get; set; }
|
||||
|
||||
/// <summary>规则名称</summary>
|
||||
public string? RuleName { get; set; }
|
||||
|
||||
/// <summary>适用告警级别(1信息/2警告/3紧急)</summary>
|
||||
public AlertLevelEnum AlertLevel { get; set; }
|
||||
|
||||
/// <summary>通知渠道Id</summary>
|
||||
public string? ChannelId { get; set; }
|
||||
|
||||
/// <summary>接收人(@手机号/账号,逗号分隔)</summary>
|
||||
public string? Receivers { get; set; }
|
||||
|
||||
/// <summary>是否通知当班值班人</summary>
|
||||
public bool NotifyDutyPerson { get; set; }
|
||||
|
||||
/// <summary>静默期(分钟)</summary>
|
||||
public int SilenceMinutes { get; set; }
|
||||
|
||||
/// <summary>是否启用</summary>
|
||||
public bool IsEnabled { get; set; }
|
||||
|
||||
/// <summary>备注</summary>
|
||||
public string? Remark { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 推送日志 DTO
|
||||
/// </summary>
|
||||
public class AlertNotifyLogDto
|
||||
{
|
||||
/// <summary>主键 Id</summary>
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>告警消息Id("0"表示渠道测试推送)</summary>
|
||||
public string? AlertId { get; set; }
|
||||
|
||||
/// <summary>渠道类型</summary>
|
||||
public NotifyChannelTypeEnum ChannelType { get; set; }
|
||||
|
||||
/// <summary>渠道Id</summary>
|
||||
public string? ChannelId { get; set; }
|
||||
|
||||
/// <summary>推送目标(脱敏)</summary>
|
||||
public string? Target { get; set; }
|
||||
|
||||
/// <summary>推送内容摘要</summary>
|
||||
public string? Content { get; set; }
|
||||
|
||||
/// <summary>是否成功</summary>
|
||||
public bool Success { get; set; }
|
||||
|
||||
/// <summary>错误信息</summary>
|
||||
public string? ErrorMsg { get; set; }
|
||||
|
||||
/// <summary>重试次数</summary>
|
||||
public int RetryCount { get; set; }
|
||||
|
||||
/// <summary>推送时间</summary>
|
||||
public DateTime NotifyTime { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 值班排班 DTO
|
||||
/// </summary>
|
||||
public class DutyRosterDto
|
||||
{
|
||||
/// <summary>主键 Id</summary>
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
public DateTime? CreateTime { get; set; }
|
||||
|
||||
/// <summary>值班日期</summary>
|
||||
public DateTime DutyDate { get; set; }
|
||||
|
||||
/// <summary>值班人姓名</summary>
|
||||
public string? PersonName { get; set; }
|
||||
|
||||
/// <summary>联系电话</summary>
|
||||
public string? Phone { get; set; }
|
||||
|
||||
/// <summary>备注</summary>
|
||||
public string? Remark { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
namespace Model.Dto.Inspection
|
||||
{
|
||||
/// <summary>
|
||||
/// 跨网发件箱拉取结果 DTO(AlertBridge 拉取到的待推送项;Payload 自包含全部推送要素)
|
||||
/// </summary>
|
||||
public class AlertOutboxItemDto
|
||||
{
|
||||
/// <summary>发件箱 Id(回写结果时使用)</summary>
|
||||
public string? Id { get; set; }
|
||||
|
||||
/// <summary>告警消息Id</summary>
|
||||
public string? AlertId { get; set; }
|
||||
|
||||
/// <summary>渠道Id</summary>
|
||||
public string? ChannelId { get; set; }
|
||||
|
||||
/// <summary>完整推送报文 JSON(AlertOutboxPayload 序列化)</summary>
|
||||
public string? Payload { get; set; }
|
||||
|
||||
/// <summary>重试次数</summary>
|
||||
public int RetryCount { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 发件箱推送报文(自包含:AlertBridge 无需访问数据库/配置即可推送)
|
||||
/// </summary>
|
||||
public class AlertOutboxPayload
|
||||
{
|
||||
/// <summary>渠道类型(1飞书/2钉钉/3企微)</summary>
|
||||
public int ChannelType { get; set; }
|
||||
|
||||
/// <summary>Webhook 地址</summary>
|
||||
public string? WebhookUrl { get; set; }
|
||||
|
||||
/// <summary>加签密钥(可空)</summary>
|
||||
public string? Secret { get; set; }
|
||||
|
||||
/// <summary>消息标题</summary>
|
||||
public string? Title { get; set; }
|
||||
|
||||
/// <summary>消息正文(markdown)</summary>
|
||||
public string? Content { get; set; }
|
||||
|
||||
/// <summary>@ 手机号列表</summary>
|
||||
public List<string>? AtMobiles { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 发件箱结果回写 DTO(AlertBridge 推送完成后回写)
|
||||
/// </summary>
|
||||
public class OutboxResultDto
|
||||
{
|
||||
/// <summary>是否成功</summary>
|
||||
public bool Success { get; set; }
|
||||
|
||||
/// <summary>结果信息(失败原因)</summary>
|
||||
public string? ResultMsg { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
using Model.Entity.Inspection;
|
||||
|
||||
namespace Model.Dto.Inspection
|
||||
{
|
||||
/// <summary>
|
||||
/// 告警上报 DTO(其它模块调用告警中心的统一入参:IAlertCenterService.RaiseAsync / POST raise)
|
||||
/// 除设备标识外全部可空,降低调用方接入成本
|
||||
/// </summary>
|
||||
public class AlertRaiseDto
|
||||
{
|
||||
/// <summary>告警来源(调用方标识自身模块)</summary>
|
||||
public AlertSourceEnum Source { get; set; } = AlertSourceEnum.Other;
|
||||
|
||||
/// <summary>关联告警规则Id(来源为规则引擎时传,可空/0 表示无)</summary>
|
||||
public long RuleId { get; set; }
|
||||
|
||||
/// <summary>设备编号(建议必传,用于去重合并)</summary>
|
||||
public string? DeviceCode { get; set; }
|
||||
|
||||
/// <summary>设备名称</summary>
|
||||
public string? DeviceName { get; set; }
|
||||
|
||||
/// <summary>设备类型(如 TemperatureBox)</summary>
|
||||
public string? DeviceType { get; set; }
|
||||
|
||||
/// <summary>测点/监测指标(如 Temperature)</summary>
|
||||
public string? Metric { get; set; }
|
||||
|
||||
/// <summary>告警类型(默认阈值超限)</summary>
|
||||
public AlertTypeEnum AlertType { get; set; } = AlertTypeEnum.ThresholdExceed;
|
||||
|
||||
/// <summary>告警级别(1信息/2警告/3紧急)</summary>
|
||||
public AlertLevelEnum AlertLevel { get; set; } = AlertLevelEnum.Warning;
|
||||
|
||||
/// <summary>当前值</summary>
|
||||
public double? CurrentValue { get; set; }
|
||||
|
||||
/// <summary>阈值</summary>
|
||||
public double? ThresholdValue { get; set; }
|
||||
|
||||
/// <summary>告警内容描述(空则由告警中心按内置模板生成)</summary>
|
||||
public string? Content { get; set; }
|
||||
|
||||
/// <summary>通知模板编码(预留对接通知模板模块)</summary>
|
||||
public string? TemplateCode { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 告警操作 DTO(确认/处理/关闭/忽略/转工单 共用入参)
|
||||
/// </summary>
|
||||
public class AlertOperateDto
|
||||
{
|
||||
/// <summary>操作人</summary>
|
||||
public string? Operator { get; set; }
|
||||
|
||||
/// <summary>备注(处理说明/忽略原因等)</summary>
|
||||
public string? Remark { get; set; }
|
||||
|
||||
/// <summary>工单Id(仅转工单时使用,二期工单模块创建后回填,可空)</summary>
|
||||
public long WorkOrderId { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
namespace Model.Dto.Inspection
|
||||
{
|
||||
/// <summary>
|
||||
/// 告警趋势统计项(按日/周/月分桶)
|
||||
/// </summary>
|
||||
public class AlertTrendItemDto
|
||||
{
|
||||
/// <summary>时间桶(日:yyyy-MM-dd / 周:yyyy-Www / 月:yyyy-MM)</summary>
|
||||
public string Bucket { get; set; }
|
||||
|
||||
/// <summary>告警总数</summary>
|
||||
public int Total { get; set; }
|
||||
|
||||
/// <summary>信息级数量</summary>
|
||||
public int InfoCount { get; set; }
|
||||
|
||||
/// <summary>警告级数量</summary>
|
||||
public int WarningCount { get; set; }
|
||||
|
||||
/// <summary>紧急级数量</summary>
|
||||
public int UrgentCount { get; set; }
|
||||
|
||||
/// <summary>未闭环数量(未确认+已确认未处理)</summary>
|
||||
public int UnhandledCount { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 告警分布统计项(按设备/类型/级别/来源维度)
|
||||
/// </summary>
|
||||
public class AlertDistributionItemDto
|
||||
{
|
||||
/// <summary>维度名称</summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>数量</summary>
|
||||
public int Count { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 高频告警 TOP 排名项
|
||||
/// </summary>
|
||||
public class AlertTopItemDto
|
||||
{
|
||||
/// <summary>设备编号</summary>
|
||||
public string? DeviceCode { get; set; }
|
||||
|
||||
/// <summary>设备名称</summary>
|
||||
public string? DeviceName { get; set; }
|
||||
|
||||
/// <summary>告警次数(含合并累计 TriggerCount)</summary>
|
||||
public int Count { get; set; }
|
||||
|
||||
/// <summary>最近告警时间</summary>
|
||||
public DateTime LastAlertTime { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 告警处理及时率统计
|
||||
/// </summary>
|
||||
public class AlertTimelinessDto
|
||||
{
|
||||
/// <summary>统计范围内告警总数</summary>
|
||||
public int Total { get; set; }
|
||||
|
||||
/// <summary>已确认数(含已处理/已关闭)</summary>
|
||||
public int AckCount { get; set; }
|
||||
|
||||
/// <summary>已处理/已关闭数</summary>
|
||||
public int HandledCount { get; set; }
|
||||
|
||||
/// <summary>未闭环数</summary>
|
||||
public int UnhandledCount { get; set; }
|
||||
|
||||
/// <summary>平均确认时长(分钟,无确认记录为 null)</summary>
|
||||
public double? AvgAckMinutes { get; set; }
|
||||
|
||||
/// <summary>平均处理时长(分钟,无处理记录为 null)</summary>
|
||||
public double? AvgHandleMinutes { get; set; }
|
||||
|
||||
/// <summary>及时率(%):30 分钟内确认的占比</summary>
|
||||
public double TimelyRate { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 告警概览统计(列表页顶部卡片)
|
||||
/// </summary>
|
||||
public class AlertOverviewDto
|
||||
{
|
||||
/// <summary>未确认数量</summary>
|
||||
public int UnacknowledgedCount { get; set; }
|
||||
|
||||
/// <summary>今日新增数量</summary>
|
||||
public int TodayCount { get; set; }
|
||||
|
||||
/// <summary>今日紧急数量</summary>
|
||||
public int TodayUrgentCount { get; set; }
|
||||
|
||||
/// <summary>近7日总数</summary>
|
||||
public int WeekCount { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user