Показатели в отчёте «Соотношение флагов пользователя» кажутся немного запутанными.
Например:
Пользователи, у которых есть только оспоренные флаги, получают более высокий балл, чем те, у кого нет флагов, и выше тех, у кого примерно одинаковое количество согласованных и оспоренных.
Те, у кого, например, 100 оспоренных и 100 согласованных флагов, получают тот же балл (0), что и человек без флагов.
Мой сценарий использования этого конкретного отчёта — выявить пользователей, которые наиболее или наименее соответствуют требованиям модерации. С этой точки зрения, соотношения 15/0 и 0/15 одинаково важны, но по разным причинам, и в таких случаях балл 255 / -255, на мой взгляд, позволил бы значительно точнее отразить ситуацию. Однако я не уверен, как алгоритм может реализовать это, одновременно учитывая объём флагов, что также не менее важно.
Вау, это значит, что при постоянном значении agreed, по мере роста значения disagreed, оценка будет становиться всё лучше и лучше (когда disagreed > agreed).
Более разумная и простая формула может выглядеть так:
(agreed * agreed) - (disagreed * disagreed)
То есть agreed всегда будет повышать оценку, а disagreed — всегда понижать. Не знаю, есть ли необходимость усложнять формулу дальше, но это моё мнение (если допустимо, что оценка может быть отрицательной).
Думаю, это нормально. Есть ли здесь какая-то проблема, учитывая, что оба значения (одно должно увеличивать, а другое — уменьшать оценку) одинаковы?
Я написал не большую часть кода — я в основном исправил ошибку, из-за которой не отображались записи, когда количество несогласий превышало количество согласий. Поэтому я не уверен в большинстве логических решений. @eviltrout
Я использовал умножение согласий на самих себя, так как подумал, что будет интересно выделить пользователей, с которыми мы никогда не расходимся во мнениях. Однако это крайний случай, и большинство пользователей не попадут в эту категорию, поэтому, вероятно, стоит оптимизировать другую ветку логики.
Не стесняйтесь исправить формулу, чтобы она лучше обрабатывала любые специфические случаи, которые она сейчас не учитывает.