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:
attacker committed 2026-06-14 02:11:10 +08:00
1 parent 97c4207ff8
commit ff0b268984
39 files changed
+4283 -1878

No files matched your search

+3
View File
@@ -68,6 +68,9 @@ func main() {
log.Fatal("failed to migrate database", zap.Error(err))
}
// 初始化种子数据
seedData(db)
// 创建Gin实例
r := gin.New()
+58
View File
@@ -0,0 +1,58 @@
package main
import (
"ezops/internal/models"
"go.uber.org/zap"
"golang.org/x/crypto/bcrypt"
"gorm.io/gorm"
)
// seedData 初始化种子数据(admin用户 + LDAP配置)
func seedData(db *gorm.DB) {
// 1. 创建默认 admin 用户(仅首次)
var userCount int64
db.Model(&models.User{}).Count(&userCount)
if userCount == 0 {
hashedPassword, _ := bcrypt.GenerateFromPassword([]byte("123456"), bcrypt.DefaultCost)
admin := models.User{
Username: "admin",
Password: string(hashedPassword),
Email: "admin@ezops.local",
RealName: "管理员",
Status: 1,
IsAdmin: true,
AuthSource: "local",
}
if err := db.Create(&admin).Error; err != nil {
zap.L().Warn("failed to seed admin user", zap.Error(err))
} else {
zap.L().Info("seeded default admin user (admin/123456)")
}
}
// 2. 创建默认 LDAP 配置
var ldapCount int64
db.Model(&models.LDAPConfig{}).Count(&ldapCount)
if ldapCount == 0 {
port := 389
useLDAPS := false
searchFilter := "(objectClass=inetOrgPerson)"
userMapping := `{"username":"uid","email":"mail","display_name":"cn"}`
ldapCfg := models.LDAPConfig{
LDAPHost: "8.217.205.92",
LDAPPort: &port,
UseLDAPS: &useLDAPS,
AdminDN: "cn=admin,dc=opsx,dc=vip",
AdminPassword: "LQl2GX7EEg2N",
BaseDN: "dc=opsx,dc=vip",
SearchFilter: &searchFilter,
UserMapping: &userMapping,
}
if err := db.Create(&ldapCfg).Error; err != nil {
zap.L().Warn("failed to seed LDAP config", zap.Error(err))
} else {
zap.L().Info("seeded default LDAP config (8.217.205.92:389)")
}
}
}