fix(课堂看板): 作业里有 SQL 题就布置不上去(报「不能用 C 交」),也没法布置一节 SQL 课
- 布置作业的语言加上 SQL,数据库课整节选 SQL - C / Python 的作业里可以夹 SQL 题:SQL 题只收 SQL,不受作业语言限制,交对 SQL 就算做完 (学生首页课堂条、看板格子、班里做了几个人三处一起改) - 看板点 SQL 题的格子,提交列表按 SQL 筛,不再是一片空白;提交列表「这节课」遇到夹了 SQL 题的作业不再按 C 筛 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
98dfcc1e7e
commit
fcf63c2ecb
7 files changed
+71
-42
No files matched your search
@@ -1,7 +1,7 @@
|
||||
import { z } from "zod"
|
||||
|
||||
import { judgeStatusSchema } from "./judge-status"
|
||||
import { runnableLanguageSchema } from "./language"
|
||||
import { lessonLanguageSchema as lessonLanguageValueSchema } from "./language"
|
||||
|
||||
export const classRankItemSchema = z.object({
|
||||
className: z.string(),
|
||||
@@ -85,10 +85,11 @@ export const classActivityProblemSchema = z.object({
|
||||
})
|
||||
|
||||
/**
|
||||
* 老师布置这节课时选的语言(Python / C / C++)。null = 没选:推断出来的课、加这一项之前
|
||||
* 布置的课。选了之后这份作业「做完」只认这个语言交对的,学生打开这几道题编辑器默认就是它
|
||||
* 老师布置这节课时选的语言(Python / C / C++ / SQL)。null = 没选:推断出来的课、加这一项之前
|
||||
* 布置的课。选了之后这份作业「做完」只认这个语言交对的(SQL 题例外,交对 SQL 就算),
|
||||
* 学生打开这几道题编辑器默认就是它
|
||||
*/
|
||||
const lessonLanguageSchema = runnableLanguageSchema.nullable()
|
||||
const lessonLanguageSchema = lessonLanguageValueSchema.nullable()
|
||||
|
||||
export const classActivitySchema = z.object({
|
||||
className: z.string().nullable(),
|
||||
@@ -147,6 +148,8 @@ export const classBoardProblemSchema = z.object({
|
||||
problemId: z.number().int(),
|
||||
problemDisplayId: z.string(),
|
||||
title: z.string(),
|
||||
/** SQL 题不受布置的语言限制:格子数的是 SQL 交的,点进提交列表也按 SQL 筛 */
|
||||
isSql: z.boolean(),
|
||||
})
|
||||
|
||||
export const classBoardCellSchema = z.object({
|
||||
@@ -214,7 +217,10 @@ export const classBoardSchema = z.object({
|
||||
export const classLessonSchema = z.object({
|
||||
className: z.string().nullable(),
|
||||
source: z.enum(["teacher", "inferred"]).nullable(),
|
||||
/** 选了语言时,列表那边连语言一起筛 */
|
||||
/**
|
||||
* 选了语言时,列表那边连语言一起筛。C / Python 的作业里夹了 SQL 题就是 null:
|
||||
* 列表只能筛一种语言,按 C 筛会把 SQL 题交的全藏起来,宁可多列一些
|
||||
*/
|
||||
language: lessonLanguageSchema,
|
||||
problems: z.array(z.object({ problemDisplayId: z.string(), title: z.string() })),
|
||||
})
|
||||
|
||||
@@ -43,7 +43,14 @@ export const problemLanguageSchema = z.enum([...judgeLanguageSchema.options, "SQ
|
||||
*/
|
||||
export const runnableLanguageSchema = judgeLanguageSchema.extract(["C", "C++", "Python"])
|
||||
|
||||
/**
|
||||
* 老师布置作业能选的语言:判题机跑得了的三种,加 SQL(数据库课一整节都是 SQL 题)。
|
||||
* SQL 题只收 SQL,所以 C / Python 的作业里夹 SQL 题也行 —— 那几道不受作业语言限制
|
||||
*/
|
||||
export const lessonLanguageSchema = problemLanguageSchema.extract(["Python", "C", "C++", "SQL"])
|
||||
|
||||
export type JudgeLanguage = z.infer<typeof judgeLanguageSchema>
|
||||
export type LessonLanguage = z.infer<typeof lessonLanguageSchema>
|
||||
export type RunnableLanguage = z.infer<typeof runnableLanguageSchema>
|
||||
export type ProblemLanguage = z.infer<typeof problemLanguageSchema>
|
||||
|
||||
|
||||
Reference in new issue
Block a user