From 4743b0398a452e5def6e4f8b9318357c47e41e36 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Sat, 4 Jul 2026 11:07:24 -0600 Subject: [PATCH] update --- problem/urls/admin.py | 2 ++ problem/views/admin.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/problem/urls/admin.py b/problem/urls/admin.py index fecf9a3..c850894 100644 --- a/problem/urls/admin.py +++ b/problem/urls/admin.py @@ -7,6 +7,7 @@ from ..views.admin import ( ProblemAPI, ProblemFlowchartAIGen, ProblemVisibleAPI, + SQLTestCaseAIGenAPI, SQLTestCasePreviewAPI, SQLTestCaseScriptsAPI, StuckProblemsAPI, @@ -18,6 +19,7 @@ urlpatterns = [ path("test_case", TestCaseAPI.as_view()), path("sql_test_case_preview", SQLTestCasePreviewAPI.as_view()), path("sql_test_case_scripts", SQLTestCaseScriptsAPI.as_view()), + path("sql_test_case_ai_gen", SQLTestCaseAIGenAPI.as_view()), path("problem", ProblemAPI.as_view()), path("problem/visible", ProblemVisibleAPI.as_view()), path("problem/stuck", StuckProblemsAPI.as_view()), diff --git a/problem/views/admin.py b/problem/views/admin.py index 977a06c..f1362a9 100644 --- a/problem/views/admin.py +++ b/problem/views/admin.py @@ -692,6 +692,35 @@ class SQLTestCasePreviewAPI(APIView): return self.success(display) +class SQLTestCaseAIGenAPI(APIView): + @problem_permission_required + def post(self, request): + ref_sql = request.data.get("ref_sql", "") + mode = request.data.get("mode", "query") + client = get_ai_client() + response = client.chat.completions.create( + model="deepseek-v4-flash", + messages=[ + { + "role": "system", + "content": """你是一个 SQL 出题助手。用户会给你一道 SQL 题的标准答案(查询题的 + SELECT 语句,或增删改题的 UPDATE/DELETE/INSERT 语句)和题型。 + 请你推断出该标准答案所需要的表结构,生成一份自洽的 SQLite 兼容初始化脚本, + 包含 CREATE TABLE 和若干条 INSERT 语句,插入的数据要足够让标准答案跑出有意义的结果 + (比如查询题要有能被筛选出来和被过滤掉的行;增删改题要有能被改动和不受影响的行)。 + 请只返回 SQL 脚本本身,连 ``` 都不需要,不要任何解释文字。""", + }, + { + "role": "user", + "content": f"题型:{mode}\n标准答案:\n{ref_sql}", + }, + ], + extra_body={"thinking": {"type": "disabled"}}, + ) + sql = response.choices[0].message.content + return self.success({"sql": sql}) + + class SQLTestCaseScriptsAPI(APIView, TestCaseZipProcessor): @problem_permission_required def get(self, request):