feat: add interactive MCQ and code-sort exercise widgets to tutorial lessons

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-23 01:52:20 -06:00
parent 12cf247e20
commit 6331391792
10 changed files with 568 additions and 53 deletions

View File

@@ -6,6 +6,7 @@ import {
BlankContest,
BlankProblem,
Contest,
Exercise,
Server,
TestcaseUploadedReturns,
Tutorial,
@@ -261,6 +262,35 @@ export function setTutorialVisibility(id: number, is_public: boolean) {
return http.put("admin/tutorial/visibility", { id, is_public })
}
export async function getAdminExercises(tutorialId: number) {
const res = await http.get("admin/exercise", { params: { tutorial_id: tutorialId } })
return res.data as Exercise[]
}
export async function createExercise(data: {
tutorial_id: number
type: "mcq" | "sort"
data: object
order: number
}) {
const res = await http.post("admin/exercise", data)
return res.data as Exercise
}
export async function updateExercise(data: {
id: number
type: "mcq" | "sort"
data: object
order: number
}) {
const res = await http.put("admin/exercise", data)
return res.data as Exercise
}
export function deleteExercise(id: number) {
return http.delete("admin/exercise", { params: { id } })
}
// 将竞赛题目转为公开题目
export function makeProblemPublic(id: number, display_id: string) {
return http.post("admin/contest_problem/make_public", {