@@ -687,3 +687,78 @@ var AdjustXpackNode = &gormigrate.Migration{
687687 return tx .Model (& model.Setting {}).Where ("key = ?" , "HideMenu" ).Update ("value" , string (updatedJSON )).Error
688688 },
689689}
690+
691+ var UpdateAiAgentsMenu = & gormigrate.Migration {
692+ ID : "20260209-update-ai-agents-menu" ,
693+ Migrate : func (tx * gorm.DB ) error {
694+ var menuJSON string
695+ if err := tx .Model (& model.Setting {}).Where ("key = ?" , "HideMenu" ).Pluck ("value" , & menuJSON ).Error ; err != nil {
696+ return err
697+ }
698+ if menuJSON == "" {
699+ menuJSON = helper .LoadMenus ()
700+ }
701+
702+ var menus []dto.ShowMenu
703+ if err := json .Unmarshal ([]byte (menuJSON ), & menus ); err != nil {
704+ return tx .Model (& model.Setting {}).
705+ Where ("key = ?" , "HideMenu" ).
706+ Update ("value" , helper .LoadMenus ()).Error
707+ }
708+
709+ foundAI := false
710+ newItem := dto.ShowMenu {
711+ ID : "44" ,
712+ Disabled : false ,
713+ Title : "aiTools.agents.agents" ,
714+ IsShow : true ,
715+ Label : "Agents" ,
716+ Path : "/ai/agents/agent" ,
717+ Sort : 50 ,
718+ }
719+
720+ for i := range menus {
721+ if menus [i ].Label != "AI-Menu" {
722+ continue
723+ }
724+ foundAI = true
725+ menus [i ].IsShow = true
726+
727+ exists := false
728+ for j := range menus [i ].Children {
729+ child := & menus [i ].Children [j ]
730+ if child .Label == newItem .Label {
731+ exists = true
732+ child .IsShow = true
733+ if child .Title == "" {
734+ child .Title = newItem .Title
735+ }
736+ if child .Sort == 0 {
737+ child .Sort = newItem .Sort
738+ }
739+ break
740+ }
741+ }
742+
743+ if ! exists {
744+ menus [i ].Children = append ([]dto.ShowMenu {newItem }, menus [i ].Children ... )
745+ }
746+ break
747+ }
748+
749+ if ! foundAI {
750+ return tx .Model (& model.Setting {}).
751+ Where ("key = ?" , "HideMenu" ).
752+ Update ("value" , helper .LoadMenus ()).Error
753+ }
754+
755+ updatedJSON , err := json .Marshal (menus )
756+ if err != nil {
757+ return tx .Model (& model.Setting {}).
758+ Where ("key = ?" , "HideMenu" ).
759+ Update ("value" , helper .LoadMenus ()).Error
760+ }
761+
762+ return tx .Model (& model.Setting {}).Where ("key = ?" , "HideMenu" ).Update ("value" , string (updatedJSON )).Error
763+ },
764+ }
0 commit comments