@@ -1618,16 +1618,30 @@ func (ma *memberAPI) addOrEditAlertRule(c *gin.Context) {
16181618 log .Printf (" FailTriggerTasksRaw: %q (len=%d)" , arf .FailTriggerTasksRaw , len (arf .FailTriggerTasksRaw ))
16191619 log .Printf (" RecoverTriggerTasksRaw: %q (len=%d)" , arf .RecoverTriggerTasksRaw , len (arf .RecoverTriggerTasksRaw ))
16201620
1621- // 清理可能的编码问题
1622- // 如果值看起来像是被双重序列化的,尝试修复
1623- if strings .HasPrefix (arf .FailTriggerTasksRaw , `"` ) && strings .HasSuffix (arf .FailTriggerTasksRaw , `"` ) {
1621+ // 修复错误的数据格式
1622+ // 情况1: ["[]"] -> []
1623+ // 情况2: "[]" (被双引号包裹) -> []
1624+ // 情况3: "" (空字符串) -> []
1625+
1626+ // 处理 FailTriggerTasksRaw
1627+ if arf .FailTriggerTasksRaw == `["[]"]` || arf .FailTriggerTasksRaw == `[""]` {
1628+ arf .FailTriggerTasksRaw = "[]"
1629+ log .Printf (" 修复错误格式的 FailTriggerTasksRaw: [] (from %q)" , arf .FailTriggerTasksRaw )
1630+ } else if strings .HasPrefix (arf .FailTriggerTasksRaw , `"` ) && strings .HasSuffix (arf .FailTriggerTasksRaw , `"` ) {
1631+ // 双重序列化的情况:"[]" 或 "[1,2,3]"
16241632 var temp string
16251633 if err := utils .Json .Unmarshal ([]byte (arf .FailTriggerTasksRaw ), & temp ); err == nil {
16261634 arf .FailTriggerTasksRaw = temp
16271635 log .Printf (" 修复双重序列化的 FailTriggerTasksRaw: %q" , arf .FailTriggerTasksRaw )
16281636 }
16291637 }
1630- if strings .HasPrefix (arf .RecoverTriggerTasksRaw , `"` ) && strings .HasSuffix (arf .RecoverTriggerTasksRaw , `"` ) {
1638+
1639+ // 处理 RecoverTriggerTasksRaw
1640+ if arf .RecoverTriggerTasksRaw == `["[]"]` || arf .RecoverTriggerTasksRaw == `[""]` {
1641+ arf .RecoverTriggerTasksRaw = "[]"
1642+ log .Printf (" 修复错误格式的 RecoverTriggerTasksRaw: [] (from %q)" , arf .RecoverTriggerTasksRaw )
1643+ } else if strings .HasPrefix (arf .RecoverTriggerTasksRaw , `"` ) && strings .HasSuffix (arf .RecoverTriggerTasksRaw , `"` ) {
1644+ // 双重序列化的情况:"[]" 或 "[1,2,3]"
16311645 var temp string
16321646 if err := utils .Json .Unmarshal ([]byte (arf .RecoverTriggerTasksRaw ), & temp ); err == nil {
16331647 arf .RecoverTriggerTasksRaw = temp
0 commit comments