feat(成就): 多了 9 个好拿的档和「挑战成功」一条线,比赛里做的题也算,这学期八成学生多拿到成就

- 补档:做对 20 道、第一道中等题、交满 30 次、5 天交过题、一次就对 5 道、错 3 次后做对、一天做对 5 道;
  新线「挑战成功」1 次 / 5 次
- 比赛里的提交也计入成就(比赛其实是单班测验,2612 班整班在比赛里做题,原来一个成就都没有);
  参加过几场比赛改成判题时就更新,以前只在后台重扫时刷新
- 奖杯收藏家从 15 个提到 20 个
- 0044 迁移:按新口径从提交记录重数指标,给达标的人补发(已经拿到的不收回)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
xuyueandClaude Opus 5.5 committed 2026-11-03 16:52:00 +08:00
1 parent 1fdee94812
commit cccf7a37be
7 files changed
+4356 -18

No files matched your search

+12 -7
View File
@@ -17,22 +17,22 @@ export const ACHIEVEMENT_METRICS: AchievementMetric[] = [
{
key: 'accepted_count',
name: '做对的题数',
helpText: '去重后通过的题目数量(不含比赛)',
helpText: '去重后通过的题目数量(含比赛题)',
},
{
key: 'mid_ac_count',
name: '做对的中等题',
helpText: '去重后通过的中等难度题目数(不含比赛)',
helpText: '去重后通过的中等难度题目数(含比赛题)',
},
{
key: 'hard_ac_count',
name: '做对的困难题',
helpText: '去重后通过的困难题目数(不含比赛)',
helpText: '去重后通过的困难题目数(含比赛题)',
},
{
key: 'submission_count',
name: '提交次数',
helpText: '提交次数(不含比赛)',
helpText: '提交次数(含比赛)',
},
{ key: 'active_days', name: '有提交的天数', helpText: '有过提交的累计天数' },
{
@@ -45,13 +45,13 @@ export const ACHIEVEMENT_METRICS: AchievementMetric[] = [
{
key: 'max_ac_week_streak',
name: '连续有新做对的周数',
helpText: '连续几个自然周(周一起)每周都至少新通过一道题(不含比赛)',
helpText: '连续几个自然周(周一起)每周都至少新通过一道题(含比赛题)',
},
{ key: 'languages_used', name: '用过几种语言', helpText: '用过多少种编程语言' },
{
key: 'contest_joined',
name: '参加比赛',
helpText: '参加过的比赛数量(本指标是比赛维度,不受比赛提交不计入的限制)',
helpText: '交过题的比赛数量',
},
{ key: 'badge_count', name: '专题奖章', helpText: '获得的专题奖章数量' },
{
@@ -59,6 +59,11 @@ export const ACHIEVEMENT_METRICS: AchievementMetric[] = [
name: '做完的专题',
helpText: '完成的专题数量',
},
{
key: 'challenge_count',
name: '挑战成功',
helpText: '做对之后的挑战,做到了几条(每道题的每条挑战算一次)',
},
{
key: 'first_try_ac_count',
name: '一次就对的题',
@@ -92,7 +97,7 @@ export const ACHIEVEMENT_METRICS: AchievementMetric[] = [
{
key: 'max_code_lines',
name: '最长的代码行数',
helpText: '做对的提交里最长的代码有多少行(空行不算,不含比赛)',
helpText: '做对的提交里最长的代码有多少行(空行不算,含比赛)',
},
{
key: 'achievement_unlocked_count',