布置时多一个「做什么」:写代码 / 先画再写 / 画流程图(只能选打开了画流程图的题)。 - 先画再写:一道题图画到 A/S、代码也交对才算做完;学生画一道写一道、全画完再写都行, 打开题目自动停在该做的那一步(图没画对停画布,画对了换到布置的语言) - 也能分开布置:先一节画流程图,看板上「用这几道题写代码」再开一节;学生那边把今天 几节课的要求合起来,还没画完的照样看得到要画 - 看板格子是一条进度:图 1/6 → 空心「图 ✓」→ 代码 ✗ → ✓,先写代码没画图的写「缺图」; 卡在画图上的点开讲那张图(要改的框标红 + AI 的哪里错/怎么改),按走对几组归堆 - 写代码的课不再拿画对的流程图顶替做完;数据统计里画流程图的课数流程图提交 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
71323d9b63
commit
38a331c2b7
33 files changed
+4987
-209
No files matched your search
@@ -53,14 +53,20 @@ export function activityRows(options: {
|
||||
problemIds?: number[]
|
||||
/** 老师布置时选了语言:代码只数这个语言交的(见 lessonLanguageFilter),流程图不受影响 */
|
||||
language?: LessonLanguage | null
|
||||
/**
|
||||
* 只要哪一种:老师布置的课选了「写代码」就只数代码、「画流程图」就只数流程图
|
||||
* (契约 lessonModeSchema)。不给 = 两种都数,`kind` 列分得出是哪种
|
||||
*/
|
||||
only?: 'code' | 'flowchart'
|
||||
}) {
|
||||
const { since, users, problemIds, language } = options
|
||||
const { since, users, problemIds, language, only } = options
|
||||
const code = db
|
||||
.select({
|
||||
userId: schema.submission.userId,
|
||||
problemId: schema.submission.problemId,
|
||||
createTime: schema.submission.createTime,
|
||||
solved: sql<boolean>`${inArray(schema.submission.result, SOLVED_RESULTS)}`.as('solved'),
|
||||
kind: sql<'code' | 'flowchart'>`'code'`.as('kind'),
|
||||
})
|
||||
.from(schema.submission)
|
||||
.where(
|
||||
@@ -70,6 +76,7 @@ export function activityRows(options: {
|
||||
users ? inArray(schema.submission.userId, users) : undefined,
|
||||
problemIds ? inArray(schema.submission.problemId, problemIds) : undefined,
|
||||
lessonLanguageFilter(language),
|
||||
only === 'flowchart' ? sql`false` : undefined,
|
||||
),
|
||||
)
|
||||
const flowchart = db
|
||||
@@ -78,6 +85,7 @@ export function activityRows(options: {
|
||||
problemId: schema.flowchartSubmission.problemId,
|
||||
createTime: schema.flowchartSubmission.createTime,
|
||||
solved: sql<boolean>`${FLOWCHART_PASSED}`.as('solved'),
|
||||
kind: sql<'code' | 'flowchart'>`'flowchart'`.as('kind'),
|
||||
})
|
||||
.from(schema.flowchartSubmission)
|
||||
.where(
|
||||
@@ -85,6 +93,7 @@ export function activityRows(options: {
|
||||
gte(schema.flowchartSubmission.createTime, since),
|
||||
users ? inArray(schema.flowchartSubmission.userId, users) : undefined,
|
||||
problemIds ? inArray(schema.flowchartSubmission.problemId, problemIds) : undefined,
|
||||
only === 'code' ? sql`false` : undefined,
|
||||
),
|
||||
)
|
||||
return code.unionAll(flowchart).as('activity')
|
||||
|
||||
Reference in new issue
Block a user