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:
@@ -61,6 +61,9 @@ func setupRealServer(t *testing.T) (*httptest.Server, func()) {
|
||||
&domain.SocialAccount{},
|
||||
&domain.Webhook{},
|
||||
&domain.WebhookDelivery{},
|
||||
&domain.CustomField{},
|
||||
&domain.UserCustomFieldValue{},
|
||||
&domain.ThemeConfig{},
|
||||
); err != nil {
|
||||
t.Fatalf("数据库迁移失败: %v", err)
|
||||
}
|
||||
@@ -79,6 +82,9 @@ func setupRealServer(t *testing.T) (*httptest.Server, func()) {
|
||||
loginLogRepo := repository.NewLoginLogRepository(db)
|
||||
operationLogRepo := repository.NewOperationLogRepository(db)
|
||||
passwordHistoryRepo := repository.NewPasswordHistoryRepository(db)
|
||||
customFieldRepo := repository.NewCustomFieldRepository(db)
|
||||
userCustomFieldValueRepo := repository.NewUserCustomFieldValueRepository(db)
|
||||
themeRepo := repository.NewThemeConfigRepository(db)
|
||||
|
||||
authSvc := service.NewAuthService(userRepo, nil, jwtManager, cacheManager, 6, 5, 15*time.Minute)
|
||||
authSvc.SetRoleRepositories(userRoleRepo, roleRepo)
|
||||
@@ -101,6 +107,9 @@ func setupRealServer(t *testing.T) (*httptest.Server, func()) {
|
||||
webhookSvc := service.NewWebhookService(db)
|
||||
exportSvc := service.NewExportService(userRepo, roleRepo)
|
||||
statsSvc := service.NewStatsService(userRepo, loginLogRepo)
|
||||
customFieldSvc := service.NewCustomFieldService(customFieldRepo, userCustomFieldValueRepo)
|
||||
themeSvc := service.NewThemeService(themeRepo)
|
||||
settingsSvc := service.NewSettingsService()
|
||||
|
||||
authH := handler.NewAuthHandler(authSvc)
|
||||
userH := handler.NewUserHandler(userSvc)
|
||||
@@ -115,6 +124,13 @@ func setupRealServer(t *testing.T) (*httptest.Server, func()) {
|
||||
smsH := handler.NewSMSHandler()
|
||||
exportH := handler.NewExportHandler(exportSvc)
|
||||
statsH := handler.NewStatsHandler(statsSvc)
|
||||
customFieldH := handler.NewCustomFieldHandler(customFieldSvc)
|
||||
themeH := handler.NewThemeHandler(themeSvc)
|
||||
settingsH := handler.NewSettingsHandler(settingsSvc)
|
||||
avatarH := handler.NewAvatarHandler()
|
||||
ssoManager := auth.NewSSOManager()
|
||||
ssoClientsStore := auth.NewDefaultSSOClientsStore()
|
||||
ssoH := handler.NewSSOHandler(ssoManager, ssoClientsStore)
|
||||
|
||||
rateLimitMW := middleware.NewRateLimitMiddleware(config.RateLimitConfig{})
|
||||
authMW := middleware.NewAuthMiddleware(jwtManager, userRepo, userRoleRepo, roleRepo, rolePermissionRepo, permissionRepo, l1Cache)
|
||||
@@ -126,7 +142,8 @@ func setupRealServer(t *testing.T) (*httptest.Server, func()) {
|
||||
authH, userH, roleH, permH, deviceH, logH,
|
||||
authMW, rateLimitMW, opLogMW,
|
||||
pwdResetH, captchaH, totpH, webhookH,
|
||||
ipFilterMW, exportH, statsH, smsH, nil, nil, nil,
|
||||
ipFilterMW, exportH, statsH, smsH, customFieldH, themeH, ssoH,
|
||||
settingsH, nil, avatarH,
|
||||
)
|
||||
engine := r.Setup()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user