problem.share_submission(题目级)和 submission.shared(单条)两个开关,连同 判定分支一起删掉。 生产备份(2026-08-07)里的实际用量:956 道题只有 2 道开过 share_submission, 还都是 contest_id=1 的比赛题 —— 比赛未结束时那条分支根本走不到,等于一天都没 生效过。123140 条提交里 shared=true 的有 40 条,39 条在 2022 年、1 条在 2023-03-30,之后近三年零使用;出题页从来没给过题目级开关,单条分享的入口在更早 那版前端上,ojnext 和 OJ2 都没搬过来,OJ2 里 PUT /submissions/:id 一个调用方 都没有。 canViewSubmission 剩下三条:本人 / 管理员(比赛中的 Student Admin 除外)/ 本题 作者,其余一律看不到。结尾的 `shareSubmission || shared` 没了;它上面那条「比赛 未结束一律不给」也一并去掉 —— 走到那里的必然不是这三种人,现在无论比赛与否都是 false,留着是重复的。allowShared 参数随之消失,它唯一的用途就是分享开关的归属 校验。 一并删掉:PUT /submissions/:id、响应里的 shared / canUnshare(列表、详情、站内 信内嵌三处)、题目详情与后台题目里的 shareSubmission、shareSubmissionRequestSchema, 以及新建提交时那句 shared: false(列上本来就有 default false)。 两个数据库列保留不删,只在 schema.ts 上注明已停用:删列是破坏性迁移,而留着不读 不写零成本,还留着那 40 条的历史痕迹。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XvmqDsZNyUo9P3sFQtoWVB
This commit is contained in:
@@ -46,7 +46,6 @@ export const submissionDetailSchema = z.object({
|
||||
result: judgeStatusSchema,
|
||||
info: z.unknown(),
|
||||
language: z.string(),
|
||||
shared: z.boolean(),
|
||||
statisticInfo: z.record(z.string(), z.unknown()),
|
||||
contestId: z.number().int().nullable(),
|
||||
problemId: z.number().int(),
|
||||
@@ -58,7 +57,6 @@ export const submissionDetailSchema = z.object({
|
||||
*/
|
||||
problemDisplayId: z.string(),
|
||||
showLink: z.boolean(),
|
||||
canUnshare: z.boolean(),
|
||||
})
|
||||
|
||||
/**
|
||||
@@ -102,7 +100,6 @@ export const submissionListItemSchema = z.object({
|
||||
username: z.string(),
|
||||
result: judgeStatusSchema,
|
||||
language: z.string(),
|
||||
shared: z.boolean(),
|
||||
statisticInfo: z.record(z.string(), z.unknown()),
|
||||
/**
|
||||
* 来源题单,非题单入口提交的为 null。比赛提交恒为 null(比赛题不会进题单)。
|
||||
@@ -114,8 +111,6 @@ export const submissionListItemSchema = z.object({
|
||||
|
||||
export const submissionListSchema = paginatedSchema(submissionListItemSchema)
|
||||
|
||||
export const shareSubmissionRequestSchema = z.object({ shared: z.boolean() })
|
||||
|
||||
/**
|
||||
* 未完成学生。`realName` 是从用户名里剥掉 `ks<班级号>` 前缀后剩下的那一段,
|
||||
* 不是 user.real_name 列 —— 与 F2「真名默认不下发」不冲突:这里只有教师能看到,
|
||||
@@ -173,5 +168,4 @@ export type EmbeddedSubmission = z.infer<typeof embeddedSubmissionSchema>
|
||||
export type CreateSubmissionResponse = z.infer<typeof createSubmissionResponseSchema>
|
||||
export type FormatCodeResponse = z.infer<typeof formatCodeResponseSchema>
|
||||
|
||||
export type ShareSubmissionRequest = z.infer<typeof shareSubmissionRequestSchema>
|
||||
export type FormatCodeRequest = z.infer<typeof formatCodeRequestSchema>
|
||||
|
||||
Reference in New Issue
Block a user