From e58f5774abc2b38ff48ad46e946fc863c91e8145 Mon Sep 17 00:00:00 2001 From: Michael Chus Date: Sun, 24 May 2026 19:09:15 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20/api/categories=20=D0=B2=D0=BE=D0=B7?= =?UTF-8?q?=D0=B2=D1=80=D0=B0=D1=89=D0=B0=D0=BB=20display=5Forder=3D0=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=B2=D1=81=D0=B5=D1=85=20=D0=BA=D0=B0?= =?UTF-8?q?=D1=82=D0=B5=D0=B3=D0=BE=D1=80=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Коды брались из локальных компонентов, но display_order не проставлялся — поэтому categoryOrderMap на фронте был пустым и порядок в итоговой конфигурации не соблюдался. Теперь display_order берётся из DefaultCategories. Co-Authored-By: Claude Sonnet 4.6 --- internal/handlers/component.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/internal/handlers/component.go b/internal/handlers/component.go index 9f08a3b..0af5b14 100644 --- a/internal/handlers/component.go +++ b/internal/handlers/component.go @@ -90,6 +90,12 @@ func (h *ComponentHandler) Get(c *gin.Context) { } func (h *ComponentHandler) GetCategories(c *gin.Context) { + // Build display_order lookup from the canonical list. + orderMap := make(map[string]int, len(models.DefaultCategories)) + for _, cat := range models.DefaultCategories { + orderMap[strings.ToUpper(cat.Code)] = cat.DisplayOrder + } + codes, err := h.localDB.GetLocalComponentCategories() if err == nil && len(codes) > 0 { categories := make([]models.Category, 0, len(codes)) @@ -98,7 +104,15 @@ func (h *ComponentHandler) GetCategories(c *gin.Context) { if trimmed == "" { continue } - categories = append(categories, models.Category{Code: trimmed, Name: trimmed}) + order := orderMap[strings.ToUpper(trimmed)] + if order == 0 { + order = models.MaxKnownDisplayOrder + 1 + } + categories = append(categories, models.Category{ + Code: trimmed, + Name: trimmed, + DisplayOrder: order, + }) } c.JSON(http.StatusOK, categories) return