package core import ( "encoding/json" "strings" ) // ===== Нормализация значений CFS-параметров ===== // buildMapFixedDefault строит JSON-объект из дефолтов sub-параметров map-fixed. func buildMapFixedDefault(param universalCfsParam) string { result := make(map[string]string, len(param.DataDescriptor)) for key, sub := range param.DataDescriptor { result[key] = sub.DefaultValue } b, err := json.Marshal(result) if err != nil { return "{}" } return string(b) } func normalizeUniversalValueV6(val string, param universalCfsParam) string { trimmed := strings.TrimSpace(val) if strings.EqualFold(trimmed, "null") { trimmed = "" } if trimmed == "\"\"" { trimmed = "" } // map-fixed с DataDescriptor: если значение пустое или "{}" — строим JSON из дефолтов sub-params. dataType := strings.ToLower(param.DataType) if (dataType == "map-fixed" || strings.HasPrefix(dataType, "map")) && len(param.DataDescriptor) > 0 { if trimmed == "" || trimmed == "{}" { return buildMapFixedDefault(param) } return trimmed } if trimmed != "" { return trimmed } nameHint := strings.ToLower(param.Name + " " + param.Code + " " + param.Label + " " + param.SvcOperationCfsParam) if strings.Contains(dataType, "array") || strings.Contains(nameHint, "array") || strings.Contains(nameHint, "list") { return "[]" } if strings.Contains(dataType, "map") || strings.Contains(dataType, "json") || strings.Contains(nameHint, "map") || strings.Contains(nameHint, "json") { return "{}" } if strings.Contains(dataType, "integer") || strings.Contains(dataType, "int") { return "0" } if strings.Contains(dataType, "boolean") || strings.Contains(dataType, "bool") { return "false" } return trimmed }