代码提交

This commit is contained in:
董宏凯 committed 2026-09-03 20:06:54 +08:00
1 parent 1eae02f782
commit e58da3fbdf
4 files changed
+240 -57

No files matched your search

+30 -19
View File
@@ -138,8 +138,9 @@ const emptyForm = {
html_negative_prompt: "",
html_reference_favorite_id: "",
html_model_name: "",
// 参考选了内置模板(tpl:<id>)时的「数据抽取」开关:关闭=用模板默认数据,开启=检索抽取。
html_template_extract: false,
// 参考选了内置模板(tpl:<id>)时的「数据抽取」开关:默认开启(检索抽取+抽不到回退
// 模板原数据),仅可转换模板生效;显式关闭=直接用模板默认数据。
html_template_extract: true,
};
/** 覆盖 Textarea 默认 field-sizing-content,避免输入过多时撑破弹窗 */
@@ -331,7 +332,8 @@ export default function ScheduledTasksPage({
html_negative_prompt: html.negative_prompt ?? "",
html_reference_favorite_id: html.reference_favorite_id ?? "",
html_model_name: html.model_name ?? "",
html_template_extract: !!html.template_extract,
// 与后端缺省一致:未存该键(老任务)视为开启,仅显式 false 才关闭。
html_template_extract: html.template_extract !== false,
});
// Prefer the canonical cron_expr over the user-typed schedule_text: the
// latter may be natural language ("每天9点") that parseCron can't read,
@@ -358,6 +360,10 @@ export default function ScheduledTasksPage({
isTemplateAgent || form.require_html,
);
const selectedTemplate = htmlTemplates.find((t) => t.id === form.template_id);
// 「参考收藏页面」选中的内置模板(require_html 模式,值形如 tpl:<id>)。
const selectedTplRef = htmlTemplates.find(
(t) => `tpl:${t.id}` === form.html_reference_favorite_id,
);
// 选中的模板是「只展示」型(convertible===false)时,不需要源 JSON,隐藏上传/输入。
const templateDisplayOnly =
isTemplateAgent && selectedTemplate?.convertible === false;
@@ -1396,23 +1402,28 @@ export default function ScheduledTasksPage({
)}
</div>
</div>
{/* 参考选了内置模板(tpl:<id>)时:数据抽取开关。关闭=用模板默认数据。 */}
{form.html_reference_favorite_id.startsWith("tpl:") && (
<div className="flex items-center justify-between rounded-md border p-3">
<div className="min-w-0 pr-3">
<p className="text-sm font-medium">执行数据抽取</p>
<p className="text-muted-foreground text-xs">
关闭则直接用所选模板的默认数据生成(含全部子页面);开启才检索并按模板结构抽取数据填充。
</p>
{/* 参考选了内置模板(tpl:<id>)时:数据抽取开关(仅可转换模板;只展示模板给提示)。 */}
{form.html_reference_favorite_id.startsWith("tpl:") &&
(selectedTplRef?.convertible === false ? (
<p className="text-muted-foreground rounded-md border p-3 text-xs">
该模板暂为「直接展示已有数据」,执行时将原样输出其现有页面,不做数据抽取。
</p>
) : (
<div className="flex items-center justify-between rounded-md border p-3">
<div className="min-w-0 pr-3">
<p className="text-sm font-medium">执行数据抽取</p>
<p className="text-muted-foreground text-xs">
开启后执行时由所选智能体检索生成内容,并按模板结构抽取数据填充;抽取不到的子页面自动回退模板原有数据。关闭则直接用所选模板的默认数据生成(含全部子页面)。
</p>
</div>
<Switch
checked={form.html_template_extract}
onCheckedChange={(v) =>
setForm((value) => ({ ...value, html_template_extract: v }))
}
/>
</div>
<Switch
checked={form.html_template_extract}
onCheckedChange={(v) =>
setForm((value) => ({ ...value, html_template_extract: v }))
}
/>
</div>
)}
))}
<div className="flex flex-col gap-1">
<p className="text-muted-foreground text-xs">生成模型</p>
<Select