按名字扫了一遍 api 层导出和 utils 常量,四处全仓零引用:
**`getContestProblem`**(admin/api.ts)—— 和紧挨在它上面的 `getProblem` 逐字
相同,同一个 URL、同一个类型。旧后端 admin 侧比赛题和公开题是两个端点,合并
之后这个壳留下来了。
**`createMessage`**(oj/api.ts)—— 两代前端都只有定义没有调用。参数名还是旧
后端那套(recipient / submission),函数体里再映射成契约的
recipientId / submissionId,等于给一个不存在的调用方写了个兼容层。
d3b05b8 删掉了它的类型 CreateMessage,函数漏了。
后端 `POST /messages` 是完整实现的,只是后台那个页面
(admin/communication/messages.vue)两代都是一句「未完待续」的占位。
在端点上加了注释说明这件事,免得下次扫「无人调用的端点」时被当成可删。
**`CONTEST_TYPE`**(constants.ts)—— 和上面 30 行处的 `ContestType` 枚举
一模一样。枚举那份有 8 处在用,这个对象零引用。
**`LANGUAGE_ID`**(constants.ts)—— Judge0 的语言 id。真正在用的那份在
utils/judge.ts 的 JUDGE0_LANGUAGE_ID,而且**只有那份是对的**:死掉的这份把
Golang / JavaScript / Python2 全写成了 0,谁要是拿它去调 Judge0,这三种语言
的在线试运行会静默发出 `language_id: 0`。
顺带确认过没有 `constants["LANGUAGE_ID"]` 这类动态取值。
验证:vue-tsc 0 error、vite build 通过、tsc(apps/api) 0 error、
check:routes 168 条无遮蔽。四处都是零文本引用的纯删除。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -109,6 +109,12 @@ contentRoutes.get("/messages", requireAuth, async (c) => {
|
||||
}))
|
||||
})
|
||||
|
||||
/**
|
||||
* 发站内信。**目前没有任何前端在调用它** —— 后台那个页面
|
||||
* (apps/web/src/admin/communication/messages.vue)两代前端都只是一句
|
||||
* 「未完待续」的占位,ojnext 里定义过一个 createMessage 但同样零调用,
|
||||
* 已在前端删掉。端点本身是完整实现的,要接 UI 从这里开始。
|
||||
*/
|
||||
contentRoutes.post("/messages", requireSuperAdmin, async (c) => {
|
||||
const user = c.get("user")!
|
||||
const parsed = createMessageRequestSchema.safeParse(await c.req.json().catch(() => null))
|
||||
|
||||
@@ -110,10 +110,6 @@ export function getProblem(id: string | number) {
|
||||
return api.get<AdminProblem>(`admin/problems/${id}`)
|
||||
}
|
||||
|
||||
export function getContestProblem(id: number) {
|
||||
return api.get<AdminProblem>(`admin/problems/${id}`)
|
||||
}
|
||||
|
||||
// 标签管理
|
||||
export function getTagAdminList(keyword = "") {
|
||||
return api.get<AdminTag[]>("admin/problem-tags", { params: { keyword } })
|
||||
|
||||
@@ -270,18 +270,6 @@ export function getAnnouncement(id: number) {
|
||||
return api.get<Announcement>(`announcements/${id}`)
|
||||
}
|
||||
|
||||
export function createMessage(data: {
|
||||
recipient: number
|
||||
message: string
|
||||
submission: string
|
||||
}) {
|
||||
return api.post("messages", {
|
||||
recipientId: data.recipient,
|
||||
message: data.message,
|
||||
submissionId: data.submission,
|
||||
})
|
||||
}
|
||||
|
||||
export function getMessageList(offset = 0, limit = 10) {
|
||||
// language 的收窄同 getSubmissions,见那里的说明
|
||||
return api.get<{ results: Message[]; total: number }>("messages", {
|
||||
|
||||
@@ -132,11 +132,6 @@ export const CONTEST_STATUS: {
|
||||
},
|
||||
}
|
||||
|
||||
export const CONTEST_TYPE = {
|
||||
PUBLIC: "Public",
|
||||
PRIVATE: "Password Protected",
|
||||
}
|
||||
|
||||
export const USER_TYPE = {
|
||||
REGULAR_USER: "Regular User",
|
||||
STUDENT_ADMIN: "Student Admin",
|
||||
@@ -185,18 +180,6 @@ export const SOURCES = {
|
||||
SQL: "",
|
||||
} as const
|
||||
|
||||
export const LANGUAGE_ID = {
|
||||
C: 50,
|
||||
"C++": 54,
|
||||
Java: 62,
|
||||
Python3: 71,
|
||||
Python2: 0,
|
||||
JavaScript: 0,
|
||||
Golang: 0,
|
||||
Flowchart: 0,
|
||||
SQL: 0,
|
||||
} as const
|
||||
|
||||
export const LANGUAGE_FORMAT_VALUE = {
|
||||
C: "c",
|
||||
"C++": "cpp",
|
||||
|
||||
Reference in New Issue
Block a user