diff --git a/internal/services/cron_service.go b/internal/services/cron_service.go index bf41bdb..f63a453 100644 --- a/internal/services/cron_service.go +++ b/internal/services/cron_service.go @@ -22,10 +22,8 @@ type CronService struct { // NewCronService creates a new cron service func NewCronService(taskService *TaskService, executorService *ExecutorService) *CronService { - // 使用秒级精度的 cron parser,支持 5 位和 6 位表达式 - c := cron.New(cron.WithParser(cron.NewParser( - cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow | cron.Descriptor, - ))) + // 使用秒级精度的 cron parser,支持 6 位表达式(秒 分 时 日 月 周) + c := cron.New(cron.WithSeconds()) return &CronService{ cron: c, @@ -135,9 +133,9 @@ func (cs *CronService) updateNextRun(taskID uint) { } } -// ValidateCron validates a cron expression +// ValidateCron validates a cron expression (6 fields: second minute hour day month weekday) func (cs *CronService) ValidateCron(expression string) error { - parser := cron.NewParser(cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow | cron.Descriptor) + parser := cron.NewParser(cron.Second | cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow | cron.Descriptor) _, err := parser.Parse(expression) return err } diff --git a/web/src/views/tasks/Tasks.vue b/web/src/views/tasks/Tasks.vue index daf5b82..2fb9f47 100644 --- a/web/src/views/tasks/Tasks.vue +++ b/web/src/views/tasks/Tasks.vue @@ -26,13 +26,15 @@ const total = ref(0) let searchTimer: ReturnType | null = null const cronPresets = [ - { label: '每分钟', value: '* * * * *' }, - { label: '每5分钟', value: '*/5 * * * *' }, - { label: '每小时', value: '0 * * * *' }, - { label: '每天0点', value: '0 0 * * *' }, - { label: '每天8点', value: '0 8 * * *' }, - { label: '每周一', value: '0 0 * * 1' }, - { label: '每月1号', value: '0 0 1 * *' }, + { label: '每5秒', value: '*/5 * * * * *' }, + { label: '每30秒', value: '*/30 * * * * *' }, + { label: '每分钟', value: '0 * * * * *' }, + { label: '每5分钟', value: '0 */5 * * * *' }, + { label: '每小时', value: '0 0 * * * *' }, + { label: '每天0点', value: '0 0 0 * * *' }, + { label: '每天8点', value: '0 0 8 * * *' }, + { label: '每周一', value: '0 0 0 * * 1' }, + { label: '每月1号', value: '0 0 0 1 * *' }, ] async function loadTasks() { @@ -57,7 +59,7 @@ function handlePageChange(page: number) { } function openCreate() { - editingTask.value = { name: '', command: '', schedule: '0 * * * *', timeout: 30, enabled: true } + editingTask.value = { name: '', command: '', schedule: '0 * * * * *', timeout: 30, enabled: true } isEdit.value = false showDialog.value = true } @@ -195,11 +197,13 @@ onMounted(loadTasks)
- +
-
+
+

格式: 秒 分 时 日 月 周

+
{{ preset.label }} +