feat(achievement): 添加早起提交次数指标
5:00–7:00 的提交计数,与 midnight_submissions 对称,5 点为分界不重叠。 纯计数指标,不依赖 _ 前缀辅助键,因此无需 recompute_state。 部署后需跑 recompute_achievements,否则存量用户该指标为空。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -252,6 +252,18 @@ class MidnightSubmissions(BaseMetric):
|
|||||||
return sum(1 for t in _practice_submissions(user.id).values_list("create_time", flat=True) if 0 <= timezone.localtime(t).hour < 5)
|
return sum(1 for t in _practice_submissions(user.id).values_list("create_time", flat=True) if 0 <= timezone.localtime(t).hour < 5)
|
||||||
|
|
||||||
|
|
||||||
|
@metric("early_bird_submissions", "早起提交次数", "5:00–7:00 之间的提交次数")
|
||||||
|
class EarlyBirdSubmissions(BaseMetric):
|
||||||
|
"""与 midnight_submissions 对称的作息维度。5 点是两者的分界,不重叠。"""
|
||||||
|
|
||||||
|
def on_submission(self, metrics, sub, ctx):
|
||||||
|
if 5 <= ctx["local_hour"] < 7:
|
||||||
|
metrics["early_bird_submissions"] = metrics.get("early_bird_submissions", 0) + 1
|
||||||
|
|
||||||
|
def recompute(self, user):
|
||||||
|
return sum(1 for t in _practice_submissions(user.id).values_list("create_time", flat=True) if 5 <= timezone.localtime(t).hour < 7)
|
||||||
|
|
||||||
|
|
||||||
@metric("compile_error_count", "编译错误次数", "累计编译错误的次数")
|
@metric("compile_error_count", "编译错误次数", "累计编译错误的次数")
|
||||||
class CompileErrorCount(BaseMetric):
|
class CompileErrorCount(BaseMetric):
|
||||||
def on_submission(self, metrics, sub, ctx):
|
def on_submission(self, metrics, sub, ctx):
|
||||||
|
|||||||
Reference in New Issue
Block a user