Merge remote-tracking branch 'origin/master'

This commit is contained in:
M_Kececi
2026-02-21 22:54:47 +03:00
parent 34df458e3f
commit 47848fc14d
2 changed files with 73 additions and 29 deletions

View File

@@ -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
}
}
}
if hasAykNumeric {
// ✅ 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 isAksesuar {
return catAksbir
}
// ✅ 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
}
// ✅ Tam numeric ve 3546 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
}
}
if strings.Contains(ana, "PANTOLON") {
return catPan
}
if hasPanNumeric {
return catPan
}
// ✅ 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{}
}