From 2857ff83c406b9e30e5c3a242fadc72b636f6f7e Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Mon, 28 Sep 2026 23:17:48 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E9=A2=98=E7=9B=AE):=20=E8=B6=85=E6=97=B6?= =?UTF-8?q?=E3=80=81=E5=86=85=E5=AD=98=E8=B6=85=E9=99=90=E7=9A=84=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E4=B8=8B=E9=9D=A2=E8=AF=B4=E6=B8=85=E6=A5=9A=E6=98=AF?= =?UTF-8?q?=E6=80=8E=E4=B9=88=E5=9B=9E=E4=BA=8B=E2=80=94=E2=80=94=E9=A2=98?= =?UTF-8?q?=E9=9D=A2=E4=B8=8D=E5=86=8D=E5=86=99=E9=99=90=E6=97=B6=E4=B9=8B?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E5=AD=A6=E7=94=9F=E5=85=89=E7=9C=8B=E3=80=8C?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E8=B6=85=E6=97=B6=E3=80=8D=E4=B8=8D=E7=9F=A5?= =?UTF-8?q?=E9=81=93=E5=93=AA=E9=87=8C=E5=87=BA=E4=BA=86=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- .../oj/problem/components/SubmissionResult.vue | 15 +++++++++++++-- .../2026-09-28-problem-page-redesign-design.md | 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/apps/web/src/oj/problem/components/SubmissionResult.vue b/apps/web/src/oj/problem/components/SubmissionResult.vue index 94bdbd0..59d4920 100644 --- a/apps/web/src/oj/problem/components/SubmissionResult.vue +++ b/apps/web/src/oj/problem/components/SubmissionResult.vue @@ -133,12 +133,23 @@ const msg = computed(() => { "程序运行到一半出错,停下来了。检查一下输入是怎么读的、下标有没有越界、除数是不是 0。\n\n" } } + // 题面不写时间、内存限制(学生看了只会迷糊),判出来时就得在这里说清楚是怎么回事 + if ( + result === SubmissionStatus.cpu_time_limit_exceeded || + result === SubmissionStatus.real_time_limit_exceeded + ) { + msg += + "程序跑了太久还没结束。看看是不是有死循环(条件一直成立、循环变量忘了改),或者在等一个没有给的输入(多写了一个 input)。\n\n" + } else if (result === SubmissionStatus.memory_limit_exceeded) { + msg += + "程序占的内存太多了。通常是列表、数组开得太大,或者在循环里不停地往里加东西、停不下来。\n\n" + } if (result !== SubmissionStatus.ast_check_failed && props.submission.statisticInfo?.err_info) { msg += stripJudgePath(props.submission.statisticInfo.err_info) } - return msg + return msg.trim() }) // 部分测试点通过时的进度。学生拿不到 info,那张测试点表格只有管理员看得见, @@ -453,7 +464,7 @@ const columns: DataTableColumn[] = [ } .msg { - white-space: pre; + white-space: pre-wrap; word-break: break-all; line-height: 1.5; } diff --git a/docs/specs/2026-09-28-problem-page-redesign-design.md b/docs/specs/2026-09-28-problem-page-redesign-design.md index febe132..041d6ec 100644 --- a/docs/specs/2026-09-28-problem-page-redesign-design.md +++ b/docs/specs/2026-09-28-problem-page-redesign-design.md @@ -183,7 +183,7 @@ B 看得到。 |---|---|---| | 答案错误,例子上就错了 | ✕ 答案错误 · 在例子 N 上就错了 | 「例子 N 没有通过:」+ 中文原因(`WrongAnswerExplain` 那套)+ 输入 / 正确输出 / 你的输出三栏,差异标红 + 「题目要求的输出:……」+ 让 AI 分析 | | 答案错误,例子都对 | ✕ 答案错误 · 通过 x/y 个测试点 + 进度条 | 「题目里的例子都对了,没通过的是隐藏的测试点……」+ 题目原话 + 让 AI 分析 +「去自己输入试试」 | -| 运行时错误 / 编译错误 / 超时 / 内存超限 | 原样 | `RuntimeErrorExplain` / `PythonErrorExplain` 原样搬进;编辑器标红出错行 | +| 运行时错误 / 编译错误 / 超时 / 内存超限 | 原样 | `RuntimeErrorExplain` / `PythonErrorExplain` 原样搬进;编辑器标红出错行。超时、内存超限各给一句中文说明(常见原因:死循环、多写了 input;列表开太大、循环里不停往里加)—— 题面不写限制,只能在这里讲 | | Python 语法没过(没交上去) | ! 代码有语法错误,还没有交上去;分段写「交之前检查」 | 中文说明 +「把中文标点都换成英文(N 处)」+ 折叠的「原始报错(英文)」;**所有**中文标点都在编辑器里标出来,和 N 对得上 | | 代码要求没满足(AST 未通过) | 答案正确,但语法未通过(现有文案) | 逐条 ✓ / ✗。**按已解决记账,但没有烟花、下一题、点评** —— 和现在一致,要单独一个画面 | | 答案正确 | ✓ 答案正确 · 所有测试点都对了 | 课堂里:「这节课还剩 N 道」+「下一题:题号 题目」;课堂题都做完:「……都做完了」+「去题单继续练」;不在课堂里:相似题推荐 |