fix(plan): 隐藏成就的条件字段也必须遮码
只遮名称和描述、却明文下发 metric/operator/threshold, 学生打开 DevTools 就能看到达成条件,隐藏成就失去意义。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1016,6 +1016,12 @@ class AchievementSerializer(serializers.ModelSerializer):
|
|||||||
name = serializers.SerializerMethodField()
|
name = serializers.SerializerMethodField()
|
||||||
description = serializers.SerializerMethodField()
|
description = serializers.SerializerMethodField()
|
||||||
icon = serializers.SerializerMethodField()
|
icon = serializers.SerializerMethodField()
|
||||||
|
# 条件三件套也必须跟着遮掉:只遮名称和描述、却明文下发
|
||||||
|
# metric/operator/threshold,学生打开 DevTools 就知道"凌晨提交 10 次",
|
||||||
|
# 隐藏成就的意义全部作废
|
||||||
|
metric = serializers.SerializerMethodField()
|
||||||
|
operator = serializers.SerializerMethodField()
|
||||||
|
threshold = serializers.SerializerMethodField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Achievement
|
model = Achievement
|
||||||
@@ -1037,6 +1043,15 @@ class AchievementSerializer(serializers.ModelSerializer):
|
|||||||
def get_icon(self, obj):
|
def get_icon(self, obj):
|
||||||
return "❓" if self._masked(obj) else obj.icon
|
return "❓" if self._masked(obj) else obj.icon
|
||||||
|
|
||||||
|
def get_metric(self, obj):
|
||||||
|
return None if self._masked(obj) else obj.metric
|
||||||
|
|
||||||
|
def get_operator(self, obj):
|
||||||
|
return None if self._masked(obj) else obj.operator
|
||||||
|
|
||||||
|
def get_threshold(self, obj):
|
||||||
|
return None if self._masked(obj) else obj.threshold
|
||||||
|
|
||||||
def get_unlock_rate(self, obj):
|
def get_unlock_rate(self, obj):
|
||||||
total = get_active_user_count()
|
total = get_active_user_count()
|
||||||
if not total:
|
if not total:
|
||||||
|
|||||||
Reference in New Issue
Block a user