fix(Minor M-1): 站内信内嵌提交改用独立 schema,并修复题号链接

两件事:

1. 内嵌的 submission 之前复用 submissionDetailSchema 并把 info / ip 写死成空值,
   于是键仍留在响应里。旧 SubmissionSafeModelSerializer 是 exclude,这三个键
   根本不出现。改成独立的 embeddedSubmissionSchema —— 形状对上了,将来有人
   把空值改成真值也不会变成泄露,因为这里压根没有这三个字段。

2. 顺带修掉一个评审没覆盖的真回归:内嵌 submission 给的是 problemId(数字主键),
   而旧 serializer 的 problem 是 SlugRelatedField(slug_field="_id"),即展示用题号。
   oj/user/message.vue:20 拿它拼 /problem/<题号>,迁移后拼出的是 /problem/undefined,
   题号那一栏也是空的。改为下发 problem,实测返回 "1004"。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-07 07:01:13 -06:00
parent 61f74054f9
commit cebaa87b13
3 changed files with 26 additions and 10 deletions

View File

@@ -1,7 +1,7 @@
import { z } from "zod"
import { paginatedSchema, sampleUserSchema } from "./common"
import { submissionDetailSchema } from "./submission"
import { embeddedSubmissionSchema } from "./submission"
export const announcementSchema = z.object({
id: z.number().int(),
@@ -21,7 +21,7 @@ export const messageSchema = z.object({
sender: sampleUserSchema,
createTime: z.string(),
message: z.string(),
submission: submissionDetailSchema,
submission: embeddedSubmissionSchema,
})
export const messageListSchema = paginatedSchema(messageSchema)