Я полагаю, что на самом деле не существует стандартного дизайна для систем предупреждения пользователей. «Три удара - и ты вне игры» - это типичный подход, но не всегда лучший. Например, если на моем веб-сайте есть правила N
, и мы скажем, что K
из этих правил являются серьезными нарушениями, то нарушения, которые не являются настолько серьезными, я бы сказал, нанесли три удара. Но, может быть, серьезные преступления - автобан или нанесение двух ударов?
Если бы мне пришлось настроить что-то вроде этого, я бы создал таблицу, которая выглядела бы так:
user_warnings:
- warning_id
- user_id
- created_at
- offense_level
И затем, возможно, будет настроен запрос, в котором вы сможете найти любых пользователей, у которых уровень нарушений в сумме за последние T
дней был больше или равен значению уровня запрещенных нарушений. И если их общий уровень оскорблений превысил рекомендованное значение, забаньте пользователя. Я бы сказал, установите уровень нарушений примерно на 5, и у вас будет многоуровневый уровень нарушений.
Никогда не удаляйте прошлые преступления, хотя, по моему мнению. Вы никогда не знаете, когда важно помнить вещи, которые произошли ранее, и хорошо вести записи об этом. Просто убедитесь, что этот запрос проверяет только те даты, которые имеют возраст менее 30 дней (или столько дней, сколько могут быть установлены предупреждения, которые вы хотите установить).