Merge remote-tracking branch 'origin/master'

This commit is contained in:
M_Kececi
2026-03-13 16:37:00 +03:00
parent bd8dbce39e
commit 72a5a4f0ac
3 changed files with 111 additions and 45 deletions

View File

@@ -76,12 +76,23 @@ func imageFileMatches(fileName, dim1, dim3 string) bool {
return false
}
matchesToken := func(token, target string) bool {
if token == target {
return true
}
// "002" filtresi, dosya adindaki "002_1" gibi varyantlari da yakalamali.
if len(target) == 3 && isAllDigits(target) && strings.HasPrefix(token, target+"_") {
return true
}
return false
}
hasToken := func(target string) bool {
if target == "" {
return true
}
for _, t := range tokens {
if t == target {
if matchesToken(t, target) {
return true
}
}
@@ -236,52 +247,73 @@ ORDER BY
}
if dim1Upper != "" || dim3Upper != "" {
targetDimval1 := make(map[string]struct{}, 4)
for _, it := range matchedByName {
if dv := rowDim1ByID[it.ID]; dv != "" {
targetDimval1[dv] = struct{}{}
if dim3Upper != "" {
// dim3 verildiginde kesin varyant listesi oncelikli.
if len(matchedByName) > 0 {
items = matchedByName
} else if len(matchedByDim) > 0 {
items = matchedByDim
} else if len(matchedByNameDim1Only) > 0 {
// dim3 pattern'i olmayan legacy tek-renk isimlerde dim1-only fallback.
hasDim3Pattern := false
for _, it := range matchedByNameDim1Only {
if imageFileHasDim3Pattern(it.FileName) {
hasDim3Pattern = true
break
}
}
if !hasDim3Pattern {
targetDimval1 := make(map[string]struct{}, 4)
for _, it := range matchedByNameDim1Only {
if dv := rowDim1ByID[it.ID]; dv != "" {
targetDimval1[dv] = struct{}{}
}
}
clustered := make([]ProductImageItem, 0, len(items))
for _, it := range items {
if _, ok := targetDimval1[rowDim1ByID[it.ID]]; ok {
clustered = append(clustered, it)
}
}
items = clustered
} else {
items = []ProductImageItem{}
}
} else {
items = []ProductImageItem{}
}
}
if len(targetDimval1) == 0 && dim3Upper == "" {
for _, it := range matchedByNameDim1Only {
} else {
targetDimval1 := make(map[string]struct{}, 4)
for _, it := range matchedByName {
if dv := rowDim1ByID[it.ID]; dv != "" {
targetDimval1[dv] = struct{}{}
}
}
}
if len(targetDimval1) == 0 && dim3Upper != "" && len(matchedByNameDim1Only) > 0 {
hasDim3Pattern := false
for _, it := range matchedByNameDim1Only {
if imageFileHasDim3Pattern(it.FileName) {
hasDim3Pattern = true
break
}
}
if !hasDim3Pattern {
if len(targetDimval1) == 0 {
for _, it := range matchedByNameDim1Only {
if dv := rowDim1ByID[it.ID]; dv != "" {
targetDimval1[dv] = struct{}{}
}
}
}
}
if len(targetDimval1) > 0 {
clustered := make([]ProductImageItem, 0, len(items))
for _, it := range items {
if _, ok := targetDimval1[rowDim1ByID[it.ID]]; ok {
clustered = append(clustered, it)
if len(targetDimval1) > 0 {
clustered := make([]ProductImageItem, 0, len(items))
for _, it := range items {
if _, ok := targetDimval1[rowDim1ByID[it.ID]]; ok {
clustered = append(clustered, it)
}
}
items = clustered
} else if len(matchedByDim) > 0 {
items = matchedByDim
} else if len(matchedByName) > 0 {
items = matchedByName
} else if len(matchedByNameDim1Only) > 0 {
items = matchedByNameDim1Only
} else {
items = []ProductImageItem{}
}
items = clustered
} else if len(matchedByDim) > 0 {
items = matchedByDim
} else if len(matchedByName) > 0 {
items = matchedByName
} else if dim3Upper == "" && len(matchedByNameDim1Only) > 0 {
items = matchedByNameDim1Only
} else {
items = []ProductImageItem{}
}
}