PSI.Functions

Table of Contents

1 Первая очередь

1.1 Управление пользователями

1.1.1 Регистрация

1.1.2 Вход

1.1.3 Исправление профиля

Исправление профиля напоминает регистрацию, разве что, пользователь не вводит подтверждение пароля и код безопасности (CAPTCHA). Пользователь может исправлять основные и дополнительные атрибуты учетной записи.

1.1.4 Выход

1.1.5 Подсчет рейтинга

Рейтинг пользователя (он же "скор", "карма" или "сила") определяет длительность активного пребывания участника на форуме.

Сразу после регистрации рейтинг s любого пользователя по умолчанию устанавливается в S0 = 50 абсолютных баллов. Далее до первого сообщения он не изменяется. В момент публикации первого сообщения, адресованного всем пользователям (здесь и дальше учитываются только такие сообщения, если явно не оговорено обратное), для пользователя устанавливается временная метка t0 -- момент начала активного участия. Пусть t1 -- момент публикации последнего сообщения пользователя, в момент публикации первого сообщения он, естественно, равен t0. Наконец, при начислении рейтинга важен "интервал ожидания" T, в рабочих условиях T равно 1 дню (точнее, суткам), при отладке это время может быть уменьшено до нескольких минут. Далее расчет скора происходит по следующему алгоритму.

Предусловия: пользователь опубликовал, как минимум, одно сообщение, то есть, метки t0 и t1 установлены. Пользователь публикует новое сообщение в момент времени t.

  1. Если t - t1 > T, то t0 := t и перейти к пункту 4. Пользователь не публикует сообщения (не участвует в публичных обсуждениях) больше суток (интервала ожидания). Рейтинг за прошедший период не начисляется, отсчет начинается сначала.
  2. Если t - t1 < T, а t - t0 > T, и у пользователя с момента t0 есть сообщения (любые сообщения, в том числе, личные или в закрытых группах) со штрафными санкциями, то t0 := t и перейти к пункту 4. При наличии штрафных санкций в течение суток (интервала ожидания) рейтинг ползователя не растет.
  3. Если t - t1 < T, а t - t0 > K*T (по умолчанию K=2, думаю, этот параметр можно установить жестко), и у пользователя с момента t0 нет сообщений со штрафными санкциями, то s := s + 1, t0 := t. Если пользователь активно и регулярно участвовал в публичных обсуждениях в двух (K) суток (интервалов ожидания), и вел себя корректно, то рейтинг увеличивается на одну единицу, и отсчет начинается сначала.
  4. t1 := t. Только что опубликованное сообщение считается последним опубликованным.
Количество звезд равно абсолютному рейтингу, деленному на 100 и округленному вниз. Абсолютный рейтинг известен только самому участнику и модераторам, число звезд видно всем, и отображается в подписи к сообщениям (или под/над аватарой) пользователя.

Для анонимных пользователей рейтинг не начисляется.

Замечания:

  1. Момент времени t1 можно не хранить отдельно, а брать прямо из базы данных для последнего по времени сообщения.
  2. На ЛОР, где эта система работает, обновление скора вообще происходит в полночь по крону -- запускается скрипт, и перевычисляет рейтинги всех пользователей за прошедшие сутки. Это позволит не хранить переменную t0, но менее надежно -- зависит от правильности работы службы крона плюс создает нагрузку на сервер в определенные моменты времени.
  3. См. также Рейтинг пользователя, где указано, что кроме публикации сообщений активным участием также считается оценка сообщений других пользователей и участие в голосованиях/опросах.

1.1.6 Анонимные пользователи

Анонимные пользователи представлены в системе специальной учетной записью anonymous (Аноним), все действия анонимных пользователей фиксируются в этой учетной записи. Из основных атрибутов учетной записи используется только псевдоним пользователя. Рейтинг анонимного пользователя не вычисляется, и всегда составляет 50 баллов (Sa). Ограничитель активности анонимного пользователя может быть рассчитан и управляться так же, как и у других пользователей (хотя и сложно представить, как это будет работать). Вычисляемые статистические атрибуты рассчитываются так же, как и у других пользователей. Дополнительные атрибуты не задаются и не ведутся.

Анонимный пользователь ограничен в правах -- ему разрешено только публиковать новые сообщения или отвечать на сообщения других пользователей, если они явно это допускают. При публикации каждого сообщения аноним вводит код безопасности (CAPTCHA). Кроме того, анонимный пользователь может указать адрес e-mail. Все остальные действия (оценка сообщений, голосование, установка меток) анониму запрещены. Анонимный пользователь не может изменять права на свои сообщения после того, как они опубликованы.

Система указывает IP для анонимных пользователей.

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

1.1.7 Восстановление пароля

1.1.8 Просмотр списков пользователей

1.2 Управление сообщениями

1.2.1 Создание сообщения

1.2.2 Ответ на сообщение

1.2.3 Исправление сообщения

1.2.4 Голосования и опросы

1.2.5 Оценка сообщения и отзыв оценки

1.2.6 Управление разрешениями на сообщение

Прежде всего, пользователь может управлять разрешениями на сообщение при исправлении сообщения (см. п.2). Отдельная страница по управлению разрешениями используется в альтернативных путях при создании сообщения, ответе на него и исправлении сообщения. Наконец, отдельное управление сообщениями сделано отдельным действием, чтобы пользователь мог управлять разрешениями, не создавая новой версии сообщения (как это происходит при исправлении сообщения).

В настоящее время пользователь управляет следующими разрешениями:

1.2.7 Разметка BB-кодами и WYSIWYG-редактор

Просто возможность вводить богатую разметку текста сообщения BB-кодами, а также WYSIWYG-редактор, который позволяет выпольнять такую разметку через графический интерфейс.

1.2.8 Индексация и поиск с помощью публичных поисковиков

Эта возможность предусматривалась в предположении, что движок системы будет писаться с нуля, либо выбранный движок не имеет возможности встроенного поиска. В этом случае предлагалось в первой очереди реализовать интерфейс поиска, основанный на API, предоставляемых публичными поисковиками, такими, как Google или Yandex. Примером такого поиска может быть

http://www.python.org/search/

(Search the Python Website using Google).

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

Если будет возможность сделать быстрый и качественный поиск встроенными средствами движка, то лучше, конечно, будет использовать его. На ЛОР, например, за 10 лет так и не сделали нормальный поиск, и через Google сообщения найти быстрее, чем с помощью встроенного поиска.

1.2.9 Тематические списки сообщений

В тематическом списке сообщения представлены кратким описанием. Из всего сообщения в тематическом списке указываются только следующие атрибуты:

1.2.10 Режим просмотра без игнорирования

Для каждого сообщения пользователь может установить личный признак игнорирования. После этого пользователь просто не видит такое сообщение, так же, как и все ответы на него, ответы на эти ответы и так далее. В результате из поля зрения пользователя исчезает целый информационный кластер.

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

Когда пользователь не может найти нужного сообщения, и он подозревает, что оно просто попало в игнорируемую область, пользователь может перейти в режим просмотра без игнорирования. В этом случае пользователь увидит все сообщения, даже игнорируемые.

Пользователь может также вернуться к обычному режиму просмотра, когда игнорируемые сообщения не видны.

1.2.11 Режим просмотра без модераторских (штрафных) ограничений разрешения доступа

Модератор, применяя штрафные санкции, может ограничить разрешения доступа к сообщениям. В частности, модератор может полностью закрыть доступ на просмотр сообщения, в результате для всех пользователей сообщение вместе со всеми ответами на него становится невидимым.

Пользователь может снять ограничение модератора для разрешения на просмотр (и только на просмотр), в результате все оштрафованные сообщения становятся видны. Для каждого оштрафованного сообщения указывается причина санкций -- нарушенный пункт правил.

1.2.12 Удаление сообщения

Сообщение можно удалить, только если на него нет реакции, то есть, на него нет ответов/комментариев, его не оценили, никто не участвовал в опросе/голосовании. Удаленное сообщение полностью исчезает из системы.

Удалять сообщение может только автор и модераторы.

1.2.13 Версия ленты для печати

Убираются картинки и лишние блоки

1.2.14 Установка фокуса

1.3 Управление игнорированием

1.3.1 Игнорирование сообщений

1.3.2 Список игнорирования пользователей

1.4 Управление метками

1.4.1 Создание метки

1.4.2 Исправление названия метки

1.4.3 Удаление метки

1.4.4 Назначение метки

1.4.5 Снятие метки

1.5 Управление рабочими группами

1.5.1 Создание рабочей группы

1.5.2 Управление групповыми метками

1.5.3 Вступление в рабочую группу

1.5.4 Управление правами пользователя в группе

1.5.5 Выход из группы

1.5.6 Смена лидера группы

1.6 Модерирование

1.6.1 Управление правами пользователей

1.6.2 Управление разрешениями на сообщение (штрафные санкции)

1.7 Администрирование

1.7.1 Управление правами модераторов

1.7.2 Блокировка по IP

2 Вторая очередь

2.1 Почтовая рассылка

2.1.1 По автору

2.1.2 По метке

2.1.3 Для сообщения

2.2 Коллективная правка

2.2.1 Управление правом на исправление

2.2.2 Смена владельца

2.3 Wiki-функции

2.3.1 Wiki-коды (Wiki-разметка)

2.3.2 Создание сообщений Wiki-способом

2.3.3 История исправлений

2.3.4 Восстановление версии

2.4 Фотогалереи (?)

2.5 Библиотека

2.6 Арбитраж и модераторский рейтинг

2.7 Встроенный поиск с учетом прав доступа

2.8 Группа экспертов и работа с Золотым фондом

3 Перспектива

3.1 Ограничение на число отправленных сообщений (мана)

3.2 Отбор и сортировка пользователей по критериям из профилей

3.3 Оперативное уведомление о личных сообщениях

3.4 Уведомление о доставке личного сообщения

3.5 Механизм заявок в Золотой фонд

3.6 Расширение возможностей отбора и поиска

3.7 Дополнительная рейтинговая статистика

3.8 Сложные методы принятия решений

3.9 Иерархическая структура рабочих групп

3.10 Иерархическая структура меток

3.11 Слежение за правами на сообщение в зависиомости от того, кто воспользовался правом

3.12 Автоматический пересчет прав

3.13 Система ведения версий для статей

3.14 Множество опросов в одной статье

3.15 Динамические опросы и голосования

3.16 Экспорт информации и версия для печати (с вики)

3.17 Древовидное представление информации

3.18 Отбор сообщений с подозрением на нецензурные выражения

3.19 Расширение возможностей по мере заполнения профиля

Было бы не плохо, чтоб пользователь расширял возможности просмотра, дополняя свой профиль. Например, что просматривать блок с контактной информацией других пользователей, вначале он должен указать свои контакты. Если он желает просматривать галереи других пользователей, он должен добавить хотя-бы 3 фото в свою. И т.д. но в пределах разумного, конечно.

Author: <eugine@base.home>

Date: 2008/03/29 14:17:21