Merge remote-tracking branch 'origin/master'

This commit is contained in:
M_Kececi
2026-03-24 10:15:51 +03:00
parent 2b9bcb667e
commit d0e43c03fc
2 changed files with 39 additions and 12 deletions

View File

@@ -229,6 +229,21 @@ func safeTrimUpper(s string) string {
return strings.ToUpper(strings.TrimSpace(s))
}
func normalizeTextForMatchGo(s string) string {
replacer := strings.NewReplacer(
"ç", "c", "Ç", "C",
"ğ", "g", "Ğ", "G",
"ı", "i", "I", "I", "İ", "I",
"ö", "o", "Ö", "O",
"ş", "s", "Ş", "S",
"ü", "u", "Ü", "U",
)
out := replacer.Replace(strings.TrimSpace(s))
out = strings.ToUpper(out)
out = strings.Join(strings.Fields(out), " ")
return out
}
func f64(v sql.NullFloat64) float64 {
if !v.Valid {
return 0
@@ -318,8 +333,24 @@ func parseNumericSize(v string) (int, bool) {
}
func detectBedenGroupGo(bedenList []string, ana, alt string) string {
ana = safeTrimUpper(ana)
alt = safeTrimUpper(alt)
ana = normalizeTextForMatchGo(ana)
alt = normalizeTextForMatchGo(alt)
// Beden seti çocuk yaş formatındaysa metadata beklemeden "yas" aç.
yasNums := map[string]bool{"2": true, "4": true, "6": true, "8": true, "10": true, "12": true, "14": true}
if len(bedenList) > 0 {
allYas := true
for _, b := range bedenList {
x := normalizeBedenLabelGo(b)
if !yasNums[x] {
allYas = false
break
}
}
if allYas {
return catYas
}
}
hasGarson := strings.Contains(ana, "GARSON") || strings.Contains(alt, "GARSON") ||
strings.Contains(ana, "YETISKIN/GARSON") || strings.Contains(alt, "YETISKIN/GARSON") ||
@@ -327,13 +358,7 @@ func detectBedenGroupGo(bedenList []string, ana, alt string) string {
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ş
// ✅ Garson → yaş (ürün tipi fark etmeksizin)
if hasGarson {
return catYas
}
@@ -354,7 +379,7 @@ func detectBedenGroupGo(bedenList []string, ana, alt string) string {
"FULAR", "MENDIL", "MENDİL", "KASKOL", "ASKI",
"YAKA", "KOL DUGMESI", "KOL DÜĞMESİ",
}
giyimGruplari := []string{"GÖMLEK", "CEKET", "PANTOLON", "MONT", "YELEK", "TAKIM", "TSHIRT", "TİŞÖRT"}
giyimGruplari := []string{"GOMLEK", "GÖMLEK", "CEKET", "PANTOLON", "MONT", "YELEK", "TAKIM", "TSHIRT", "TISORT", "TİŞÖRT"}
isAksesuar := false
for _, g := range aksesuarGruplari {
if strings.Contains(ana, g) || strings.Contains(alt, g) {
@@ -759,6 +784,10 @@ func buildCategorySizeMap(rows []PdfRow) CategorySizeMap {
if c == "" {
c = catTak
}
// AKSESUAR başlığını sabit tut: satırlardan gelen 2,4,6... gibi ekstra bedenleri ekleme.
if c == catAksbir {
continue
}
if _, ok := cm[c]; !ok {
cm[c] = []string{}
}

View File

@@ -3643,8 +3643,6 @@ export function detectBedenGroup(bedenList, urunAnaGrubu = '', urunKategori = ''
}
const hasGarson = hasGarsonSignal
const hasAyakkabi = rawAna.includes('AYAKKABI') || rawKat.includes('AYAKKABI')
if (hasGarson && hasAyakkabi) return 'ayk_garson'
if (hasGarson) return 'yas'
// 🔸 Harfli beden varsa doğrudan "gom" (gömlek/üst giyim)