feat(openflare): 将定时任务迁入 Wavelet Asynq 异步任务框架

将 SSL 续期、可观测数据清理、WAF IP 组同步与 Uptime Kuma 同步
从 API 进程内 cron 迁移为 Asynq Handler,并通过 w_schedules 种子迁移
注册默认定时调度;移除 bootstrap 中的 in-process cron 启动逻辑。
This commit is contained in:
ryan
2026-06-18 19:14:47 +08:00
parent b59a2f3be3
commit 3342d3c39d
15 changed files with 334 additions and 243 deletions
@@ -11,7 +11,6 @@ import (
"time"
"github.com/Rain-kl/Wavelet/internal/model"
"github.com/Rain-kl/Wavelet/pkg/logger"
)
const (
@@ -29,10 +28,6 @@ var databaseCleanupTargets = map[string]string{
DatabaseCleanupTargetRequestReports: "请求聚合",
}
func init() {
registerJob("database_auto_cleanup", "0 3 * * *", runDatabaseAutoCleanupJob)
}
// DatabaseCleanupInput describes a manual observability cleanup request.
type DatabaseCleanupInput struct {
Target string `json:"target"`
@@ -128,28 +123,6 @@ func RunDatabaseAutoCleanupOnce(now time.Time) (*DatabaseAutoCleanupSummary, err
}, nil
}
func runDatabaseAutoCleanupJob(ctx context.Context) {
summary, err := RunDatabaseAutoCleanupOnce(time.Now())
if err != nil {
logger.ErrorF(ctx, "[OpenFlareTasks] database auto cleanup failed: %v", err)
return
}
if summary == nil {
return
}
totalDeleted := int64(0)
for _, item := range summary.Results {
totalDeleted += item.DeletedCount
}
logger.InfoF(
ctx,
"[OpenFlareTasks] database auto cleanup completed retention_days=%d deleted_count=%d",
summary.RetentionDays,
totalDeleted,
)
}
func deleteAllObservabilityRows(ctx context.Context, target string) (int64, error) {
switch target {
case DatabaseCleanupTargetAccessLogs: