From 18fc65f2ce64fe6e35fa60ba806cdc14d22d94d5 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Mon, 25 May 2026 20:47:46 -0600 Subject: [PATCH] feat: add AST_CHECK_FAILED status and update result display Co-Authored-By: Claude Sonnet 4.6 --- src/oj/problem/components/SubmissionResult.vue | 6 ++++++ src/oj/problem/components/SubmitCode.vue | 6 ++++-- src/utils/constants.ts | 5 +++++ src/utils/types.ts | 3 ++- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/oj/problem/components/SubmissionResult.vue b/src/oj/problem/components/SubmissionResult.vue index 7cea1d6..1d321e8 100644 --- a/src/oj/problem/components/SubmissionResult.vue +++ b/src/oj/problem/components/SubmissionResult.vue @@ -40,6 +40,10 @@ const msg = computed(() => { msg += "请仔细检查,看看代码的格式是不是写错了!\n\n" } + if (result === SubmissionStatus.ast_check_failed) { + msg += "你的答案是正确的,但是代码结构不符合要求:\n\n" + } + if (props.submission.statistic_info?.err_info) { msg += props.submission.statistic_info.err_info } @@ -53,6 +57,7 @@ const showAIHint = computed(() => { return ( problemStore.failCount >= 3 && props.submission.result !== SubmissionStatus.accepted && + props.submission.result !== SubmissionStatus.ast_check_failed && props.submission.result !== SubmissionStatus.pending && props.submission.result !== SubmissionStatus.judging && props.submission.result !== SubmissionStatus.submitting @@ -108,6 +113,7 @@ const infoTable = computed(() => { // AC、编译错误、运行时错误不显示测试用例表格 if ( result === SubmissionStatus.accepted || + result === SubmissionStatus.ast_check_failed || result === SubmissionStatus.compile_error || result === SubmissionStatus.runtime_error ) { diff --git a/src/oj/problem/components/SubmitCode.vue b/src/oj/problem/components/SubmitCode.vue index b20d7ea..1760142 100644 --- a/src/oj/problem/components/SubmitCode.vue +++ b/src/oj/problem/components/SubmitCode.vue @@ -149,7 +149,7 @@ watch( result === SubmissionStatus.submitting ) return - if (result !== SubmissionStatus.accepted) { + if (result !== SubmissionStatus.accepted && result !== SubmissionStatus.ast_check_failed) { problemStore.incrementFailCount() } }, @@ -159,7 +159,7 @@ watch( watch( () => submission.value?.result, async (result) => { - if (result !== SubmissionStatus.accepted) return + if (result !== SubmissionStatus.accepted && result !== SubmissionStatus.ast_check_failed) return // 1. 刷新题目状态 problem.value!.my_status = 0 @@ -173,6 +173,8 @@ watch( ) } + if (result !== SubmissionStatus.accepted) return + // 3. 放烟花 celebrate() diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 7e02812..2171dcc 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -12,6 +12,7 @@ export enum SubmissionStatus { judging = 7, partial_accepted = 8, submitting = 9, + ast_check_failed = 10, } export enum ContestStatus { @@ -80,6 +81,10 @@ export const JUDGE_STATUS: { name: "正在提交", type: "info", }, + "10": { + name: "代码检查未通过", + type: "warning", + }, } export const CONTEST_STATUS: { diff --git a/src/utils/types.ts b/src/utils/types.ts index 6f6bd81..f1fa62f 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -65,7 +65,7 @@ export type LANGUAGE = export type LANGUAGE_SHOW_LABEL = (typeof LANGUAGE_SHOW_VALUE)[keyof typeof LANGUAGE_SHOW_VALUE] -export type SUBMISSION_RESULT = -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 +export type SUBMISSION_RESULT = -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 export type ProblemStatus = "passed" | "failed" | "not_test" @@ -137,6 +137,7 @@ export interface Problem { flowchart_data?: Record flowchart_hint?: string show_flowchart?: boolean + ast_rules?: { [key: string]: { engine: string; target?: string; min?: number; max?: number; message: string }[] } | null } export type AdminProblem = Problem & AlterProblem