/api/user/summary: streak.activeToday and streak.lost for the app's lit / at-risk / frozen flame
activeToday: activity recorded today (Tehran date). lost: length of a streak that broke (last active day before yesterday), so the app can show it frozen. Same rule as effective_current_streak; the weekly report keeps its own two-field streak serializer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,14 @@ class StreakSummarySerializer(serializers.Serializer):
|
||||
longest = serializers.IntegerField()
|
||||
|
||||
|
||||
class UserStreakSerializer(StreakSummarySerializer):
|
||||
"""زنجیره در /api/user/summary: بهعلاوهی وضعیتی که خانه با آن آتش/در خطر/یخزده را نشان میدهد."""
|
||||
activeToday = serializers.BooleanField(help_text='امروز (وقتِ تهران) فعالیتی ثبت شده؛ زنجیره امروز روشن است.')
|
||||
lost = serializers.IntegerField(
|
||||
help_text='طولِ زنجیرهای که با نیامدنِ دیروز شکست؛ صفر یعنی چیزی نشکسته. اپ آن را «یخزده» نشان میدهد.',
|
||||
)
|
||||
|
||||
|
||||
class UserSummaryResponseSerializer(serializers.Serializer):
|
||||
userId = serializers.CharField()
|
||||
name = serializers.CharField()
|
||||
@@ -13,7 +21,7 @@ class UserSummaryResponseSerializer(serializers.Serializer):
|
||||
gradeId = serializers.IntegerField(allow_null=True)
|
||||
xp = serializers.IntegerField()
|
||||
coins = serializers.IntegerField()
|
||||
streak = StreakSummarySerializer()
|
||||
streak = UserStreakSerializer()
|
||||
subscription = serializers.CharField(allow_null=True)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user