fix: s3Uid resolve by JSON key pattern (no DataDescriptor dependency)

This commit is contained in:
“Naeel”
2026-07-19 11:37:52 +04:00
parent 65b78f2a78
commit dd61b1b08d
8 changed files with 16 additions and 40 deletions
+6 -30
View File
@@ -1218,39 +1218,14 @@ func (c *UniversalClient) resolveRefSvcParamValues(ctx context.Context, opParams
return resolved, nil
}
// resolveS3UidInMapFixed парсит JSON map-fixed-параметра, находит uuid sub-params
// с именем по паттерну s3.*uid и резолвит значения-не-UUID в UUID через S3 (сервис 12).
// resolveS3UidInMapFixed парсит JSON map-fixed-параметра, находит ключи
// по паттерну s3.*uid (case-insensitive) и резолвит значения-не-UUID
// в UUID через S3 (сервис 12). Соглашение об именах: s3Uid, s3_uid, S3Uid → S3.
func (c *UniversalClient) resolveS3UidInMapFixed(paramId int, jsonValue string, opParams []universalCfsParam) string {
// Найти DataDescriptor для этого параметра
var dd map[string]universalSubParam
for _, p := range opParams {
if p.SvcOperationCfsParamId == paramId && len(p.DataDescriptor) > 0 {
dd = p.DataDescriptor
break
}
}
if len(dd) == 0 {
if jsonValue == "" || jsonValue == "{}" {
return jsonValue
}
// Найти uuid sub-params с s3.*uid в имени
s3uidKeys := make(map[string]bool)
re := strings.ToLower
for key, sub := range dd {
lowKey := re(key)
lowSub := re(sub.SvcOperationCfsSubparam)
if (strings.Contains(lowKey, "s3") && strings.Contains(lowKey, "uid")) ||
(strings.Contains(lowSub, "s3") && strings.Contains(lowSub, "uid")) {
if strings.Contains(re(sub.DataType), "uuid") {
s3uidKeys[key] = true
}
}
}
if len(s3uidKeys) == 0 {
return jsonValue
}
// Парсим JSON
var obj map[string]interface{}
if err := json.Unmarshal([]byte(jsonValue), &obj); err != nil {
return jsonValue
@@ -1258,7 +1233,8 @@ func (c *UniversalClient) resolveS3UidInMapFixed(paramId int, jsonValue string,
changed := false
for key, val := range obj {
if !s3uidKeys[key] {
lowKey := strings.ToLower(key)
if !strings.Contains(lowKey, "s3") || !strings.Contains(lowKey, "uid") {
continue
}
strVal, ok := val.(string)