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