From 9d960c2a9be03bb99c6784295f004f18e0454887 Mon Sep 17 00:00:00 2001 From: kronecker <2026692687@qq.com> Date: Fri, 9 Oct 2026 22:32:38 +0800 Subject: [PATCH] feat(frontend): enable problem-scoped Python and Java submissions --- frontend/src/api/submissionIntent.ts | 3 +- frontend/src/components/CodeEditor.vue | 1 + frontend/src/components/JudgementStatus.vue | 8 +- frontend/src/composables/judgingLanguage.ts | 52 ++++++++++ frontend/src/composables/useCodeDraft.ts | 10 +- frontend/src/views/ProblemDetailView.vue | 38 ++++--- frontend/src/views/SubmissionDetailView.vue | 15 ++- frontend/src/views/SubmissionsView.vue | 5 +- frontend/tests/judgingLanguage.test.ts | 105 ++++++++++++++++++++ frontend/tests/submissionFlow.test.ts | 34 ++++++- frontend/tests/useCodeDraft.test.ts | 42 ++++++++ 11 files changed, 289 insertions(+), 24 deletions(-) create mode 100644 frontend/src/composables/judgingLanguage.ts create mode 100644 frontend/tests/judgingLanguage.test.ts diff --git a/frontend/src/api/submissionIntent.ts b/frontend/src/api/submissionIntent.ts index 7298ed2..f5875de 100644 --- a/frontend/src/api/submissionIntent.ts +++ b/frontend/src/api/submissionIntent.ts @@ -1,7 +1,8 @@ // No source is stored here. Fingerprints bind an immutable request and owner to a UUID. +import type { components } from './generated/schema' export type SubmissionInput = { problem_version_id: string - language: 'c17' | 'cpp20' + language: components['schemas']['kf_oj__contracts__judging_v2__Language'] source: string } type Intent = { fingerprint: string; key: string; submissionId?: string } diff --git a/frontend/src/components/CodeEditor.vue b/frontend/src/components/CodeEditor.vue index 228f03e..d8a0f83 100644 --- a/frontend/src/components/CodeEditor.vue +++ b/frontend/src/components/CodeEditor.vue @@ -10,6 +10,7 @@ import 'monaco-editor/features/linesOperations/register' import 'monaco-editor/features/wordOperations/register' import 'monaco-editor/languages/definitions/cpp/register' import 'monaco-editor/languages/definitions/python/register' +import 'monaco-editor/languages/definitions/java/register' import 'monaco-editor/languages/definitions/rust/register' import EditorWorker from 'monaco-editor/editor/editor.worker?worker' const props = defineProps<{ diff --git a/frontend/src/components/JudgementStatus.vue b/frontend/src/components/JudgementStatus.vue index 2146ab8..3ffda18 100644 --- a/frontend/src/components/JudgementStatus.vue +++ b/frontend/src/components/JudgementStatus.vue @@ -1,9 +1,11 @@