Alguém pode esclarecer a lógica de promoção para TL3 com base em 'postagens lidas'?

Tem esse trecho de código que está me deixando na dúvida:

Por mais que eu tente, não consigo entender por que o número de publicações feitas no período é multiplicado pela porcentagem de publicações lidas exigidas, e depois esse resultado é usado como valor mínimo. Se a intenção aqui é calcular a porcentagem de publicações lidas, não seria o número de publicações lidas dividido pelo total de publicações, multiplicado por 100?

Supondo que tenham sido feitas 9 publicações nos últimos x dias, e a configuração exija apenas 2, não deveria o método simplesmente retornar 2, já que é menor que o limite máximo de publicações?

Para referência, aqui estão todos os valores:

[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

Estou interpretando mal a intenção do método? Obrigado.

A configuração do site tl3_requires_posts_read é uma porcentagem. Digamos que seja 10. Enquanto o limite mantém o requisito vinculado a algo razoável. Digamos que seja 100.

“Um usuário deve ler 10% de todas as publicações no período, mas não mais de 100

Digamos que tenham sido feitas 500 publicações nesse período.

Nesse caso, seriam necessárias 50 publicações lidas para atender ao requisito (10% dessas publicações)

A aritmética é feita como 500 * (10.0/100.0) para obter o resultado 50

O limite estabelece um limite superior, no entanto.

Se o seu limite for maior que 50 (digamos 100), então não terá efeito.

[50, 100].min retorna 50

Mas e se houver 100.000 publicações em um mês? Nesse caso, sem o limite, alguém teria que ler 10.000 publicações para atender ao requisito.

O limite de 100 mantém isso sob controle

[100000 * (10.0/100.0), 100].min retorna 100

Isso faz sentido?

Bem, acho que preciso ler as descrições das configurações com mais atenção da próxima vez. Faz todo o sentido, obrigado!

Sim, tl3_requires_posts_read poderia, argumentavelmente, ter um nome melhor, como tl3_requires_percent_posts_read.