Я хочу разработать систему, позволяющую пользователям отмечать нежелательные сообщения. Я хочу автоматизировать процесс карантина, поэтому я хочу поместить сообщения в состояние модерации, но только в случае возникновения каких-либо условий.
Например:
Каждый пользователь имеет достоверность значение: 1000
Если пользователь помечает сообщение, которое я вставляю в таблицу posts_flags вdb: user_id, post_id, user_flag_credibility, author_current_credibility, author_id, комментарий, moderator_comment, статус
Затем я выбираю все флаги и выполняю следующие действия:
FC = average of user_flag_credibility;
NF = count of user_flag_credibility;
GAIN = 1 + NF * 0.2;
AC = avg of author_current_credibility;
if ( FC * GAIN > AC ) { /* post in quarantine */ }
else { /* post remain published */ }
Так, например:
3 пользователя с достоверностью 800, 900, 1000 отмечают должность автора с авторитетом 1000
NF = 2700/3 = 900;
FC = 3;
GAIN = 1 + FC * 0,2 = 1,6;
900 * 1.6 = 1440
1440> 1000 -> сообщение в карантине
или также:
2 пользователей с доверием 800,500 пометить пост автора авторитетность 900
NF = 1300/2 = 650;
FC = 2;
GAIN = 1 + FC * 0.2 = 1.4;
650 * 1.4 = 896
896> 900 -> сообщение остается опубликованным
В конце процесса, чтобы изменить доверие к одному пользователю, я делаю следующее
Если модератор подтверждает, что контент не подходит, все пользователи, которые дали флаг, получают +100 доверия, в противном случае теряют-100 достоверности.
Существует ли стандартный способ обработки несоответствующего содержимого? Это выглядит хорошо или есть что-то, что не работает на ваш взгляд? Я так решаю все с одной таблицей, а лучше с двумя (одна другая таблица для решения модератора). Что вы думаете об этом?
ОБНОВЛЕНИЕ:
Если сообщение подтверждено как плохое, автор также дает -100 баллов доверия
Добавлены комментарии для пользователя и модератора, добавлен статус (ожидает / опубликован / удален)