Quelqu'un peut-il clarifier la logique de promotion TL3 basée sur les « messages lus » ?

Il y a ce bout de code qui me chiffonne :

Pour toute la vie, je n’arrive pas à comprendre pourquoi le nombre de messages publiés pendant la période est multiplié par le pourcentage de messages lus requis, puis pris comme valeur minimale. Si l’intention ici est le pourcentage de messages lus, ne serait-ce pas le nombre de messages lus / nombre de messages, multiplié par 100 ?

Supposons qu’il y ait eu 9 messages au cours des x derniers jours, et que le paramètre n’exige que 2. Ne devrait-il pas simplement retourner 2, puisque c’est inférieur à la limite de messages ?

Pour référence, voici toutes les valeurs :

[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

Mal interprète-je l’intention de la méthode ? Merci.

Le paramètre de site tl3_requires_posts_read est un pourcentage. Supposons qu’il soit fixé à 10. La limite supérieure maintient cette exigence à un niveau raisonnable. Supposons qu’elle soit fixée à 100.

« Un utilisateur doit lire 10 % de tous les messages publiés pendant la période, mais pas plus de 100 messages. »

Supposons qu’il y ait eu 500 messages publiés pendant cette période.

Dans ce cas, il faudrait lire 50 messages pour satisfaire l’exigence (soit 10 % de ces messages).

Le calcul est effectué comme suit : 500 * (10.0/100.0) pour obtenir le résultat 50.

La limite supérieure fixe cependant un plafond.

Si votre plafond est supérieur à 50 (disons 100), il n’a aucun effet.

[50, 100].min renvoie 50.

Mais que se passe-t-il s’il y a 100 000 messages en un mois ? Dans ce cas, sans la limite, quelqu’un devrait lire 10 000 messages pour satisfaire l’exigence.

La limite de 100 garde cela sous contrôle :

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

Cela a du sens ?

Eh bien, je suppose que je devrai lire les descriptions des paramètres plus attentivement la prochaine fois. C’est tout à fait logique, merci !

Oui, on pourrait dire que tl3_requires_posts_read serait mieux nommé quelque chose comme tl3_requires_percent_posts_read.