From f3da8956d93450b649662412f5b903514df40c66 Mon Sep 17 00:00:00 2001 From: zhaoying Date: Wed, 28 Jan 2026 17:50:09 +0800 Subject: [PATCH] feat(web): add prompt menu --- web/src/api/prompt.ts | 19 +- web/src/assets/images/menu/prompt.svg | 15 ++ web/src/assets/images/menu/prompt_active.svg | 15 ++ web/src/components/Markdown/index.tsx | 4 +- web/src/components/SiderMenu/index.tsx | 4 + web/src/i18n/en.ts | 20 +- web/src/i18n/zh.ts | 20 +- web/src/routes/index.tsx | 1 + web/src/routes/routes.json | 1 + web/src/store/menu.json | 15 ++ web/src/views/Prompt/History.tsx | 95 ++++++++ web/src/views/Prompt/Prompt.tsx | 227 ++++++++++++++++++ .../views/Prompt/components/PromptDetail.tsx | 82 +++++++ .../Prompt/components/PromptSaveModal.tsx | 90 +++++++ .../Prompt/components/PromptVariableModal.tsx | 104 ++++++++ web/src/views/Prompt/index.tsx | 59 +++++ web/src/views/Prompt/types.ts | 35 +++ 17 files changed, 798 insertions(+), 8 deletions(-) create mode 100644 web/src/assets/images/menu/prompt.svg create mode 100644 web/src/assets/images/menu/prompt_active.svg create mode 100644 web/src/views/Prompt/History.tsx create mode 100644 web/src/views/Prompt/Prompt.tsx create mode 100644 web/src/views/Prompt/components/PromptDetail.tsx create mode 100644 web/src/views/Prompt/components/PromptSaveModal.tsx create mode 100644 web/src/views/Prompt/components/PromptVariableModal.tsx create mode 100644 web/src/views/Prompt/index.tsx create mode 100644 web/src/views/Prompt/types.ts diff --git a/web/src/api/prompt.ts b/web/src/api/prompt.ts index 526f50ac..79ea374c 100644 --- a/web/src/api/prompt.ts +++ b/web/src/api/prompt.ts @@ -1,13 +1,26 @@ import { request } from '@/utils/request' import type { AiPromptForm } from '@/views/ApplicationConfig/types' +import type { PromptReleaseData } from '@/views/Prompt/types' import { handleSSE, type SSEMessage } from '@/utils/stream' +// Create session export const createPromptSessions = () => { return request.post(`/prompt/sessions`) } -export const getPrompt = (session_id: string) => { - return request.get(`/prompt/sessions/${session_id}`) -} +// Get prompt optimization export const updatePromptMessages = (session_id: string, data: AiPromptForm, onMessage?: (data: SSEMessage[]) => void) => { return handleSSE(`/prompt/sessions/${session_id}/messages`, data, onMessage) +} +// Prompt release list +export const getPromptReleaseListUrl = '/prompt/releases/list' +export const getPromptReleaseList = () => { + return request.get(getPromptReleaseListUrl) +} +// Save prompt +export const savePrompt = (data: PromptReleaseData) => { + return request.post('/prompt/releases', data) +} +// Delete prompt +export const deletePrompt = (prompt_id: string) => { + return request.delete(`/prompt/releases/${prompt_id}`) } \ No newline at end of file diff --git a/web/src/assets/images/menu/prompt.svg b/web/src/assets/images/menu/prompt.svg new file mode 100644 index 00000000..ffef9a34 --- /dev/null +++ b/web/src/assets/images/menu/prompt.svg @@ -0,0 +1,15 @@ + + + 提示词备份 + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menu/prompt_active.svg b/web/src/assets/images/menu/prompt_active.svg new file mode 100644 index 00000000..ac45e13c --- /dev/null +++ b/web/src/assets/images/menu/prompt_active.svg @@ -0,0 +1,15 @@ + + + 提示词 + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/components/Markdown/index.tsx b/web/src/components/Markdown/index.tsx index 58650207..6737f15a 100644 --- a/web/src/components/Markdown/index.tsx +++ b/web/src/components/Markdown/index.tsx @@ -19,6 +19,7 @@ interface RbMarkdownProps { showHtmlComments?: boolean; // 是否显示 HTML 注释,默认为 false(隐藏) editable?: boolean; // 是否可编辑,默认为 false onContentChange?: (content: string) => void; // 内容变化回调 + className?: string; } const components = { @@ -98,6 +99,7 @@ const RbMarkdown: FC = ({ showHtmlComments = false, editable = false, onContentChange, + className }) => { const [editContent, setEditContent] = useState(content) const textareaRef = useRef(null) @@ -162,7 +164,7 @@ const RbMarkdown: FC = ({ // 预览模式 return ( -
+