feat(M4): 生命周期 + 审计 — 到期锁定/回收 cron、审计查询/CSV 导出/每日归档、settings 动态策略

This commit is contained in:
2026-08-30 10:17:22 +08:00
parent 1ea18490e0
commit c0e2ff975a
18 changed files with 1088 additions and 75 deletions
+8 -4
View File
@@ -86,7 +86,8 @@ func cmdServe(args []string) error {
adminSvc := service.NewAdminService(db)
userSvc := service.NewUserService(db, sys, cfg)
keySvc := service.NewKeyService(db, sys, cfg)
auditSvc := service.NewAuditService(db)
auditSvc := service.NewAuditService(db, log)
settingsSvc := service.NewSettingService(db, cfg)
// 认证依赖:DB OTP/会话/重置令牌存储 + 内存图形验证码/登录限速器 + 邮件
captchas := auth.NewMemoryCaptchaStore(cfg.Auth.CaptchaTTL)
@@ -98,6 +99,9 @@ func cmdServe(args []string) error {
mailer := mail.NewQueuedMailer(mail.New(cfg.SMTP, log), db, log)
authSvc := service.NewAuthService(db, cfg, otps, captchas, sessions, resets, limiter, mailer, userSvc, adminSvc, auditSvc, log)
approvalSvc := service.NewApprovalService(db, cfg, userSvc, mailer, log)
// M4:设置覆盖默认 TTL(settings 表);生命周期每日维护
userSvc.WithSettings(settingsSvc)
lifecycleSvc := service.NewLifecycleService(db, cfg, sys, userSvc, settingsSvc, mailer, auditSvc, log)
// 启动前自动迁移(骨架阶段保证表结构就绪;M5 部署建议显式 migrate)
if err := model.Migrate(db); err != nil {
@@ -105,13 +109,13 @@ func cmdServe(args []string) error {
}
log.Info("db: migrated", "driver", cfg.Database.Driver, "dsn", cfg.Database.DSN)
// 定时任务(M3:邮件失败重试;M4 填充过期扫描/回收/审计归档)
// 定时任务(M3:邮件重试;M4过期扫描/回收/审计归档)
sched := robfigcron.New()
cron.New(db, mailer, log).Register(sched)
cron.New(cfg, mailer, lifecycleSvc, auditSvc, settingsSvc, log).Register(sched)
sched.Start()
defer sched.Stop()
h := api.New(cfg, authSvc, userSvc, keySvc, approvalSvc, auditSvc)
h := api.New(cfg, authSvc, userSvc, keySvc, approvalSvc, auditSvc, settingsSvc)
r := router.New(cfg, h, sessions, log)
srv := server.New(cfg.Server.Listen, r, log)