refactor(契约): 判题状态码收进契约唯一一份,并收紧 18 处 as any
- 状态码常量与 judgeStatusSchema 移到 packages/contract/src/judge-status.ts, 后端 judge/status.ts 只再导出;前端 SubmissionStatus 枚举加编译期断言对齐契约 (实测改坏一个码会当场类型检查失败) - 类型逃逸 22 处降到 4 处:collab/handler、pagination、configUpdate、 ExerciseManager、ProblemSubmission、pk.vue tooltip;剩下的是词云插件无类型、 生成的 .d.ts、skulpt 和 TextEditor Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f90d01338e
commit
b5ba56ccd0
11 files changed
+77
-51
No files matched your search
@@ -1,3 +1,4 @@
|
||||
import type { JudgeStatusValue } from "@oj2/contract"
|
||||
import type { AchievementRarity, SUBMISSION_RESULT, ReactionKey } from "./types"
|
||||
|
||||
// 与后端 judge/status.ts 的 JudgeStatus 逐条对齐(submitting 除外,见下)。
|
||||
@@ -21,6 +22,18 @@ export enum SubmissionStatus {
|
||||
ast_check_failed = 10,
|
||||
}
|
||||
|
||||
// 编译期对齐契约:契约加/改一个码而这里没跟,下面两行会当场编译不过。
|
||||
type SyncedWithContract =
|
||||
Exclude<
|
||||
`${SubmissionStatus}`,
|
||||
`${SubmissionStatus.submitting}`
|
||||
> extends `${JudgeStatusValue}`
|
||||
? `${JudgeStatusValue}` extends `${Exclude<SubmissionStatus, SubmissionStatus.submitting>}`
|
||||
? true
|
||||
: never
|
||||
: never
|
||||
export const _submissionStatusSynced: SyncedWithContract = true
|
||||
|
||||
export enum ContestStatus {
|
||||
initial = "2", // 这里不需要传入到后端,只是为了一开始加载数据的时候,做一个初始位
|
||||
not_started = "1",
|
||||
|
||||
Reference in new issue
Block a user