Files
pig-farm-controller/internal/app/dto/alarm_dto.go

173 lines
9.6 KiB
Go
Raw Normal View History

package dto
import (
"time"
"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
)
// SnoozeAlarmRequest 定义了忽略告警的请求体
type SnoozeAlarmRequest struct {
2025-11-10 22:23:31 +08:00
DurationMinutes uint32 `json:"duration_minutes" validate:"required,min=1"` // 忽略时长,单位分钟
}
// ListActiveAlarmRequest 定义了获取活跃告警列表的请求参数
type ListActiveAlarmRequest struct {
Page int `json:"page" query:"page"`
PageSize int `json:"page_size" query:"page_size"`
SourceType *models.AlarmSourceType `json:"source_type" query:"source_type"` // 按告警来源类型过滤
2025-11-10 22:23:31 +08:00
SourceID *uint32 `json:"source_id" query:"source_id"` // 按告警来源ID过滤
Level *models.SeverityLevel `json:"level" query:"level"` // 按告警严重性等级过滤
IsIgnored *bool `json:"is_ignored" query:"is_ignored"` // 按是否被忽略过滤
TriggerTime *time.Time `json:"trigger_time" query:"trigger_time"` // 告警触发时间范围 - 开始时间
EndTime *time.Time `json:"end_time" query:"end_time"` // 告警触发时间范围 - 结束时间
OrderBy string `json:"order_by" query:"order_by"` // 排序字段,例如 "trigger_time DESC"
}
// ActiveAlarmDTO 是用于API响应的活跃告警结构
type ActiveAlarmDTO struct {
2025-11-10 22:23:31 +08:00
ID uint32 `json:"id"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
SourceType models.AlarmSourceType `json:"source_type"`
2025-11-10 22:23:31 +08:00
SourceID uint32 `json:"source_id"`
AlarmCode models.AlarmCode `json:"alarm_code"`
AlarmSummary string `json:"alarm_summary"`
Level models.SeverityLevel `json:"level"`
AlarmDetails string `json:"alarm_details"`
TriggerTime time.Time `json:"trigger_time"`
IsIgnored bool `json:"is_ignored"`
IgnoredUntil *time.Time `json:"ignored_until"`
LastNotifiedAt *time.Time `json:"last_notified_at"`
}
// ListActiveAlarmResponse 是获取活跃告警列表的响应结构
type ListActiveAlarmResponse struct {
List []ActiveAlarmDTO `json:"list"`
Pagination PaginationDTO `json:"pagination"`
}
// ListHistoricalAlarmRequest 定义了获取历史告警列表的请求参数
type ListHistoricalAlarmRequest struct {
Page int `json:"page" query:"page"`
PageSize int `json:"page_size" query:"page_size"`
SourceType *models.AlarmSourceType `json:"source_type" query:"source_type"` // 按告警来源类型过滤
2025-11-10 22:23:31 +08:00
SourceID *uint32 `json:"source_id" query:"source_id"` // 按告警来源ID过滤
Level *models.SeverityLevel `json:"level" query:"level"` // 按告警严重性等级过滤
TriggerTimeStart *time.Time `json:"trigger_time_start" query:"trigger_time_start"` // 告警触发时间范围 - 开始时间
TriggerTimeEnd *time.Time `json:"trigger_time_end" query:"trigger_time_end"` // 告警触发时间范围 - 结束时间
ResolveTimeStart *time.Time `json:"resolve_time_start" query:"resolve_time_start"` // 告警解决时间范围 - 开始时间
ResolveTimeEnd *time.Time `json:"resolve_time_end" query:"resolve_time_end"` // 告警解决时间范围 - 结束时间
OrderBy string `json:"order_by" query:"order_by"` // 排序字段,例如 "trigger_time DESC"
}
// HistoricalAlarmDTO 是用于API响应的历史告警结构
type HistoricalAlarmDTO struct {
2025-11-10 22:23:31 +08:00
ID uint32 `json:"id"`
SourceType models.AlarmSourceType `json:"source_type"`
2025-11-10 22:23:31 +08:00
SourceID uint32 `json:"source_id"`
AlarmCode models.AlarmCode `json:"alarm_code"`
AlarmSummary string `json:"alarm_summary"`
Level models.SeverityLevel `json:"level"`
2025-11-16 16:30:26 +08:00
AlarmDetails string `json:"json_details"`
TriggerTime time.Time `json:"trigger_time"`
ResolveTime time.Time `json:"resolve_time"`
ResolveMethod string `json:"resolve_method"`
2025-11-10 22:23:31 +08:00
ResolvedBy *uint32 `json:"resolved_by"`
}
// ListHistoricalAlarmResponse 是获取历史告警列表的响应结构
type ListHistoricalAlarmResponse struct {
List []HistoricalAlarmDTO `json:"list"`
Pagination PaginationDTO `json:"pagination"`
}
// CreateDeviceThresholdAlarmDTO 创建设备阈值告警的请求DTO
type CreateDeviceThresholdAlarmDTO struct {
2025-11-10 22:23:31 +08:00
DeviceID uint32 `json:"device_id" binding:"required"` // 设备ID
SensorType models.SensorType `json:"sensor_type" binding:"required"` // 传感器类型
2025-11-10 21:42:46 +08:00
Thresholds float32 `json:"thresholds" binding:"required"` // 阈值
Operator models.Operator `json:"operator" binding:"required"` // 操作符 (使用string类型与前端交互更通用)
Level models.SeverityLevel `json:"level,omitempty"` // 告警等级,可选,如果未提供则使用默认值
}
// UpdateDeviceThresholdAlarmDTO 更新设备阈值告警的请求DTO
type UpdateDeviceThresholdAlarmDTO struct {
2025-11-10 21:42:46 +08:00
Thresholds float32 `json:"thresholds" binding:"required"` // 新的阈值
Operator models.Operator `json:"operator" binding:"required"` // 新的操作符
Level models.SeverityLevel `json:"level,omitempty"` // 新的告警等级,可选
}
// CreateAreaThresholdAlarmDTO 创建区域阈值告警的请求DTO
type CreateAreaThresholdAlarmDTO struct {
2025-11-10 22:23:31 +08:00
AreaControllerID uint32 `json:"area_controller_id" binding:"required"` // 区域主控ID
SensorType models.SensorType `json:"sensor_type" binding:"required"` // 传感器类型
2025-11-10 21:42:46 +08:00
Thresholds float32 `json:"thresholds" binding:"required"` // 阈值
Operator models.Operator `json:"operator" binding:"required"` // 操作符
Level models.SeverityLevel `json:"level,omitempty"` // 告警等级,可选
}
// UpdateAreaThresholdAlarmDTO 更新区域阈值告警的请求DTO
type UpdateAreaThresholdAlarmDTO struct {
2025-11-10 21:42:46 +08:00
Thresholds float32 `json:"thresholds" binding:"required"` // 新的阈值
Operator models.Operator `json:"operator" binding:"required"` // 新的操作符
Level models.SeverityLevel `json:"level,omitempty"` // 新的告警等级,可选
}
// DeleteDeviceThresholdAlarmDTO 删除设备阈值告警的请求DTO
type DeleteDeviceThresholdAlarmDTO struct {
SensorType models.SensorType `json:"sensor_type" binding:"required"` // 传感器类型
}
// AreaThresholdAlarmDTO 用于表示一个区域阈值告警任务的详细信息
type AreaThresholdAlarmDTO struct {
ID int `json:"id"`
2025-11-10 22:23:31 +08:00
AreaControllerID uint32 `json:"area_controller_id"`
SensorType models.SensorType `json:"sensor_type"`
2025-11-10 21:42:46 +08:00
Thresholds float32 `json:"thresholds"`
Operator models.Operator `json:"operator"`
Level models.SeverityLevel `json:"level"`
}
// DeviceThresholdAlarmDTO 用于表示一个设备阈值告警任务的详细信息
type DeviceThresholdAlarmDTO struct {
ID int `json:"id"`
2025-11-10 22:23:31 +08:00
DeviceID uint32 `json:"device_id"`
SensorType models.SensorType `json:"sensor_type"`
2025-11-10 21:42:46 +08:00
Thresholds float32 `json:"thresholds"`
Operator models.Operator `json:"operator"`
Level models.SeverityLevel `json:"level"`
}
2025-11-16 16:30:26 +08:00
// ListDeviceThresholdAlarmRequest 定义了获取设备阈值告警列表的请求参数
type ListDeviceThresholdAlarmRequest struct {
Page int `json:"page" query:"page"`
PageSize int `json:"page_size" query:"page_size"`
DeviceID *uint32 `json:"device_id" query:"device_id"` // 按设备ID过滤
SensorType *models.SensorType `json:"sensor_type" query:"sensor_type"` // 按传感器类型过滤
Level *models.SeverityLevel `json:"level" query:"level"` // 按告警等级过滤
OrderBy string `json:"order_by" query:"order_by"` // 排序字段,例如 "id DESC"
}
// ListDeviceThresholdAlarmResponse 是获取设备阈值告警列表的响应结构
type ListDeviceThresholdAlarmResponse struct {
List []DeviceThresholdAlarmDTO `json:"list"`
Pagination PaginationDTO `json:"pagination"`
}
// ListAreaThresholdAlarmRequest 定义了获取区域阈值告警列表的请求参数
type ListAreaThresholdAlarmRequest struct {
Page int `json:"page" query:"page"`
PageSize int `json:"page_size" query:"page_size"`
AreaControllerID *uint32 `json:"area_controller_id" query:"area_controller_id"` // 按区域主控ID过滤
SensorType *models.SensorType `json:"sensor_type" query:"sensor_type"` // 按传感器类型过滤
Level *models.SeverityLevel `json:"level" query:"level"` // 按告警等级过滤
OrderBy string `json:"order_by" query:"order_by"` // 排序字段,例如 "id DESC"
}
// ListAreaThresholdAlarmResponse 是获取区域阈值告警列表的响应结构
type ListAreaThresholdAlarmResponse struct {
List []AreaThresholdAlarmDTO `json:"list"`
Pagination PaginationDTO `json:"pagination"`
}