package dto import ( "time" "git.huangwc.com/pig/pig-farm-controller/internal/infra/models" ) // SnoozeAlarmRequest 定义了忽略告警的请求体 type SnoozeAlarmRequest struct { 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"` // 按告警来源类型过滤 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 { ID uint32 `json:"id"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` SourceType models.AlarmSourceType `json:"source_type"` 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"` // 按告警来源类型过滤 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 { ID uint32 `json:"id"` SourceType models.AlarmSourceType `json:"source_type"` SourceID uint32 `json:"source_id"` AlarmCode models.AlarmCode `json:"alarm_code"` AlarmSummary string `json:"alarm_summary"` Level models.SeverityLevel `json:"level"` AlarmDetails string `json:"json_details"` TriggerTime time.Time `json:"trigger_time"` ResolveTime time.Time `json:"resolve_time"` ResolveMethod string `json:"resolve_method"` ResolvedBy *uint32 `json:"resolved_by"` } // ListHistoricalAlarmResponse 是获取历史告警列表的响应结构 type ListHistoricalAlarmResponse struct { List []HistoricalAlarmDTO `json:"list"` Pagination PaginationDTO `json:"pagination"` } // CreateDeviceThresholdAlarmDTO 创建设备阈值告警的请求DTO type CreateDeviceThresholdAlarmDTO struct { DeviceID uint32 `json:"device_id" binding:"required"` // 设备ID SensorType models.SensorType `json:"sensor_type" binding:"required"` // 传感器类型 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 { Thresholds float32 `json:"thresholds" binding:"required"` // 新的阈值 Operator models.Operator `json:"operator" binding:"required"` // 新的操作符 Level models.SeverityLevel `json:"level,omitempty"` // 新的告警等级,可选 } // CreateAreaThresholdAlarmDTO 创建区域阈值告警的请求DTO type CreateAreaThresholdAlarmDTO struct { AreaControllerID uint32 `json:"area_controller_id" binding:"required"` // 区域主控ID SensorType models.SensorType `json:"sensor_type" binding:"required"` // 传感器类型 Thresholds float32 `json:"thresholds" binding:"required"` // 阈值 Operator models.Operator `json:"operator" binding:"required"` // 操作符 Level models.SeverityLevel `json:"level,omitempty"` // 告警等级,可选 } // UpdateAreaThresholdAlarmDTO 更新区域阈值告警的请求DTO type UpdateAreaThresholdAlarmDTO struct { 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"` AreaControllerID uint32 `json:"area_controller_id"` SensorType models.SensorType `json:"sensor_type"` Thresholds float32 `json:"thresholds"` Operator models.Operator `json:"operator"` Level models.SeverityLevel `json:"level"` } // DeviceThresholdAlarmDTO 用于表示一个设备阈值告警任务的详细信息 type DeviceThresholdAlarmDTO struct { ID int `json:"id"` DeviceID uint32 `json:"device_id"` SensorType models.SensorType `json:"sensor_type"` Thresholds float32 `json:"thresholds"` Operator models.Operator `json:"operator"` Level models.SeverityLevel `json:"level"` } // 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"` }