fix(cron): 用中文说明替代解析器原始报错

- 后端 CronPreviewError 增加 user_message,预览与任务保存共用;解析器英文原文只写日志
- 针对「0/2」这类单数字步长给出具体改法(*/2 或 1-10/2)
- 前端预览面板用警告图标 + 中文提示展示,网络异常回退通用文案,Cron 输入同步 aria-invalid
This commit is contained in:
2026-11-02 22:35:39 +08:00
parent b2ff255e32
commit b7ded69a7d
5 changed files with 51 additions and 10 deletions
+10
View File
@@ -310,7 +310,17 @@
}
.cron-preview-error {
display: flex;
align-items: flex-start;
gap: 8px;
color: var(--su-color-danger);
font-size: var(--su-font-size-sm);
line-height: var(--su-line-height-sm);
}
.cron-preview-error i {
flex: none;
margin-top: 2px;
}
.env-detector-bar {
+10 -4
View File
@@ -4,6 +4,7 @@ import {
Button,
Checkbox,
FormField,
Icon,
Input,
Modal,
Notice,
@@ -290,7 +291,7 @@ export function TaskEditorModal({
{...register('cron')}
className="mono-input"
placeholder="0 0 2 * * *"
aria-invalid={Boolean(errors.cron)}
aria-invalid={Boolean(errors.cron) || cronPreview.isError}
/>
</FormField>
@@ -354,9 +355,14 @@ export function TaskEditorModal({
</Text>
</div>
) : cronPreview.isError ? (
<Text size="sm" className="cron-preview-error">
{cronPreview.error.message}
</Text>
<div className="cron-preview-error">
<Icon name="warning_line" />
<span>
{cronPreview.error instanceof ApiRequestError
? cronPreview.error.message
: '暂时无法计算运行时间,请稍后重试'}
</span>
</div>
) : cronPreview.data?.runs.length ? (
<div className="cron-run-grid">
{cronPreview.data.runs.map((run, index) => (