# Может ли кто-нибудь пояснить логику повышения до TL3 за «прочитанные посты»?

**URL:** https://meta.discourse.org/t/can-someone-clarify-the-posts-read-tl3-promotion-logic/409057
**Category:** Development
**Created:** [02.Август.2026 01:35:11 UTC](https://meta.discourse.org/t/can-someone-clarify-the-posts-read-tl3-promotion-logic/409057 "2026-08-02T01:35:11Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [02.Август.2026 01:35:11 UTC](https://meta.discourse.org/t/can-someone-clarify-the-posts-read-tl3-promotion-logic/409057/1 "2026-08-02T01:35:11Z")

</div>

Есть один фрагмент кода, который меня бесит:

> <https://github.com/discourse/discourse/blob/7d635130bfcf20154c5fe6b613777ed481f3cd53/app/models/trust_level3_requirements.rb#L155-L163>

Черт возьми, я никак не могу понять, почему количество постов, созданных за указанный период, умножается на процент требуемых прочитанных постов, а затем берется как минимальное значение. Если здесь подразумевается процент прочитанных постов, то разве не должно быть: количество прочитанных постов / общее количество постов, умноженное на 100?

Допустим, за последние x дней было создано 9 постов, а настройка требует всего 2. Разве метод не должен просто вернуть 2, поскольку это меньше лимита постов?

Для справки, вот все значения:

```ruby
[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

```

Я неправильно понимаю назначение этого метода? Спасибо.

---

<div class="post-metadata">

### Author: ![mcwumbly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcwumbly/32/103861_2.png) [@mcwumbly](https://meta.discourse.org/u/mcwumbly)
#### Post date: [02.Август.2026 01:58:11 UTC](https://meta.discourse.org/t/can-someone-clarify-the-posts-read-tl3-promotion-logic/409057/2 "2026-08-02T01:58:11Z")

</div>

Настройка сайта `tl3_requires_posts_read` задается в процентах. Допустим, она равна `10`. При этом ограничение (cap) держит требование в разумных пределах. Допустим, оно равно `100`.

«Пользователь должен прочитать **10%** всех постов за период, но не более **100** ».

Допустим, за этот период было создано 500 постов.

В этом случае для выполнения требования нужно прочитать 50 постов (10% от общего числа).

Вычисление производится как `500 * (10.0/100.0)`, что дает результат `50`.

Ограничение задает верхнюю границу.

Если ваше ограничение больше 50 (например, 100), оно не оказывает влияния.

`[50, 100].min` возвращает `50`.

Но что, если за месяц будет 100 000 постов? В этом случае, без ограничения, кому-то пришлось бы прочитать 10 000 постов, чтобы выполнить требование.

Ограничение в 100 держит это под контролем.

`[100000 * (10.0/100.0), 100].min` возвращает `100`.

Понятно?

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [02.Август.2026 02:14:04 UTC](https://meta.discourse.org/t/can-someone-clarify-the-posts-read-tl3-promotion-logic/409057/3 "2026-08-02T02:14:04Z")

</div>

Ну, полагаю, в следующий раз мне стоит внимательнее читать описания настроек. Всё становится на свои места, спасибо!

---

<div class="post-metadata">

### Author: ![mcwumbly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcwumbly/32/103861_2.png) [@mcwumbly](https://meta.discourse.org/u/mcwumbly)
#### Post date: [02.Август.2026 02:16:30 UTC](https://meta.discourse.org/t/can-someone-clarify-the-posts-read-tl3-promotion-logic/409057/4 "2026-08-02T02:16:30Z")

</div>

Да, можно утверждать, что `tl3_requires_posts_read` лучше было бы назвать как-то вроде `tl3_requires_percent_posts_read`.

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [04.Август.2026 02:17:04 UTC](https://meta.discourse.org/t/can-someone-clarify-the-posts-read-tl3-promotion-logic/409057/5 "2026-08-04T02:17:04Z")

</div>

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.
