From 9d1896125e9917396ef9768a830481d4184fcf88 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Mon, 5 Jan 2026 10:22:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 8 ++++---- package.json | 2 +- src/admin/api.ts | 4 ++++ src/admin/problem/detail.vue | 21 +++++++++++++++++---- src/admin/user/list.vue | 9 ++++++--- 5 files changed, 32 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5bebb88..b772e2b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "date-fns": "^4.1.0", "fflate": "^0.8.2", "highlight.js": "^11.11.1", - "md-editor-v3": "^6.3.0", + "md-editor-v3": "^6.3.1", "mermaid": "^11.12.2", "naive-ui": "^2.43.2", "nanoid": "^5.1.6", @@ -4530,9 +4530,9 @@ } }, "node_modules/md-editor-v3": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/md-editor-v3/-/md-editor-v3-6.3.0.tgz", - "integrity": "sha512-KvrxFA7YZbrTQ5JH6nTPNnAhfDVAV1uOVUGziyds0+wyCeWL5lbuTXjFmL8/2sILPw2v0VPxCEw7SMTlUQmvzg==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/md-editor-v3/-/md-editor-v3-6.3.1.tgz", + "integrity": "sha512-k9ynxS6Pexs+yNBuuWZ4cDpqvv/zD9p9lbPFGlCqhsCYyFJL7p/mYjUGNH3l8lsQJOUqlgbZe4Kta0ajN030Ug==", "license": "MIT", "dependencies": { "@codemirror/autocomplete": "^6.18.7", diff --git a/package.json b/package.json index 8cb5759..94d52ac 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "date-fns": "^4.1.0", "fflate": "^0.8.2", "highlight.js": "^11.11.1", - "md-editor-v3": "^6.3.0", + "md-editor-v3": "^6.3.1", "mermaid": "^11.12.2", "naive-ui": "^2.43.2", "nanoid": "^5.1.6", diff --git a/src/admin/api.ts b/src/admin/api.ts index fa29a67..03f3291 100644 --- a/src/admin/api.ts +++ b/src/admin/api.ts @@ -68,6 +68,10 @@ export function toggleProblemVisible(problemID: number) { return http.put("admin/problem/visible", { id: problemID }) } +export function generateFlowchartFromPythonCode(python: string) { + return http.post("admin/problem/flowchart", { python }) +} + export function editContestProblem(problem: AdminProblem | BlankProblem) { return http.put("admin/contest/problem", problem) } diff --git a/src/admin/problem/detail.vue b/src/admin/problem/detail.vue index b028da8..0d6c497 100644 --- a/src/admin/problem/detail.vue +++ b/src/admin/problem/detail.vue @@ -14,6 +14,7 @@ import { createProblem, editContestProblem, editProblem, + generateFlowchartFromPythonCode, getProblem, uploadTestcases, } from "../api" @@ -46,6 +47,8 @@ const title = computed( })[route.name], ) +const isAIGenerating = ref(false) + const problem = useLocalStorage(STORAGE_KEY.ADMIN_PROBLEM, { _id: "", title: "", @@ -405,8 +408,14 @@ function clear() { location.reload() } -function generateMermaid() { - message.info("还在开发中,敬请期待!") +async function generateMermaid() { + isAIGenerating.value = true + const res = await generateFlowchartFromPythonCode( + problem.value.answers.filter((a) => a.language === "Python3")[0].code, + ) + isAIGenerating.value = false + message.warning("如果渲染不成功,请复制到外部 AI 网站检查语法") + problem.value.mermaid_code = res.data.flowchart } onMounted(() => { @@ -630,11 +639,15 @@ watch( - + AI 生成 diff --git a/src/admin/user/list.vue b/src/admin/user/list.vue index ae691dd..4efd989 100644 --- a/src/admin/user/list.vue +++ b/src/admin/user/list.vue @@ -295,9 +295,15 @@ watch(() => [query.page, query.limit, query.type, query.orderBy], listUsers) + + + + + + [query.page, query.limit, query.type, query.orderBy], listUsers) > - - -