feat: 修复仪表盘数据管线 — 补充应用发布种子数据 + 修复limit参数解析 + LDAP认证集成 + User类型完善
后端改进: - 修复 dashboard/recent-alerts 的 limit 参数解析 (原代码错误地将数字解析为日期) - 为 dashboard/recent-releases 添加 limit 参数解析支持 - 新增 generateAppReleases 种子数据生成函数 (10条应用发布记录) - 修复 AlertEvent 的 rule_name/rule_id/severity 数据一致性 - 添加 go-ldap/ldap/v3 依赖并集成 LDAP 认证处理器 - 添加 seed.go 自动种子数据初始化 (admin用户+LDAP配置) - User model 添加 AuthSource/LDAPConfig 字段 前端改进: - 修复 User 类型定义以匹配后端 API (real_name/is_admin/auth_source等) - 修复 Header.tsx 的 real_name 属性引用导致 TypeScript 编译错误 - 统一 API 服务层、暗色主题样式、组件联调优化 验证: - go build ./... 编译通过 - npm run build 构建通过 - 仪表盘发布历史、告警消息等区域数据正常展示 - 健康检查 /health 正常
This commit is contained in:
1 parent
97c4207ff8
commit
ff0b268984
39 files changed
+4283
-1878
No files matched your search
+67
-3
@@ -52,6 +52,9 @@ func generateMockData(db *gorm.DB) error {
|
||||
if err := generatePipelines(db); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := generateAppReleases(db); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := generateCronJobs(db); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -210,10 +213,11 @@ func generateAlertRules(db *gorm.DB) error {
|
||||
}
|
||||
}
|
||||
for i := 0; i < 20; i++ {
|
||||
rule := rules[rand.Intn(len(rules))]
|
||||
event := models.AlertEvent{
|
||||
RuleID: rules[rand.Intn(len(rules))].ID,
|
||||
RuleName: rules[rand.Intn(len(rules))].Name,
|
||||
Severity: []string{"info", "warning", "critical"}[rand.Intn(3)],
|
||||
RuleID: rule.ID,
|
||||
RuleName: rule.Name,
|
||||
Severity: rule.Severity,
|
||||
Status: []string{"firing", "resolved"}[rand.Intn(2)],
|
||||
Target: fmt.Sprintf("server-%03d", rand.Intn(50)+1),
|
||||
Message: fmt.Sprintf("告警事件 %d", i+1),
|
||||
@@ -262,6 +266,66 @@ func generatePipelines(db *gorm.DB) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func generateAppReleases(db *gorm.DB) error {
|
||||
apps := []string{"EZOps 前端", "EZOps 后端", "用户中心", "支付网关", "数据分析平台"}
|
||||
environments := []string{"dev", "test", "staging", "prod"}
|
||||
statuses := []string{"pending", "building", "deploying", "success", "success", "success", "failed", "rolled_back"}
|
||||
authors := []string{"admin", "ops01", "dev01"}
|
||||
|
||||
releases := make([]models.AppRelease, 0, 10)
|
||||
for i := 0; i < 10; i++ {
|
||||
app := apps[i%len(apps)]
|
||||
env := environments[rand.Intn(len(environments))]
|
||||
status := statuses[rand.Intn(len(statuses))]
|
||||
minor := rand.Intn(20)
|
||||
patch := rand.Intn(10)
|
||||
|
||||
release := models.AppRelease{
|
||||
AppName: app,
|
||||
Version: fmt.Sprintf("v1.%d.%d", minor, patch),
|
||||
Environment: env,
|
||||
Status: status,
|
||||
CommitID: randomString(8),
|
||||
CommitMsg: fmt.Sprintf("feat: 更新 %s 功能", app),
|
||||
Author: authors[rand.Intn(len(authors))],
|
||||
Duration: rand.Intn(600) + 60,
|
||||
Description: fmt.Sprintf("%s %s 环境发布", app, env),
|
||||
}
|
||||
|
||||
// Set timestamps and approval fields based on status
|
||||
now := time.Now()
|
||||
hoursAgo := time.Duration(rand.Intn(168)+1) * time.Hour
|
||||
|
||||
if status == "success" || status == "failed" {
|
||||
approver := authors[rand.Intn(len(authors))]
|
||||
release.Approver = approver
|
||||
approvedAt := now.Add(-hoursAgo + 30*time.Minute)
|
||||
release.ApprovedAt = &approvedAt
|
||||
deployedAt := now.Add(-hoursAgo + 2*time.Hour)
|
||||
release.DeployedAt = &deployedAt
|
||||
} else if status == "rolled_back" {
|
||||
approver := authors[rand.Intn(len(authors))]
|
||||
release.Approver = approver
|
||||
approvedAt := now.Add(-hoursAgo + 30*time.Minute)
|
||||
release.ApprovedAt = &approvedAt
|
||||
deployedAt := now.Add(-hoursAgo + 2*time.Hour)
|
||||
release.DeployedAt = &deployedAt
|
||||
rollbackAt := now.Add(-hoursAgo + 4*time.Hour)
|
||||
release.RollbackAt = &rollbackAt
|
||||
}
|
||||
|
||||
releases = append(releases, release)
|
||||
}
|
||||
|
||||
for i := range releases {
|
||||
if err := db.Create(&releases[i]).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
fmt.Println("Generated app releases:", len(releases))
|
||||
return nil
|
||||
}
|
||||
|
||||
func generateCronJobs(db *gorm.DB) error {
|
||||
cronJobs := []models.CronJob{
|
||||
{Name: "数据库备份", CronExpr: "0 2 * * *", Type: "script", Content: "/scripts/backup-db.sh", Enabled: true, Description: "每日凌晨 2 点备份数据库"},
|
||||
|
||||
Reference in new issue
Block a user