¿Alguien puede aclarar la lógica de promoción TL3 por 'lecturas de publicaciones'?

Hay un fragmento de código que me tiene inquieto:

Por más que lo intento, no logro entender por qué las publicaciones realizadas en el período de tiempo se multiplican por el porcentaje de publicaciones requeridas leídas, y luego se toma como valor mínimo. Si la intención aquí es calcular el porcentaje de publicaciones leídas, ¿no debería ser publicaciones leídas / número de publicaciones, multiplicado por 100?

Supongamos que ha habido 9 publicaciones en los últimos x días, y la configuración solo requiere 2. ¿No debería el método simplemente devolver 2, ya que es menor que el límite de publicaciones?

Para referencia, aquí están todos los 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

¿Estoy malinterpretando la intención del método? Gracias.

La configuración del sitio tl3_requires_posts_read es un porcentaje. Digamos que es 10. Mientras que el límite mantiene el requisito dentro de algo razonable. Digamos que es 100.

“Un usuario debe leer el 10% de todas las publicaciones en el período, pero no más de 100

Digamos que hubo 500 publicaciones realizadas en ese período.

En ese caso, se necesitaría leer 50 publicaciones para cumplir con el requisito (10% de esas publicaciones)

El cálculo se realiza como 500 * (10.0/100.0) para obtener el resultado 50

El límite establece un límite superior, sin embargo.

Si tu límite es mayor que 50 (digamos 100), entonces no tiene efecto.

[50, 100].min devuelve 50

Pero, ¿qué pasa si hay 100,000 publicaciones en un mes? En ese caso, sin el límite, alguien tendría que leer 10,000 publicaciones para cumplir con el requisito.

El límite de 100 mantiene eso bajo control

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

¿Tiene sentido?

Bueno, supongo que la próxima vez tendré que leer las descripciones de la configuración con más atención. ¡Tiene todo el sentido, gracias!

Sí, se podría argumentar que tl3_requires_posts_read debería llamarse algo como tl3_requires_percent_posts_read.