Mista Engine 2. Документация движка Ключевые слова: Волшебный форум, Миста, mista, описание, engine
Требования к движку
Версия 2.0
Внешние интерфейсы
Движок форума должен поддерживать следующие внешние интерфейсы:
- HTML/AJAX
Данный интерфейс является основным для входа на форум и общения, а также для администрирования форума.
Интерфейс обеспечивает возможно более полное соответствие HTML-стандарту и корректное отображение HTML-страниц в текущих свежих релизах следующих основных web-браузеров:
Интерфейс построен на идеологии визуальных форм (страниц) с отделённым от содержания дизайном. Все формы и варианты оформления описываются декларативно, хранятся в каталоге форм в БД либо на компьютере пользователя и создаются по мере необходимости в браузере пользователя специальным скриптом - активатором форм. Механизм управления формами предусматривает управление версиями. Формы (страницы) состоят из набора контейнеров-панелей, содержащих примитивы. Панель и примитив - основные элементы интерфейса. Примитивы создаются разработчиками движка. Пользователь (и разработчик) может, с помощью дизайнера форм создать форму, разместить на ней одну или несколько панелей. На панелях можно размещать любые примитивы из набора предопределенных.
Основными примитивами являются:
- Список (таблица)
- Ссылка
- Кнопка
- Редактор
- Объект
Интерфейс включает следующий набор предопределённых форм:
- Список тем
- Список сообщений
- Список пользователей
- Личная карточка пользователя
- Персональные настройки
- Расширенный редактор сообщения
- Журнал действий
- Панель управления правами
- Пульт разработчика
- Дизайнер пользовательских форм
- Дизайнер оформления
Неотсортированные требования (должно отсюда исчезнуть):
- Максимальный переход на AJAX и технологии Web 2.0
- Форма ввода сообщения по аналогии с формой ввода темы
- Дата рождения в личную карточку
- Более гибкая персональная настройка внешнего вида и поведения форума (личные настройки)
- Возможность форматирования сообщений с защитой от злоупотреблений
- Возможность прицепления файлов / картинок к сообщениям (частично реализовано)
- Оценка полезности сообщений участниками
- Аватары участников по личной настройке (частично реализовано)
- Панель администрирования форума
- Возможность посетителям обратить внимание модераторов на конкретный пост/ветку (кнопка "Пожаловаться")
- Запрос причины на удаление / закрытие / утопление ветки
- Возможность посетителям создать личную ветку со страницы правил
- Файлы в Книге знаний, их модерирование
- Редизайн главной страницы Книги знаний
- Новые теги для оформления статей в Книге знаний
- Якоря в статьях для гиперссылок
- Фильтрация статей по автору / редактору.
- Теги для именованных гиперссылок
- Редизайн статической версии Базы знаний
- Раскраска фрагментов программ на разных языках
- XML/RSS/SOAP
Данный интерфейс является единственным для доступа к слою внутренней логики форума. Остальные интерфейсы используют этот интерфейс для получения/модификации информации. Интерфейс построен на идеологии асинхронных/синхронных веб-сервисов как для внешних, так и для внутренних клиентов.
Неотсортированные требования (должно отсюда исчезнуть):
- WAP/КПК
Данный интерфейс оптимизирован для использования на медленных устройствах с бедными визуальными возможностями. Большая часть возможностей интерфейса предопределена и реализована на стороне сервера, как надстройка над интерфейсом XML/RSS/SOAP. Интерфейс построен на идеологии "бедных" веб-страниц (форм). Динамическое отображение данных обеспечивается обработкой серверных php-скриптов.
Интерфейс состоит из набора следующих статических (преднастроенных в html) форм:
- Простой список тем
- Простой список сообщений
- Простой список пользователей
- Простая личная карточка пользователя
- Простые персональные настройки
- Простой журнал действий
Неотсортированные требования (должно отсюда исчезнуть):
- Модерирование в версии для КПК
- Сохранение сессии в версии для КПК
- Распознавание ссылок
Архитектура
Движок написан на PHP 5 (предположительно. ЯП и инструменты реализации обсуждаются) с использованием классов и возможностью использования различных СУБД в качестве хранилища данных и метаданных. Разработка движка ведётся в рамках концепции MVC (Модель-Представление-Контроллер) Архитектурно движок поделен на следующие слои:
- Слой хранения данных (СХД, Модель)
Этот слой обеспечивает хранение, архивацию, изменение и различные операции над данными и метаданными, необходимые для работы слоя внутренней логики. Встроенные механизмы безопасности этого слоя обеспечивают целостность и аутентичность используемых данных.
Что делает:
- Принимает задания от Контроллера (см.ниже), конструирует запрос, обращается к базе данных, выбирает или изменяет данные
- Возвращает результат выборки или сигналы об ошибках
Что знает:
- Знает об SQL-сервере, структуре БД (таблицы, поля, индексы)
Чего не знает:
- Не знает о цели выборки информации, способах её дальнейшего использования
- Не знает о Контроллере и Представлении
СХД экспортирует определения следующих классов:
- Класс Поле
- Класс Запись
- Класс Таблица
- Класс Запрос
- Класс Представление
- Класс Индекс
- Класс Ссылка
- Класс БД
- Класс Каталог
- Интерфейсный слой (ИС, Представление)
ИС обеспечивает перевод данных из внтуренних форматов во внешние и компоновку результатов. В ИС определены механизмы для управления способами предоставления информации(внешние интерфейсы) и оптимизации нагрузки на ИС.
Что делает:
- Принимает данные от Контроллера
- Компонует итоговый отображаемый результат по шаблону и выдаёт его Контроллеру.
Что знает:
- Знает о формате вывода (HTML, TXT, XML) и структуре выходного документа.
- Знает о языке пользователя, часовом поясе, браузере и пр.
- Знает о личных настройках пользователя, влияющих на внешний вид (оформление)
- Знает о CSS-стилях
Чего не знает:
- Ничего не знает о Модели (структуре БД, СХД)
ИС содержит определения следующих сервисов:
- Класс HTML
- Класс XML
- Класс JSON
- Слой внутренней логики (СВЛ, Контроллер)
СВЛ обеспечивает выполнение высокоуровневых операций над данными и метаданными форума, используя возможность обращения к методам классов СХД и ИС. Встроенные механизмы безопасности этого слоя обеспечивают идентификацию и аутентификацию пользователей, разделение доступа к данным в зависимости от ролей. В СВЛ определены служебные механизмы для управления пользователями, темами, сообщениями и статьями, а также автоматизированные элементы поддержки (боты). В СВЛ определены механизмы для управления сессиями и оптимизации нагрузки на СВЛ.
Что делает:
- Принимает входные данные от пользователя (GET, POST)
- Принимает входные параметры, влияющие на состав данных при выборке или параметры действия пользователя.
- Проверяет корректность данных от пользователя (обязательные поля, тип, длина).
- Проверяет права пользователя
- Если есть ошибки, возвращает сигналы об ошибках пользователю, иначе…
- Даёт задания на выборку или изменение данных Модели через строго определённый интерфейс и получает от него результат.
- Даёт задания на оформление через строго определённый интерфейс и получает от него результат.
- Результат может пройти дополнительную обработку и возвращается пользователю
Что знает:
- Знает о бизнес-логике приложения
- Знает о правах пользователей
Чего не знает:
- Не знает о структуре базы данных ничего, кроме интерфейса к СХД
- Не знает об оформлении ничего, кроме интерфейса к ИС
СВЛ экспортирует определения следующих классов:
- Класс Ветка
- Класс Фильтр
- Класс Пользователь
- Класс Роль
- Класс Действие
- Класс Форма
- Класс Сценарий
- Класс Сервис
- Класс Список
- Класс Хранилище
- Класс Контроль
Неотсортированные требования (должно отсюда исчезнуть):
- Отделение содержания от оформления
- Оптимизация структуры базы, многоуровневое кеширование, сокращение трафика, перенос нагрузки на клиента (JavaScript)
- Переход на собственный поисковый движок
- Настройка прав (ролей) пользователей (хард-модеры, лайт-модеры, ведущие секций, инженеры знаний)
- Автоматическое формирование статической базы знаний с ветками форума и статьями КЗ
- Полуавтоматическое формирование выпусков рассылки на основе статей КЗ
- Рубрикатор Книги знаний
- Улучшение работы ТелепатБота
- Новые боты
- Механизм управления баннерами
- Фонд для поощрений разработчиков движка, авторов
- Таргетинг рекламы
- Установка часового пояса в личных настройках
- Личные сообщения между участниками
Инфраструктура разработки
Инфраструктура позволяет разработчикам эффективно и комфортно поддерживать жизненный цикл форума, как продукта. Инфраструктура включает в себя:
- Файловое хранилище с поддержкой версионности
- Форумы для общения и координации
- Хранилище документов и регламентов с возможностью мультидоступа и обеспечением версионности
- Инструменты управления требованиями и ошибками
- Инструменты тестирования
- Среду разработки
Архитектура движка
Ещё не сделано - Здесь будет документация
Руководство пользователя
Ещё не сделано - Здесь будет документация
Функциональные требования
Базовый функционал
- Ветки/сообщения
- Регистрация ников, сессии, личные карточки
Модерирование, администрирование
- Панель управления
- Роли и права пользователей
- Модерирование веток
- Модерирование сообщений
- Модерирование личных карточек
- Личные ветки
- Лента сообщений
Доп.сервисы
- Темы пользователя
- Распознавание ссылок
- Номера постов (слева и справа)
- Личные настройки
- Темы с участием
- Голосования
- Распознавание фрагментов программ
- Плюсики на главной (AJAX)
- AJAX-обновление в ветках
Классификация
- Разделы
- Секции
- Метки
- База знаний
Поиск
- Быстрый поиск по заголовкам
- Поиск по сообщениям
Некритичные доп.сервисы
- Рейтинг
- Статистика
- Фотогалерея
- PDA-версия
- RSS-версия
- Боты
|