Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -229,6 +229,21 @@ func safeTrimUpper(s string) string {
|
|||||||
return strings.ToUpper(strings.TrimSpace(s))
|
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 {
|
func f64(v sql.NullFloat64) float64 {
|
||||||
if !v.Valid {
|
if !v.Valid {
|
||||||
return 0
|
return 0
|
||||||
@@ -318,8 +333,24 @@ func parseNumericSize(v string) (int, bool) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func detectBedenGroupGo(bedenList []string, ana, alt string) string {
|
func detectBedenGroupGo(bedenList []string, ana, alt string) string {
|
||||||
ana = safeTrimUpper(ana)
|
ana = normalizeTextForMatchGo(ana)
|
||||||
alt = safeTrimUpper(alt)
|
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") ||
|
hasGarson := strings.Contains(ana, "GARSON") || strings.Contains(alt, "GARSON") ||
|
||||||
strings.Contains(ana, "YETISKIN/GARSON") || strings.Contains(alt, "YETISKIN/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İŞKIN/GARSON") || strings.Contains(alt, "YETİŞKIN/GARSON") ||
|
||||||
strings.Contains(ana, "YETİŞKİN/GARSON") || strings.Contains(alt, "YETİŞKİN/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 → yaş (ürün tipi fark etmeksizin)
|
||||||
|
|
||||||
// ✅ Garson + ayakkabı özel grubu
|
|
||||||
if hasGarson && hasAyakkabi {
|
|
||||||
return catAykGar
|
|
||||||
}
|
|
||||||
// ✅ Garson → yaş
|
|
||||||
if hasGarson {
|
if hasGarson {
|
||||||
return catYas
|
return catYas
|
||||||
}
|
}
|
||||||
@@ -354,7 +379,7 @@ func detectBedenGroupGo(bedenList []string, ana, alt string) string {
|
|||||||
"FULAR", "MENDIL", "MENDİL", "KASKOL", "ASKI",
|
"FULAR", "MENDIL", "MENDİL", "KASKOL", "ASKI",
|
||||||
"YAKA", "KOL DUGMESI", "KOL DÜĞMESİ",
|
"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
|
isAksesuar := false
|
||||||
for _, g := range aksesuarGruplari {
|
for _, g := range aksesuarGruplari {
|
||||||
if strings.Contains(ana, g) || strings.Contains(alt, g) {
|
if strings.Contains(ana, g) || strings.Contains(alt, g) {
|
||||||
@@ -759,6 +784,10 @@ func buildCategorySizeMap(rows []PdfRow) CategorySizeMap {
|
|||||||
if c == "" {
|
if c == "" {
|
||||||
c = catTak
|
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 {
|
if _, ok := cm[c]; !ok {
|
||||||
cm[c] = []string{}
|
cm[c] = []string{}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3643,8 +3643,6 @@ export function detectBedenGroup(bedenList, urunAnaGrubu = '', urunKategori = ''
|
|||||||
}
|
}
|
||||||
|
|
||||||
const hasGarson = hasGarsonSignal
|
const hasGarson = hasGarsonSignal
|
||||||
const hasAyakkabi = rawAna.includes('AYAKKABI') || rawKat.includes('AYAKKABI')
|
|
||||||
if (hasGarson && hasAyakkabi) return 'ayk_garson'
|
|
||||||
if (hasGarson) return 'yas'
|
if (hasGarson) return 'yas'
|
||||||
|
|
||||||
// 🔸 Harfli beden varsa doğrudan "gom" (gömlek/üst giyim)
|
// 🔸 Harfli beden varsa doğrudan "gom" (gömlek/üst giyim)
|
||||||
|
|||||||
Reference in New Issue
Block a user