TL3昇格の「投稿数」ロジックについて教えてください

私を悩ませているコードがあります:

なぜ期間内に投稿された数が、必要な投稿の読み込み率を掛けた値の最小値として扱われているのか、どうしても理解できません。もしここでの意図が「投稿の読み込み率」であるなら、読み込んだ投稿数 ÷ 投稿総数 × 100 ではないでしょうか?

仮に過去 x 日間に 9 件の投稿があり、設定で要求されているのは 2 件だけなら、投稿数の上限より少ないので、メソッドは単に 2 を返すべきではないでしょうか?

参考までに、すべての値を以下に示します:

[2] pry(main)> TrustLevel3Requirements.num_posts_in_time_period.to_i
=> 9
[3] pry(main)> SiteSetting.tl3_requires_posts_read.to_f
=> 2.0
[4] pry(main)> (
[4] pry(main)>         TrustLevel3Requirements.num_posts_in_time_period.to_i *
[4] pry(main)>           (SiteSetting.tl3_requires_posts_read.to_f / 100.0)
[4] pry(main)>       ).round
=> 0
[5] pry(main)> 9*0.02
=> 0.18
[6] pry(main)> SiteSetting.tl3_requires_posts_read_cap
=> 2000

このメソッドの意図を誤解していますでしょうか?よろしくお願いします。

tl3_requires_posts_read サイト設定はパーセンテージです。例えば 10 としましょう。上限は、この要件を合理的な範囲内に保ちます。例えば 100 としましょう。

「ユーザーは期間中のすべての投稿の10%を読み、ただし最大100件までに限る」

その期間に投稿された投稿数が 500 件だったとします。

この場合、要件を満たすには 50 件の投稿を読む必要があります(投稿数の 10%)。

計算は 500 * (10.0/100.0) を行って結果 50 を得るようになっています。

上限は最大値を設定します。

上限が 50 より大きい場合(例えば 100)、影響はありません。

[50, 100].min50 を返します。

では、ある月に投稿数が 100,000 件だった場合はどうでしょうか?この場合、上限がないと、要件を満たすために 10,000 件の投稿を読む必要があります。

上限 100 はこれを制御します。

[100000 * (10.0/100.0), 100].min100 を返します。

意味が通じますか?

まあ、次は設定の説明をもっと注意深く読む必要があるね。完全に納得went。ありがとう!

そうですね、tl3_requires_posts_readtl3_requires_percent_posts_read のような名前にした方が適切かもしれません。