fix(achievement): 隐藏成就的条件字段一并遮码

This commit is contained in:
2026-08-04 01:14:52 -06:00
parent 562cf4f0b4
commit b9caf55c4c

View File

@@ -27,6 +27,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
@@ -59,6 +65,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: