Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions agent/app/dto/dashboard.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import "time"

type DashboardBase struct {
WebsiteNumber int `json:"websiteNumber"`
AgentNumber int `json:"agentNumber"`
DatabaseNumber int `json:"databaseNumber"`
CronjobNumber int `json:"cronjobNumber"`
AppInstalledNumber int `json:"appInstalledNumber"`
Expand Down
3 changes: 2 additions & 1 deletion agent/app/repo/app_launcher.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,10 @@ func (u *LauncherRepo) ListQuickJump(withAll bool) []model.QuickJump {
}
if !withAll && len(quicks) == 0 {
return []model.QuickJump{
{Name: "Agent", Title: "aiTools.agents.agents", Recommend: 1, IsShow: true, Router: "/ai/agents/agent"},
{Name: "Website", Title: "menu.website", Recommend: 10, IsShow: true, Router: "/websites"},
{Name: "Database", Title: "menu.database", Recommend: 30, IsShow: true, Router: "/databases"},
{Name: "Cronjob", Title: "menu.cronjob", Recommend: 50, IsShow: true, Router: "/cronjobs"},
{Name: "Cronjob", Title: "menu.cronjob", Recommend: 50, IsShow: false, Router: "/cronjobs"},
{Name: "AppInstalled", Title: "home.appInstalled", Recommend: 70, IsShow: true, Router: "/apps/installed"},
}
}
Expand Down
12 changes: 10 additions & 2 deletions agent/app/service/dashboard.go
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,9 @@ func (u *DashboardService) LoadQuickOptions() []dto.QuickJump {
_ = copier.Copy(&item, &quick)
list = append(list, item)
}
sort.Slice(list, func(i, j int) bool {
return list[i].Recommend < list[j].Recommend
})
return list
}
func (u *DashboardService) ChangeQuick(req dto.ChangeQuicks) error {
Expand Down Expand Up @@ -612,6 +615,9 @@ func loadQuickJump(base *dto.DashboardBase) {
website, _ := websiteRepo.GetBy()
base.WebsiteNumber = len(website)

agents, _ := agentRepo.List()
base.AgentNumber = len(agents)

postgresqlDbs, _ := postgresqlRepo.List()
mysqlDbs, _ := mysqlRepo.List()
base.DatabaseNumber = len(mysqlDbs) + len(postgresqlDbs)
Expand All @@ -625,6 +631,8 @@ func loadQuickJump(base *dto.DashboardBase) {
quicks := launcherRepo.ListQuickJump(false)
for i := 0; i < len(quicks); i++ {
switch quicks[i].Name {
case "Agent":
quicks[i].Detail = fmt.Sprintf("%d", base.AgentNumber)
case "Website":
quicks[i].Detail = fmt.Sprintf("%d", base.WebsiteNumber)
case "Database":
Expand All @@ -638,7 +646,7 @@ func loadQuickJump(base *dto.DashboardBase) {
_ = copier.Copy(&item, quicks[i])
base.QuickJumps = append(base.QuickJumps, item)
}
sort.Slice(quicks, func(i, j int) bool {
return quicks[i].Recommend < quicks[j].Recommend
sort.Slice(base.QuickJumps, func(i, j int) bool {
return base.QuickJumps[i].Recommend < base.QuickJumps[j].Recommend
})
}
1 change: 1 addition & 0 deletions agent/init/migration/migrate.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ func InitAgentDB() {
migrations.InitLocalSSHShow,
migrations.InitRecordStatus,
migrations.AddShowNameForQuickJump,
migrations.AddAgentQuickJump,
migrations.AddTimeoutForClam,
migrations.UpdateCronjobSpec,
migrations.UpdateWebsiteSSLAddColumn,
Expand Down
61 changes: 61 additions & 0 deletions agent/init/migration/migrations/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -589,6 +589,67 @@
},
}

var AddAgentQuickJump = &gormigrate.Migration{
ID: "20260312-add-agent-quick-jump",
Migrate: func(tx *gorm.DB) error {
if err := tx.AutoMigrate(&model.QuickJump{}); err != nil {
return err
}

var quicks []model.QuickJump
if err := tx.Find(&quicks).Error; err != nil {
return err
}

var (
cronjob *model.QuickJump
database *model.QuickJump
showList []*model.QuickJump
)
for i := range quicks {
switch quicks[i].Name {
case "Cronjob":
cronjob = &quicks[i]
case "Database":
database = &quicks[i]
}
if quicks[i].IsShow {
showList = append(showList, &quicks[i])
}
}

showCount := len(showList)
updatedIDs := make(map[uint]struct{})
kickedCronjob := false
if showCount >= 4 && cronjob != nil && cronjob.IsShow {
cronjob.IsShow = false
updatedIDs[cronjob.ID] = struct{}{}
kickedCronjob = true
}
if !kickedCronjob && showCount >= 4 && database != nil && database.IsShow {
database.IsShow = false
updatedIDs[database.ID] = struct{}{}
}

for _, item := range quicks {
if _, ok := updatedIDs[item.ID]; !ok {
continue
}
if err := tx.Model(&model.QuickJump{}).Where("id = ?", item.ID).Update("is_show", item.IsShow).Error; err != nil {

Check failure on line 638 in agent/init/migration/migrations/init.go

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Define a constant instead of duplicating this literal "id = ?" 4 times.

See more on https://sonarcloud.io/project/issues?id=1Panel-dev_1Panel&issues=AZzhToBXX4y0O1PSja1C&open=AZzhToBXX4y0O1PSja1C&pullRequest=12159
return err
}
}

return tx.Create(&model.QuickJump{
Name: "Agent",
Title: "aiTools.agents.agents",
Recommend: 1,
IsShow: true,
Router: "/ai/agents/agent",
}).Error
},
}

var AddTimeoutForClam = &gormigrate.Migration{
ID: "20250922-add-timeout-for-clam",
Migrate: func(tx *gorm.DB) error {
Expand Down
Loading