From c602e1e1191e3a62da04190e4e622cd3cb442694 Mon Sep 17 00:00:00 2001 From: M_Kececi Date: Sun, 5 Jul 2026 13:54:38 +0300 Subject: [PATCH] Fix product performance grouped JSON build --- svc/queries/product_performance.go | 39 +++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/svc/queries/product_performance.go b/svc/queries/product_performance.go index 0df0fa0..7da050a 100644 --- a/svc/queries/product_performance.go +++ b/svc/queries/product_performance.go @@ -3486,17 +3486,19 @@ func ListProductPerformanceGrouped(ctx context.Context, pg *sql.DB, req ProductP req.ExpandThroughLevel = len(levels) - 2 } - if out, ok, err := listProductPerformanceGroupedSQL(ctx, pg, req, levels); ok || err != nil { - return out, err - } - sourceRows, err := productPerformanceGroupedSourceRows(ctx, pg, req.Mode, req.Limit) if err != nil { return nil, err } - sourceRows = filterProductPerformanceGroupedRows(sourceRows, req.Filters) + sourceRows = filterProductPerformanceGroupedRows(sourceRows, productPerformanceGroupedEffectiveFilters(req)) out := make([]map[string]any, 0, len(sourceRows)) appendProductPerformanceGroupedRows(&out, sourceRows, levels, 0, 0, []string{"tab:" + req.Mode}, req.ExpandedKeys, req.ExpandThroughLevel) + if len(out) > 0 || !productPerformanceLiveFallbackEnabled() { + return out, nil + } + if out, ok, err := listProductPerformanceGroupedSQL(ctx, pg, req, levels); ok || err != nil { + return out, err + } return out, nil } @@ -3521,12 +3523,9 @@ func listProductPerformanceGroupedSQL(ctx context.Context, pg *sql.DB, req Produ } func productPerformanceGroupedBaseFilters(req ProductPerformanceGroupedRequest) []productPerformanceSQLGroupFilter { - filters := make([]productPerformanceSQLGroupFilter, 0, len(req.Filters)+1) - mainGroup := strings.TrimSpace(req.MainGroup) - if strings.TrimSpace(req.Mode) == "product_detail" && mainGroup != "" { - filters = append(filters, productPerformanceSQLGroupFilter{Field: "urun_ana_grubu", Value: mainGroup}) - } - for field, values := range req.Filters { + effectiveFilters := productPerformanceGroupedEffectiveFilters(req) + filters := make([]productPerformanceSQLGroupFilter, 0, len(effectiveFilters)) + for field, values := range effectiveFilters { cleanValues := cleanProductPerformanceFilterValues(values) if len(cleanValues) == 0 { continue @@ -3536,6 +3535,24 @@ func productPerformanceGroupedBaseFilters(req ProductPerformanceGroupedRequest) return filters } +func productPerformanceGroupedEffectiveFilters(req ProductPerformanceGroupedRequest) map[string][]string { + filters := make(map[string][]string, len(req.Filters)+1) + for field, values := range req.Filters { + cleanValues := cleanProductPerformanceFilterValues(values) + if len(cleanValues) == 0 { + continue + } + filters[field] = cleanValues + } + if strings.TrimSpace(req.Mode) == "product_detail" { + mainGroup := cleanProductPerformanceFilterValues([]string{req.MainGroup}) + if len(mainGroup) > 0 { + filters["urun_ana_grubu"] = mainGroup + } + } + return filters +} + func appendProductPerformanceGroupedSQLRows(ctx context.Context, pg *sql.DB, out *[]map[string]any, mode string, levels []string, level int, visualLevel int, parentKeys []string, filters []productPerformanceSQLGroupFilter, expandedKeys map[string]bool, expandThroughLevel int, limit int) error { if level >= len(levels) { return nil