diff --git a/apps/web/src/oj/problem/components/BasicEditor.vue b/apps/web/src/oj/problem/components/BasicEditor.vue
deleted file mode 100644
index 04dfb2d..0000000
--- a/apps/web/src/oj/problem/components/BasicEditor.vue
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/apps/web/src/oj/problem/detail.vue b/apps/web/src/oj/problem/detail.vue
index 72b1e6e..b50649b 100644
--- a/apps/web/src/oj/problem/detail.vue
+++ b/apps/web/src/oj/problem/detail.vue
@@ -8,11 +8,12 @@ import { useScreenModeStore } from "shared/store/screenMode"
import { useMyFlowchartStore } from "shared/store/myFlowchart"
import { useUserStore } from "shared/store/user"
-// 抽成具名 loader,便于进页面时与接口并行预取编辑器 chunk
+// 抽成具名 loader,便于进页面时与接口并行预取编辑器 chunk。
+// 题库、比赛、题单三种入口用的是同一个编辑器:原来比赛和题单用的是另一个精简版,
+// 没有协作、也没有错误标记,于是题单里「求助」老师接不上、「把中文标点都换成英文」
+// 点了没反应(见 docs/specs/2026-09-28-problem-page-redesign-design.md 第 10 节)
const loadProblemEditor = () => import("./components/ProblemEditor.vue")
-const loadContestEditor = () => import("./components/BasicEditor.vue")
const ProblemEditor = defineAsyncComponent(loadProblemEditor)
-const BasicEditor = defineAsyncComponent(loadContestEditor)
const EditorForTest = defineAsyncComponent(() => import("./components/EditorForTest.vue"))
const ProblemContent = defineAsyncComponent(() => import("./components/ProblemContent.vue"))
const ProblemInfo = defineAsyncComponent(() => import("./components/ProblemInfo.vue"))
@@ -71,8 +72,6 @@ const tabOptions = computed(() => {
const currentTab = ref("content")
-const isPublicProblemRoute = computed(() => route.name === "problem")
-
watch(
[() => route.query.tab, () => tabOptions.value],
([rawTab]) => {
@@ -103,7 +102,7 @@ async function init() {
myFlowchartStore.hide()
// 并行预取右侧编辑器 chunk(CodeMirror ~370K+),
// 避免等 getProblem 返回后才串行下载,编辑器才迟迟出现
- ;(isPublicProblemRoute.value ? loadProblemEditor : loadContestEditor)()
+ loadProblemEditor()
try {
const res = await getProblem(problemID, contestID)
problem.value = res
@@ -188,7 +187,7 @@ watch(
-
+
@@ -232,7 +231,7 @@ watch(
-
+
diff --git a/apps/web/src/oj/problem/utils/editTrace.ts b/apps/web/src/oj/problem/utils/editTrace.ts
index 8276619..1459d17 100644
--- a/apps/web/src/oj/problem/utils/editTrace.ts
+++ b/apps/web/src/oj/problem/utils/editTrace.ts
@@ -5,8 +5,8 @@ import type { SubmissionTrace } from "@oj2/contract"
* 编辑过程信号的采集,随提交一起报给后端(落进 `submission_trace`)。
* 字段含义见契约的 `submissionTraceSchema`。**只数字符数和次数,不留任何按键内容。**
*
- * 是模块单例而不是 Pinia store:编辑器(ProblemEditor / BasicEditor 里)和
- * 提交按钮(Form → SubmitCode)是兄弟组件,得共用一份计数;而 CodeMirror 的
+ * 是模块单例而不是 Pinia store:编辑器(ProblemEditor 里)和
+ * 提交按钮(EditorToolbar → SubmitCode)是兄弟组件,得共用一份计数;而 CodeMirror 的
* 扩展对象一旦经过 store 就会被包成响应式代理,facet 靠身份比较,代理过的扩展
* 直接失效。计数本身也不需要响应式。
*