实现设备阈值检查任务
This commit is contained in:
@@ -15,28 +15,51 @@ const (
|
||||
AlarmSourceTypeSystem AlarmSourceType = "系统"
|
||||
)
|
||||
|
||||
// AlarmCode 定义了标准化的告警类型标识
|
||||
type AlarmCode string
|
||||
|
||||
const (
|
||||
// --- 设备相关告警 ---
|
||||
AlarmCodeTemperature AlarmCode = "温度阈值"
|
||||
AlarmCodeHumidity AlarmCode = "湿度阈值"
|
||||
AlarmCodeWeight AlarmCode = "重量阈值"
|
||||
AlarmCodeBatteryLevel AlarmCode = "电池电量阈值"
|
||||
AlarmCodeSignalMetrics AlarmCode = "信号强度阈值"
|
||||
AlarmCodeDeviceOffline AlarmCode = "设备离线"
|
||||
|
||||
// --- 区域主控相关告警 ---
|
||||
AlarmCodeAreaControllerOffline AlarmCode = "区域主控离线"
|
||||
|
||||
// --- 系统相关告警 ---
|
||||
// (可在此处预留或添加)
|
||||
)
|
||||
|
||||
// ActiveAlarm 活跃告警
|
||||
// 活跃告警会被更新(如忽略状态),因此保留 gorm.Model 以包含所有标准字段。
|
||||
type ActiveAlarm struct {
|
||||
gorm.Model
|
||||
|
||||
SourceType AlarmSourceType `gorm:"type:varchar(50);not null;index;comment:告警来源类型" json:"source_type"`
|
||||
SourceType AlarmSourceType `gorm:"type:varchar(50);not null;index:idx_alarm_uniqueness;comment:告警来源类型" json:"source_type"`
|
||||
// SourceID 告警来源ID,其具体含义取决于 SourceType 字段 (例如:设备ID, 区域主控ID, 猪栏ID)。
|
||||
SourceID uint `gorm:"not null;index;comment:告警来源ID" json:"source_id"`
|
||||
SourceID uint `gorm:"not null;index:idx_alarm_uniqueness;comment:告警来源ID" json:"source_id"`
|
||||
|
||||
// AlarmCode 是一个机器可读的、标准化的告警类型标识。
|
||||
// 它与 SourceType 和 SourceID 共同构成一个活跃告警的唯一标识。
|
||||
AlarmCode AlarmCode `gorm:"type:varchar(100);not null;index:idx_alarm_uniqueness;comment:告警代码" json:"alarm_code"`
|
||||
|
||||
AlarmSummary string `gorm:"comment:告警简述" json:"alarm_summary"`
|
||||
Level SeverityLevel `gorm:"type:varchar(10);not null;comment:严重性等级" json:"level"`
|
||||
Level SeverityLevel `gorm:"type:varchar(10);not null;index:idx_notification_query;comment:严重性等级" json:"level"`
|
||||
AlarmDetails string `gorm:"comment:告警详细内容" json:"alarm_details"`
|
||||
TriggerTime time.Time `gorm:"not null;comment:告警触发时间" json:"trigger_time"`
|
||||
|
||||
// IsIgnored 是否被手动忽略 (Snooze)
|
||||
IsIgnored bool `gorm:"default:false;comment:是否被手动忽略" json:"is_ignored"`
|
||||
// IsIgnored 字段加入到专为通知查询优化的复合索引中
|
||||
IsIgnored bool `gorm:"default:false;index:idx_notification_query;comment:是否被手动忽略" json:"is_ignored"`
|
||||
// IgnoredUntil 忽略截止时间。在此时间之前,即使告警持续,也不会发送通知。
|
||||
// 使用指针类型 *time.Time 来表示可为空的时间。
|
||||
IgnoredUntil *time.Time `gorm:"comment:忽略截止时间" json:"ignored_until"`
|
||||
|
||||
// LastNotifiedAt 上次发送通知的时间。用于控制重复通知的频率。
|
||||
LastNotifiedAt *time.Time `gorm:"comment:上次发送通知时间" json:"last_notified_at"`
|
||||
// LastNotifiedAt 字段加入到专为通知查询优化的复合索引中
|
||||
LastNotifiedAt *time.Time `gorm:"index:idx_notification_query;comment:上次发送通知时间" json:"last_notified_at"`
|
||||
}
|
||||
|
||||
// TableName 指定 ActiveAlarm 结构体对应的数据库表名
|
||||
@@ -55,6 +78,9 @@ type HistoricalAlarm struct {
|
||||
// SourceID 告警来源ID,其具体含义取决于 SourceType 字段 (例如:设备ID, 区域主控ID, 猪栏ID)。
|
||||
SourceID uint `gorm:"not null;index;comment:告警来源ID" json:"source_id"`
|
||||
|
||||
// AlarmCode 是一个机器可读的、标准化的告警类型标识。
|
||||
AlarmCode AlarmCode `gorm:"type:varchar(100);not null;index;comment:告警代码" json:"alarm_code"`
|
||||
|
||||
AlarmSummary string `gorm:"comment:告警简述" json:"alarm_summary"`
|
||||
Level SeverityLevel `gorm:"type:varchar(10);not null;comment:严重性等级" json:"level"`
|
||||
AlarmDetails string `gorm:"comment:告警详细内容" json:"alarm_details"`
|
||||
|
||||
Reference in New Issue
Block a user