feat: 系统全面优化 - 设备管理/登录日志导出/性能监控/设置页面
后端: - 新增全局设备管理 API(DeviceHandler.GetAllDevices) - 新增登录日志导出功能(LogHandler.ExportLoginLogs, CSV/XLSX) - 新增设置服务(SettingsService)和设置页面 API - 设备管理支持多条件筛选(状态/信任状态/关键词) - 登录日志支持流式导出防 OOM - 操作日志支持按方法/时间范围搜索 - 主题配置服务(ThemeService) - 增强监控健康检查(Prometheus metrics + SLO) - 移除旧 ratelimit.go(已迁移至 robustness) - 修复 SocialAccount NULL 扫描问题 - 新增 API 契约测试、Handler 测试、Settings 测试 前端: - 新增管理员设备管理页面(DevicesPage) - 新增管理员登录日志导出功能 - 新增系统设置页面(SettingsPage) - 设备管理支持筛选和分页 - 增强 HTTP 响应类型 测试: - 业务逻辑测试 68 个(含并发 CONC_001~003) - 规模测试 16 个(P99 百分位统计) - E2E 测试、集成测试、契约测试 - 性能基准测试、鲁棒性测试 全面测试通过(38 个测试包)
This commit is contained in:
@@ -19,6 +19,7 @@ import (
|
||||
"github.com/user-management-system/internal/cache"
|
||||
"github.com/user-management-system/internal/config"
|
||||
"github.com/user-management-system/internal/database"
|
||||
"github.com/user-management-system/internal/monitoring"
|
||||
"github.com/user-management-system/internal/repository"
|
||||
"github.com/user-management-system/internal/security"
|
||||
"github.com/user-management-system/internal/service"
|
||||
@@ -173,24 +174,39 @@ func main() {
|
||||
ssoClientsStore := auth.NewDefaultSSOClientsStore()
|
||||
ssoHandler := handler.NewSSOHandler(ssoManager, ssoClientsStore)
|
||||
|
||||
// 系统设置服务
|
||||
settingsService := service.NewSettingsService()
|
||||
settingsHandler := handler.NewSettingsHandler(settingsService)
|
||||
|
||||
// SSO 会话清理 context(随服务器关闭而取消)
|
||||
ssoCtx, ssoCancel := context.WithCancel(context.Background())
|
||||
defer ssoCancel()
|
||||
ssoManager.StartCleanup(ssoCtx)
|
||||
|
||||
// 初始化监控指标(CRIT-01/02 修复:确保指标被初始化并挂载)
|
||||
metrics := monitoring.GetGlobalMetrics()
|
||||
sloMetrics := monitoring.GetGlobalSLOMetrics()
|
||||
|
||||
// CRIT-03 修复:启动后台 goroutine 定期采集系统指标(runtime + DB 连接池)
|
||||
metricsCtx, metricsCancel := context.WithCancel(context.Background())
|
||||
defer metricsCancel()
|
||||
go monitoring.StartSystemMetricsCollector(metricsCtx, metrics, sloMetrics, db.DB)
|
||||
|
||||
// 设置路由
|
||||
r := router.NewRouter(
|
||||
authHandler, userHandler, roleHandler, permissionHandler, deviceHandler,
|
||||
logHandler, authMiddleware, rateLimitMiddleware, opLogMiddleware,
|
||||
passwordResetHandler, captchaHandler, totpHandler, webhookHandler,
|
||||
ipFilterMiddleware, exportHandler, statsHandler, smsHandler, customFieldHandler, themeHandler, ssoHandler, avatarHandler,
|
||||
ipFilterMiddleware, exportHandler, statsHandler, smsHandler, customFieldHandler, themeHandler, ssoHandler,
|
||||
settingsHandler, metrics, avatarHandler,
|
||||
)
|
||||
engine := r.Setup()
|
||||
|
||||
// 健康检查
|
||||
engine.GET("/health", func(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{"status": "ok"})
|
||||
})
|
||||
// 健康检查(增强版:存活/就绪分离,检查数据库连接)
|
||||
healthCheck := monitoring.NewHealthCheck(db.DB)
|
||||
engine.GET("/health", healthCheck.Handler)
|
||||
engine.GET("/health/live", healthCheck.LivenessHandler)
|
||||
engine.GET("/health/ready", healthCheck.ReadinessHandler)
|
||||
|
||||
// 启动服务器
|
||||
addr := fmt.Sprintf(":%d", cfg.Server.Port)
|
||||
|
||||
Reference in New Issue
Block a user