Qualcuno può chiarire la logica di promozione TL3 basata sui 'post letti'?

C’è questo pezzo di codice che mi sta dando noia:

Per la vita mia, non riesco a capire perché il numero di messaggi pubblicati nel periodo di tempo venga moltiplicato per la percentuale di messaggi richiesti da leggere, per poi essere preso come valore minimo. Se l’intenzione qui è calcolare la percentuale di messaggi letti, non dovrebbe essere messaggi letti / numero di messaggi, moltiplicato per 100?

Supponiamo che negli ultimi x giorni ci siano stati 9 messaggi e che l’impostazione richieda solo 2: non dovrebbe il metodo restituire semplicemente 2, dato che è inferiore al limite massimo di messaggi?

Per riferimento, ecco tutti i valori:

[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

Sto fraintendendo lo scopo del metodo? Grazie.

L’impostazione del sito tl3_requires_posts_read è una percentuale. Supponiamo che sia 10. Il limite massimo mantiene il requisito entro valori ragionevoli. Supponiamo che sia 100.

“Un utente deve leggere il 10% di tutti i post nel periodo, ma non più di 100

Supponiamo che in quel periodo siano stati pubblicati 500 post.

In tal caso, sarebbero necessari 50 post letti per soddisfare il requisito (il 10% di quei post)

Il calcolo viene eseguito come 500 * (10.0/100.0) per ottenere il risultato 50

Il limite massimo stabilisce un tetto superiore.

Se il tuo limite è maggiore di 50 (ad esempio 100), allora non ha effetto.

[50, 100].min restituisce 50

Ma cosa succede se ci sono 100.000 post in un mese? In tal caso, senza il limite, qualcuno dovrebbe leggere 10.000 post per soddisfare il requisito.

Il limite di 100 mantiene la situazione sotto controllo

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

Ha senso?

Beh, immagino che la prossima volta dovrò leggere le descrizioni delle impostazioni con più attenzione. Ha perfettamente senso, grazie!

Sì, tl3_requires_posts_read potrebbe ragionevolmente essere rinominato in qualcosa come tl3_requires_percent_posts_read.