From c22521fb610bb2a5f18716ed15d56733308575ad Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Wed, 30 Sep 2026 12:18:06 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E7=AD=94=E6=A1=88=E9=94=99=E8=AF=AF):=20?= =?UTF-8?q?=E8=AF=B4=E6=98=8E=E5=86=99=E3=80=8C=E5=9C=A8=E4=BE=8B=E5=AD=90?= =?UTF-8?q?=201=20=E4=B8=8A=E5=B0=B1=E9=94=99=E4=BA=86=E3=80=8D=EF=BC=8C?= =?UTF-8?q?=E6=97=81=E8=BE=B9=E6=B5=8B=E8=AF=95=E7=82=B9=201=20=E6=98=AF?= =?UTF-8?q?=E7=BB=BF=E7=9A=84=EF=BC=8C=E7=9C=8B=E7=9D=80=E5=83=8F=E5=86=99?= =?UTF-8?q?=E5=8F=8D=E4=BA=86=E2=80=94=E2=80=94=E6=94=B9=E6=88=90=E3=80=8C?= =?UTF-8?q?=E9=A2=98=E7=9B=AE=E9=87=8C=E7=9A=84=E4=BE=8B=E5=AD=90=201=20?= =?UTF-8?q?=E5=B0=B1=E9=94=99=E4=BA=86=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 例子是题面样例,测试点是隐藏数据,两边都从 1 编号,只写「例子 1」分不开。 Co-Authored-By: Claude Opus 5.5 --- apps/web/src/oj/problem/components/SubmissionResult.vue | 5 +++-- apps/web/src/oj/submission/components/SubmissionPane.vue | 4 +++- docs/specs/2026-09-28-problem-page-redesign-design.md | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/apps/web/src/oj/problem/components/SubmissionResult.vue b/apps/web/src/oj/problem/components/SubmissionResult.vue index 4e8cac8..4071b4e 100644 --- a/apps/web/src/oj/problem/components/SubmissionResult.vue +++ b/apps/web/src/oj/problem/components/SubmissionResult.vue @@ -165,7 +165,7 @@ const failedOnSample = computed(() => /** * 结果标题(设计文档第 6 节、设计稿「答案错误 / 答案正确 / 错在隐藏测试点」): - * 大字是判题结果,灰色小字说清楚错在哪 —— 例子上就错了的说「在例子 N 上就错了」、不挂进度; + * 大字是判题结果,灰色小字说清楚错在哪 —— 例子上就错了的说「题目里的例子 N 就错了」、不挂进度; * 其余照旧报「通过 x/y 个测试点」(一个都没过就不报);做对了说全对了。 * 提交详情页还用通用的 submissionResultTitle */ @@ -192,7 +192,8 @@ const header = computed(() => { return { kind: status.type, title: status.title, - sub: `在例子 ${(failedOnSample.value.index ?? 0) + 1} 上就错了`, + // 和提交列表右栏同一句,「题目里的」是为了和测试点的编号分开 + sub: `题目里的例子 ${(failedOnSample.value.index ?? 0) + 1} 就错了`, progress: null, } } diff --git a/apps/web/src/oj/submission/components/SubmissionPane.vue b/apps/web/src/oj/submission/components/SubmissionPane.vue index 4f71338..cd1383a 100644 --- a/apps/web/src/oj/submission/components/SubmissionPane.vue +++ b/apps/web/src/oj/submission/components/SubmissionPane.vue @@ -164,9 +164,11 @@ const explain = computed(() => { case SubmissionStatus.wrong_answer: { const check = info?.sample_check if (!check) return null + // 「题目里的」不能省:上面那排格子是测试点,也从 1 编号,只写「例子 1」时老师看到 + // 格子 1 是绿的,以为说明写反了(例子 1 是题面样例,和测试点 1 不是一组数据) const text = check.passed ? "题目里的例子都对,错在没公开的测试点上。" - : `在例子 ${(check.index ?? 0) + 1} 上就错了。` + : `题目里的例子 ${(check.index ?? 0) + 1} 就错了。` return { line: null, text, raw: "" } } case SubmissionStatus.ast_check_failed: { 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 11f94cc..fea2f48 100644 --- a/docs/specs/2026-09-28-problem-page-redesign-design.md +++ b/docs/specs/2026-09-28-problem-page-redesign-design.md @@ -188,7 +188,7 @@ B 看得到。 | 情况 | 标题 | 正文 | |---|---|---| -| 答案错误,例子上就错了 | ✕ 答案错误 · 在例子 N 上就错了 | 「例子 N 没有通过:」+ 中文原因(`WrongAnswerExplain` 那套)+ 输入 / 正确输出 / 你的输出三栏,差异标红 + 「题目要求的输出:……」+ 让 AI 分析 | +| 答案错误,例子上就错了 | ✕ 答案错误 · 题目里的例子 N 就错了 | 「例子 N 没有通过:」+ 中文原因(`WrongAnswerExplain` 那套)+ 输入 / 正确输出 / 你的输出三栏,差异标红 + 「题目要求的输出:……」+ 让 AI 分析 | | 答案错误,例子都对 | ✕ 答案错误 · 通过 x/y 个测试点 + 进度条 | 「题目里的例子都对了,没通过的是隐藏的测试点……」+ 题目原话 + 让 AI 分析 +「去自己输入试试」 | | 运行时错误 / 编译错误 / 超时 / 内存超限 | 原样 | `RuntimeErrorExplain` / `CompileErrorExplain` 原样搬进;编辑器标红出错行。超时、内存超限各给一句中文说明(常见原因:死循环、多写了 input;列表开太大、循环里不停往里加)—— 题面不写限制,只能在这里讲 | | Python 语法没过(没交上去) | ! 代码有语法错误,还没有交上去;分段写「交之前检查」 | 中文说明 +「把中文标点都换成英文(N 处)」+ 折叠的「原始报错(英文)」;**所有**中文标点都在编辑器里标出来,和 N 对得上 |