Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -32,6 +32,7 @@ var (
|
||||
// Beden kategorileri (frontend birebir)
|
||||
const (
|
||||
catAyk = "ayk"
|
||||
catAykGar = "ayk_garson"
|
||||
catYas = "yas"
|
||||
catPan = "pan"
|
||||
catGom = "gom"
|
||||
@@ -39,14 +40,15 @@ const (
|
||||
catAksbir = "aksbir"
|
||||
)
|
||||
|
||||
var categoryOrder = []string{catAyk, catYas, catPan, catGom, catTak, catAksbir}
|
||||
var categoryOrder = []string{catTak, catAyk, catAykGar, catYas, catPan, catGom, catAksbir}
|
||||
|
||||
var categoryTitle = map[string]string{
|
||||
catTak: " TAKIM ELBİSE",
|
||||
catAyk: " AYAKKABI",
|
||||
catAykGar: " AYAKKABI GARSON",
|
||||
catYas: " YAŞ",
|
||||
catPan: " PANTOLON",
|
||||
catGom: " GÖMLEK",
|
||||
catTak: " TAKIM ELBİSE",
|
||||
catAksbir: " AKSESUAR",
|
||||
}
|
||||
|
||||
@@ -307,53 +309,93 @@ func detectBedenGroupGo(bedenList []string, ana, alt string) string {
|
||||
ana = safeTrimUpper(ana)
|
||||
alt = safeTrimUpper(alt)
|
||||
|
||||
// Ürün grubu adı doğrudan ayakkabı ise öncelikli.
|
||||
if strings.Contains(ana, "AYAKKABI") || strings.Contains(alt, "AYAKKABI") {
|
||||
return catAyk
|
||||
hasGarson := strings.Contains(ana, "GARSON") || strings.Contains(alt, "GARSON") ||
|
||||
strings.Contains(ana, "YETISKIN/GARSON") || strings.Contains(alt, "YETISKIN/GARSON") ||
|
||||
strings.Contains(ana, "YETİSKIN/GARSON") || strings.Contains(alt, "YETİSKIN/GARSON") ||
|
||||
strings.Contains(ana, "YETİŞKIN/GARSON") || strings.Contains(alt, "YETİŞKIN/GARSON") ||
|
||||
strings.Contains(ana, "YETİŞKİN/GARSON") || strings.Contains(alt, "YETİŞKİN/GARSON")
|
||||
|
||||
hasAyakkabi := strings.Contains(ana, "AYAKKABI") || strings.Contains(alt, "AYAKKABI")
|
||||
|
||||
// ✅ Garson + ayakkabı özel grubu
|
||||
if hasGarson && hasAyakkabi {
|
||||
return catAykGar
|
||||
}
|
||||
// ✅ Garson → yaş
|
||||
if hasGarson {
|
||||
return catYas
|
||||
}
|
||||
|
||||
var hasYasNumeric bool
|
||||
var hasAykNumeric bool
|
||||
var hasPanNumeric bool
|
||||
|
||||
// ✅ Harfli beden → gömlek
|
||||
for _, b := range bedenList {
|
||||
b = safeTrimUpper(b)
|
||||
|
||||
switch b {
|
||||
case "XS", "S", "M", "L", "XL",
|
||||
"2XL", "3XL", "4XL", "5XL", "6XL", "7XL":
|
||||
return catGom
|
||||
}
|
||||
}
|
||||
|
||||
if n, ok := parseNumericSize(b); ok {
|
||||
if n >= 2 && n <= 14 {
|
||||
hasYasNumeric = true
|
||||
}
|
||||
if n >= 39 && n <= 45 {
|
||||
hasAykNumeric = true
|
||||
}
|
||||
if n >= 38 && n <= 68 {
|
||||
hasPanNumeric = true
|
||||
// ✅ Aksesuar tespiti (aksbir)
|
||||
aksesuarGruplari := []string{
|
||||
"AKSESUAR", "KRAVAT", "PAPYON", "KEMER", "CORAP", "ÇORAP",
|
||||
"FULAR", "MENDIL", "MENDİL", "KASKOL", "ASKI",
|
||||
"YAKA", "KOL DUGMESI", "KOL DÜĞMESİ",
|
||||
}
|
||||
giyimGruplari := []string{"GÖMLEK", "CEKET", "PANTOLON", "MONT", "YELEK", "TAKIM", "TSHIRT", "TİŞÖRT"}
|
||||
isAksesuar := false
|
||||
for _, g := range aksesuarGruplari {
|
||||
if strings.Contains(ana, g) || strings.Contains(alt, g) {
|
||||
isAksesuar = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if isAksesuar {
|
||||
for _, g := range giyimGruplari {
|
||||
if strings.Contains(ana, g) {
|
||||
isAksesuar = false
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if hasAykNumeric {
|
||||
return catAyk
|
||||
if isAksesuar {
|
||||
return catAksbir
|
||||
}
|
||||
|
||||
if strings.Contains(ana, "PANTOLON") {
|
||||
// ✅ Pantolon özel (yetişkin)
|
||||
if strings.Contains(ana, "PANTOLON") && (strings.Contains(alt, "YETISKIN") || strings.Contains(alt, "YETİŞKİN") || strings.Contains(alt, "YETİSKIN")) {
|
||||
return catPan
|
||||
}
|
||||
if hasPanNumeric {
|
||||
return catPan
|
||||
|
||||
// ✅ Tam numeric ve 35–46 arası → ayakkabı
|
||||
allNumeric := true
|
||||
nums := make([]int, 0, len(bedenList))
|
||||
for _, b := range bedenList {
|
||||
n, ok := parseNumericSize(b)
|
||||
if !ok {
|
||||
allNumeric = false
|
||||
break
|
||||
}
|
||||
nums = append(nums, n)
|
||||
}
|
||||
if allNumeric && len(nums) > 0 {
|
||||
sort.Ints(nums)
|
||||
okSeq := true
|
||||
for i := 1; i < len(nums); i++ {
|
||||
if nums[i]-nums[i-1] != 1 {
|
||||
okSeq = false
|
||||
break
|
||||
}
|
||||
}
|
||||
if okSeq && nums[0] >= 35 && nums[len(nums)-1] <= 46 {
|
||||
return catAyk
|
||||
}
|
||||
}
|
||||
|
||||
// ✅ Garson/çocuk alt grubu → yaş
|
||||
if strings.Contains(alt, "ÇOCUK") || strings.Contains(alt, "GARSON") {
|
||||
return catYas
|
||||
}
|
||||
if hasYasNumeric {
|
||||
return catYas
|
||||
}
|
||||
|
||||
return catTak
|
||||
}
|
||||
@@ -375,6 +417,8 @@ func formatSizeQtyForLog(m map[string]int) string {
|
||||
}
|
||||
func defaultSizeListFor(cat string) []string {
|
||||
switch cat {
|
||||
case catAykGar:
|
||||
return []string{"22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "STD"}
|
||||
case catAyk:
|
||||
return []string{"39", "40", "41", "42", "43", "44", "45"}
|
||||
case catYas:
|
||||
@@ -386,7 +430,7 @@ func defaultSizeListFor(cat string) []string {
|
||||
case catTak:
|
||||
return []string{"44", "46", "48", "50", "52", "54", "56", "58", "60", "62", "64", "66", "68", "70", "72", "74"}
|
||||
case catAksbir:
|
||||
return []string{"", "44", "STD", "110", "115", "120", "125", "130", "135"}
|
||||
return []string{" ", "44", "STD", "110", "115", "120", "125", "130", "135"}
|
||||
}
|
||||
return []string{}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user