From d8483dc696dd1d55b4f316412b4d851b3c48d51d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 18 Nov 2025 06:14:56 +0000 Subject: [PATCH] Add UI support for allow_multiple_instances configuration - Add allow_multiple_instances field to ICrontab interface - Add instance mode selector in task creation/edit modal - Add translations for instance mode in Chinese and English - Default to single instance mode for backward compatibility Co-authored-by: whyour <22700758+whyour@users.noreply.github.com> --- src/locales/en-US.json | 7 ++++++- src/locales/zh-CN.json | 7 ++++++- src/pages/crontab/modal.tsx | 18 +++++++++++++++++- src/pages/crontab/type.ts | 1 + 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/locales/en-US.json b/src/locales/en-US.json index 73088cc1..4b2fbdc1 100644 --- a/src/locales/en-US.json +++ b/src/locales/en-US.json @@ -533,5 +533,10 @@ "日志名称不能超过100个字符": "Log name cannot exceed 100 characters", "未启用": "Not enabled", "默认为 CPU 个数": "Default is the number of CPUs", - "Minimum is 4": "Minimum is 4" + "Minimum is 4": "Minimum is 4", + "实例模式": "Instance Mode", + "单实例模式:定时启动新任务前会自动停止旧任务;多实例模式:允许同时运行多个任务实例": "Single instance mode: automatically stop old task before starting new scheduled task; Multi-instance mode: allow multiple task instances to run simultaneously", + "请选择实例模式": "Please select instance mode", + "单实例": "Single Instance", + "多实例": "Multi-Instance" } diff --git a/src/locales/zh-CN.json b/src/locales/zh-CN.json index 454edbfb..fdb1ca10 100644 --- a/src/locales/zh-CN.json +++ b/src/locales/zh-CN.json @@ -533,5 +533,10 @@ "日志名称不能超过100个字符": "日志名称不能超过100个字符", "未启用": "未启用", "默认为 CPU 个数": "默认为 CPU 个数", - "最小是 4": "最小是 4" + "最小是 4": "最小是 4", + "实例模式": "实例模式", + "单实例模式:定时启动新任务前会自动停止旧任务;多实例模式:允许同时运行多个任务实例": "单实例模式:定时启动新任务前会自动停止旧任务;多实例模式:允许同时运行多个任务实例", + "请选择实例模式": "请选择实例模式", + "单实例": "单实例", + "多实例": "多实例" } diff --git a/src/pages/crontab/modal.tsx b/src/pages/crontab/modal.tsx index a911b219..ac8e8182 100644 --- a/src/pages/crontab/modal.tsx +++ b/src/pages/crontab/modal.tsx @@ -180,6 +180,18 @@ const CronModal = ({ + + + 100) { return Promise.reject(intl.get('日志名称不能超过100个字符')); } - if (!/^(?!.*(?:^|\/)\.{1,2}(?:\/|$))(?:\/)?(?:[\w.-]+\/)*[\w.-]+\/?$/.test(value)) { + if ( + !/^(?!.*(?:^|\/)\.{1,2}(?:\/|$))(?:\/)?(?:[\w.-]+\/)*[\w.-]+\/?$/.test( + value, + ) + ) { return Promise.reject( intl.get('日志名称只能包含字母、数字、下划线和连字符'), ); diff --git a/src/pages/crontab/type.ts b/src/pages/crontab/type.ts index 890eaef8..a71eade3 100644 --- a/src/pages/crontab/type.ts +++ b/src/pages/crontab/type.ts @@ -37,6 +37,7 @@ export interface ICrontab { nextRunTime: Date; sub_id: number; extra_schedules?: Array<{ schedule: string }>; + allow_multiple_instances?: 1 | 0; } export enum ScheduleType {