feat(挑战): 这节课做完了给「还能挑战」,挑战中编辑器顶上一条紫色的,老师看板上看得出谁在挑战
Deploy / deploy (push) Canceled after 0s

做完这节课(或题库里自己做对)之后列出还能挑战的题;去挑战后编辑器顶上写着要求,
没做到标出是哪几行,做到了写本班第几个、全站第几个。课堂看板做到的格子贴一枚紫色筹码、
在挑战的加一圈紫边,题卡片写挑战成功几人。出题页多一块「挑战」,能从做对的代码里找候选。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
xuyueandClaude Opus 5.5 committed 2026-10-26 08:52:50 +08:00
1 parent 0faf78ad8f
commit 1a173f75d7
19 files changed
+1243 -24

No files matched your search

@@ -0,0 +1,24 @@
/**
* 挑战的颜色:紫。课堂条是绿、题单条是蓝、比赛条是黄,挑战不能和它们撞(设计稿「做对后再挑战」)。
* Naive 的主题里没有紫,暗色下换浅一档,深紫放在暗底上看不清
*/
export function useChallengeTone() {
const isDark = useDark()
return computed(() =>
isDark.value
? {
solid: "#b49cf5",
onSolid: "#17112b",
text: "#c9b8ff",
soft: "rgba(180, 156, 245, 0.14)",
border: "rgba(180, 156, 245, 0.35)",
}
: {
solid: "#5b34c4",
onSolid: "#ffffff",
text: "#2c1a66",
soft: "#f4f0fe",
border: "#ddd3f6",
},
)
}
@@ -26,6 +26,11 @@ interface EntryRules {
similar: boolean
/** 通过之后给「这节课的下一题」 */
lessonNext: boolean
/**
* 做对之后的挑战(编辑器顶上的挑战条、结果里的「还能挑战」)。题单里通过后 1.5 秒就跳回去,
* 比赛提交不判挑战
*/
challenges: boolean
/** 通过之后 1.5 秒弹强制点评 */
reviewAfterAccepted: boolean
/** 通过之后 1.5 秒回题单 */
@@ -57,6 +62,7 @@ const RULES: Record<ProblemEntry, EntryRules> = {
statusTag: true,
similar: true,
lessonNext: true,
challenges: true,
reviewAfterAccepted: true,
backToProblemSet: false,
help: true,
@@ -71,6 +77,7 @@ const RULES: Record<ProblemEntry, EntryRules> = {
// 点进相似题就离开了题单
similar: false,
lessonNext: false,
challenges: false,
// 1.5 秒后要跳回题单页,弹了也会被冲掉
reviewAfterAccepted: false,
backToProblemSet: true,
@@ -86,6 +93,7 @@ const RULES: Record<ProblemEntry, EntryRules> = {
// 撞上同号公开题时反而会在比赛中把题库列给学生
similar: false,
lessonNext: false,
challenges: false,
reviewAfterAccepted: false,
backToProblemSet: false,
help: false,