- 题目页:这节课同班做对的人多就说「全班已经 N 个人做对了」、都卡着就安慰、第一个做对的夸一句; 通过率不到三成的题错了说「本来就难」、高于七成的说「再看看题」;AI 提示开了没用就提一句; 做对了还有挑战就问敢不敢;流程图分低、拿 S 各有话 - 常点「太难了」的学生错了换软话;这周交得多、例子跑得少的念一句;卡住却从不举手的劝举手; 这周要提示多的劝先自己想 - 首页(这节课没要做的时)每次戳随机说一件:知识点差几道升级、周榜差几道超过前一名、 今天明天的比赛、三天内的新公告;两周以上没来说「好久不见」,只说一回 - 排名页第一名、差前一名几道;成就页差一点的;自学没全对的练一练;专题差最后一道拿奖章 - 运行例子、自己输入、举手也记进 mascot_event(trial、help),GET /mascot/profile 多给「太难了」次数和这一周交、跑例子、举手、要提示的次数 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
81ef4dca6b
commit
aa7e0a6eb8
12 files changed
+296
-25
No files matched your search
@@ -99,7 +99,16 @@ function doneIn(course: Course, ids: number[]) {
|
||||
useMascotGuide(() => {
|
||||
if (!loaded.value || userStore.isTeacherOrAbove) return null
|
||||
const it = resume.value
|
||||
if (it) return { situation: 'learn.continue', n: it.step, actions: [goAction(router, '接着学', tutorialPath(it.course.type, it.step))] }
|
||||
if (it) {
|
||||
const next = goAction(router, '接着学', tutorialPath(it.course.type, it.step))
|
||||
// 接着学的那课之前,离它最近的一课打开过、练一练却没全对(「在学」那一态):先叫回去看看
|
||||
const { titles, progress } = it.course
|
||||
for (let step = it.step - 1; step >= 1; step--) {
|
||||
if (tutorialState(progress[titles[step - 1]!.id]) !== 'started') continue
|
||||
return { situation: 'learn.wrongExercise', n: step, actions: [goAction(router, '去看看', tutorialPath(it.course.type, step)), next] }
|
||||
}
|
||||
return { situation: 'learn.continue', n: it.step, actions: [next] }
|
||||
}
|
||||
return { situation: 'learn.fresh', actions: [goAction(router, '第 1 课', tutorialPath(tab.value, 1))] }
|
||||
})
|
||||
|
||||
|
||||
Reference in new issue
Block a user