diff --git a/app/(admin)/settings/admin-settings-client.tsx b/app/(admin)/settings/admin-settings-client.tsx index 72422a7dc..f4c271805 100644 --- a/app/(admin)/settings/admin-settings-client.tsx +++ b/app/(admin)/settings/admin-settings-client.tsx @@ -1,5 +1,6 @@ "use client"; +import Link from "next/link"; import { useState, useEffect, useMemo } from "react"; import useSWR from "swr"; import { toast } from "sonner"; @@ -1512,7 +1513,6 @@ export function AdminSettingsClient() { const [editingModel, setEditingModel] = useState(null); const [modelAvatarUploading, setModelAvatarUploading] = useState(false); const [contactQrUploading, setContactQrUploading] = useState(false); - const [workflowOptionUploadingKey, setWorkflowOptionUploadingKey] = useState(null); // 🆕 火山引擎视频多模型表单(动态从API加载) const [volcanoVideoModels, setVolcanoVideoModels] = useState(null); - const updateWorkflowStep = ( - stepKey: string, - updater: (step: AgentWorkflowUiConfig["steps"][number]) => AgentWorkflowUiConfig["steps"][number] - ) => { - setSiteSettings((prev) => ({ - ...prev, - agentWorkflowUiConfig: { - steps: prev.agentWorkflowUiConfig.steps.map((step) => - step.key === stepKey ? updater(step) : step - ), - }, - })); - }; - - const updateWorkflowOption = ( - stepKey: string, - optionKey: string, - updater: ( - option: AgentWorkflowUiConfig["steps"][number]["options"][number] - ) => AgentWorkflowUiConfig["steps"][number]["options"][number] - ) => { - updateWorkflowStep(stepKey, (step) => ({ - ...step, - options: step.options.map((option) => - option.key === optionKey ? updater(option) : option - ), - })); - }; - - const handleWorkflowOptionPreviewUpload = async ( - stepKey: string, - optionKey: string, - file: File - ) => { - if (!file.type.startsWith("image/")) { - toast.error("请上传图片文件"); - return; - } - - const uploadKey = `${stepKey}:${optionKey}`; - try { - setWorkflowOptionUploadingKey(uploadKey); - const formData = new FormData(); - formData.append("file", file); - - const response = await fetchUploadWithRetry(formData); - const result = await response.json(); - - if (!response.ok || !result?.url) { - throw new Error(result?.error || "上传失败"); - } - - updateWorkflowOption(stepKey, optionKey, (option) => ({ - ...option, - previewImageUrl: result.url, - })); - toast.success("功能卡片预览图上传成功"); - } catch (error: any) { - toast.error(error?.message || "功能卡片预览图上传失败"); - } finally { - setWorkflowOptionUploadingKey(null); - } - }; - // --- 用户管理逻辑 --- const handleUserSearch = (search: string) => { setUserSearch(search); @@ -5683,208 +5619,23 @@ export function AdminSettingsClient() { {siteSettings.agentEnabled && (
-
工作流功能卡片配置
+
智能体工作流配置
- 智能体工作流左侧每个环节的按钮名称、说明文案和预览图都从这里读取,前端不再写死。 + 智能体页面的功能按钮名称、Prompt 片段和预览图已迁移到独立子页面,避免网站设置页过于臃肿。
- -
- {siteSettings.agentWorkflowUiConfig.steps.map((step) => ( -
-
-
- - - updateWorkflowStep(step.key, (current) => ({ - ...current, - title: event.target.value, - })) - } - placeholder="步骤标题" - /> -