feat(布置作业): 课上老师改了作业,学生页面上弹出改了哪些题,点「刷新」就拿到新题单
Deploy / deploy (push) Canceled after 0s

看板「改 / 新的一节 / 清掉」和后台课堂作业的增改删,前后比较学生看到的那一节,
真变了才按班推 lesson_update(加了、去掉了、语言、顺序),走学生的 /ws/config,老师不收。
没点刷新又改会合并成一条。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
xuyueandClaude Opus 5.5 committed 2026-11-02 21:14:52 +08:00
1 parent 0fd94ee8bf
commit df8af40d61
12 files changed
+344 -14

No files matched your search

+5 -1
View File
@@ -24,7 +24,7 @@ import { failure, parseBody, success } from '../http'
import { isAccepted } from '../judge/status'
import { activityRows, classMemberIds, FLOWCHART_PASSED, lessonLanguageFilter, SOLVED_RESULTS, suggestActiveClass } from '../services/class-activity'
import { accepted } from '../services/learning-stats'
import { resolveLessonProblems } from '../services/lesson'
import { announceLessonChange, resolveLessonProblems, todayLessonSnapshot } from '../services/lesson'
import { calendarDay, dayStart, localTime } from '../time'
export const classroomRoutes = new Hono<AppEnv>()
@@ -744,6 +744,8 @@ classroomRoutes.put('/classroom/lesson', requireTeacher, async (c) => {
const [exists] = await db.select({ id: schema.user.id }).from(schema.user).where(eq(schema.user.className, className)).limit(1)
if (!exists) return failure(c, 400, 'class-not-found', `没有 ${className} 这个班`)
// 改之前学生看到的那一节,改完比一比、告诉全班改了哪些
const before = await todayLessonSnapshot(className)
// 要改的是哪一行:点名的那一节(只认这个班今天的),新开一节就没有,老写法是今天最后布置的那一节
const [target] = newLesson
@@ -762,6 +764,7 @@ classroomRoutes.put('/classroom/lesson', requireTeacher, async (c) => {
.limit(1)
if (!problemDisplayIds.length) {
if (target) await db.delete(schema.classLesson).where(eq(schema.classLesson.id, target.id))
await announceLessonChange(className, before)
return success(c, null)
}
@@ -785,5 +788,6 @@ classroomRoutes.put('/classroom/lesson', requireTeacher, async (c) => {
updatedAt: now,
})
}
await announceLessonChange(className, before)
return success(c, null)
})