【update】有幸协助更新大佬(待修复)(Colab_Activities_Checker)【非官方,民科开发,仅用于预估用】论坛归档文件分析器 + 部分徽章进度追踪 统计工具中登录天数的计算,现已包括真正算入白金升级的天数。
【update】评论区指出此前已有类似的讨论,指北
tldr
-
首先通过 (待修复)(Colab_Activities_Checker)【非官方,民科开发,仅用于预估用】论坛归档文件分析器 + 部分徽章进度追踪 得到用户基础数据。
这之中仍缺失某些关键数据:- 被举报的次数:通过查看系统私信获得 - 每次被举报都将收到系统私信。
- 帖子阅读数量:通过论坛自带汇总链接查看
-
将数据对比以下标准:
- 当前账号未被封禁或禁言,且过去六个月内没有封禁或禁言记录
- 过去一百天内,有五十天登录并至少阅读一个回复
- 过去一百天内,回复了十个以上他人创建的帖子
- 过去一百天内,阅读了五百个以上帖子,和两万个以上回复
- 被举报的回复数量不超过五个,且被不同用户举报的数量也不超过五人
- 过去一百天内,送出三十次以上点赞,收到二十次以上点赞
- 过去一百天内,收到的点赞来自五个以上不同用户,且分布在七天及以上
正文
在许多已有的讨论中大家都非常关心怎么升到白金/如何保级。
相关帖子 - 包括会员等级判定,保级,“为什么我没有升级”
关于本论坛的会员等级体系
如何成为白金会员
白金会员还挺难保持的
论坛账户的统计信息多久更新一次呢
为何会员等级不变呢?努力了51天。。。不升白金也不升金
楼主对升级进度有一些不解,但对比官方文档未得到答案。通过调查楼主发现官方文档中的描述与代码实现有些出入。这篇帖子希望可以一站式回答:
- 为什么我还没升白金
- 怎么才能升回白金
无聊的读代码时间
相信大家都已经读过管理员贴出的关于会员等级的标准
代码实现
文档:
- (最容易踩坑的点)文档未提及访问天数需至少阅读一个回复(这天的登录需要阅读了至少一个回复才会被计入50天当中):
一段无聊的代码
def days_visited
@user.user_visits.where("visited_at > ? and posts_read > 0", time_period.days.ago).count
end
- 文档未提及点赞需来自五个不同用户
要求:
两段无聊的代码
num_likes_received_users >= min_likes_received_users
def min_likes_received_users
(min_likes_received.to_f / 4.0).ceil
end
min_likes_received = 20
:(20.to_f / 4.0).ceil
→5.0.ceil
→5
因此点赞最少来自五个不同用户。
- 文档未提及点赞需分布在七天
要求:
又是两段无聊的代码
num_likes_received_days >= min_likes_received_days
def min_likes_received_days
# Since min_likes_received / 3 can be greater than the number of days in time_period,
# cap this result to be less than time_period.
[(min_likes_received.to_f / 3.0).ceil, (0.75 * time_period.to_f).ceil].min
end
易证 代入最少需要20个赞和100天的滑动窗口可知点赞的分布最少为七天。
白金保级
白金保级比金卡会员升级要略微容易一些,因为系统给了一个相对宽限的乘数(0.9)。这里挖个坑,就不详细说了,如果观众感兴趣可以多聊聊。
怎么还有代码?
def requirements_lost?
return false if trust_level_locked
return false if SiteSetting.default_trust_level > 2
@user.suspended? || @user.silenced? || penalty_counts.total > 0 ||
days_visited < min_days_visited * LOW_WATER_MARK ||
num_topics_replied_to < min_topics_replied_to * LOW_WATER_MARK ||
topics_viewed < min_topics_viewed * LOW_WATER_MARK ||
posts_read < min_posts_read * LOW_WATER_MARK || num_flagged_posts > max_flagged_posts ||
num_flagged_by_users > max_flagged_by_users ||
topics_viewed_all_time < min_topics_viewed_all_time ||
posts_read_all_time < min_posts_read_all_time ||
num_likes_given < min_likes_given * LOW_WATER_MARK ||
num_likes_received < min_likes_received * LOW_WATER_MARK ||
num_likes_received_users < min_likes_received_users * LOW_WATER_MARK ||
num_likes_received_days < min_likes_received_days * LOW_WATER_MARK
end