Лучший способ сохранить критерии Значка?

Я думал о том, как реализовать функцию значка, аналогичную SO на новом веб-сайте. Каков наилучший способ хранения критериев для значков?

Две идеи:

  • Весь код
  • "Вторая система" - создать мета-архитектуру для определения значков и их критериев. Храните некоторую информацию в базе данных и запрашивайте код, чтобы определить значки и их критерии.

Есть ли лучшие способы?

Ответ 1

Правила.

Вы создаете события в системе и используете правила в процессоре потока событий.

В частности, скажем, у вас есть значок "сделано 10 сообщений". Вы не запускаете "select count (*) из сообщений, где user =: user" для каждого сообщения. Скорее, у вас есть простое правило, которое следит за каждым сообщением и "подсчитывает", сохраняя правила в профиле пользователя.

Таким образом, "сделанные 10 должностей" столь же дешевы, как "сделанные 1 000 000" должностей.

Это также делает систему гораздо более расширяемой.

Ответ 2

Я согласен с Волей на этом.

Создавайте "события" над страницами, поэтому каждый раз, когда происходит событие, т.е. пользователь удаляет сообщение, он будет запрашивать модуль события с событием, скажем, EVENT_USER_DELETE_POST, а затем вы можете выбрать это событие и построить на нем запрос. Затем вы можете решить, удостоен ли значок или нет.

Это позволит сохранить две логики отдельно и сохранить модульный дизайн. Это должно быть очень легко реализовать таким образом.

Единственным недостатком является то, что если событие не было "захвачено", то пользователь, возможно, заслужил критерии пропуска, но он еще не был вознагражден. Однако этого никогда не должно происходить. Единственная ситуация, о которой я могу думать, - это манипулировать базой данных вручную.