Knowledge Base
База знаний по сайту
Здесь собраны правила работы с основными элементами сайта, пользовательскими функциями и служебными разделами по ролям.
При изменении поведения сайта обновляй и README, и эту базу знаний.
Public
Основы работы с сайтом
Ключевые элементы интерфейса и общая логика проекта.
Верхнее меню ведет в персонажей, дуэли, справку, профиль и административные разделы в зависимости от роли.
Карточки персонажей открываются по клику и содержат только публичную информацию без inline-редактирования.
На главной странице лидеры рейтинга показываются как визуальная витрина с аватарами и выделенным первым местом, а не как обычная таблица.
При наведении на ссылки персонажей показывается preview с аватаром, описанием и рейтингами.
BBCode поддерживает обычные и именованные спойлеры. В кратком preview спойлерные блоки целиком вырезаются и не показываются.
У тайтлов есть отдельные страницы `/titles/{slug}` со сводной информацией и списком персонажей.
Public
Персонажи и тайтлы
Что нужно знать про создание персонажей, тайтлы и внешний импорт.
Создавать персонажей могут авторизованные пользователи через отдельную форму.
Страница персонажа предназначена для чтения, а редактирование вынесено на отдельную страницу.
Аватары персонажей можно загружать вручную, а у внешних импортов изображения сохраняются локально.
При синхронизации Shikimori в систему сохраняется и тайтл: название, тип, описание, постер, год, жанры и ссылка на источник.
Если у импортированного персонажа или тайтла нет локальных правок, обновленные данные Shikimori могут автоматически заменить старые.
Shikimori, IGDB и Kinopoisk передают возрастной рейтинг тайтла. Если он 18+, сайт применяет ограничение показа до явного разрешения пользователя.
Для IMDb добавлен отдельный неофициальный провайдер на базе hmerritt/php-imdb-api. Он импортирует фильм или сериал и роли персонажей из cast, не заменяя другие IMDb-источники.
Public
Дуэли
Как работает сравнение персонажей.
Дуэли сравнивают персонажей по нескольким критериям: сила, скорость, защита, выносливость, интеллект, боевой навык, магия, способности и общее впечатление.
Если пользователь не уверен в конкретном критерии, его можно пропустить и отметить только известные сравнения.
После сохранения оценки одна и та же пара персонажей больше не показывается этому пользователю. Повторно могут встречаться только пропущенные пары.
На странице дуэлей есть сворачиваемый блок фильтров.
Левого и правого персонажа можно фильтровать отдельно по типу источника, жанрам и годам выпуска.
Годы и жанры берутся из реально существующих данных на сайте.
Если ни один год или жанр не выбран, автоматически действует режим «Любой».
Есть режим сравнения только внутри одной вселенной.
Выбранные фильтры дуэлей сохраняются локально в браузере.
Public
Каталог персонажей
Поиск, фильтры и сортировка списка персонажей.
На странице `/characters` можно искать персонажей по имени.
Есть фильтры по типу источника, жанру и году выпуска.
Сортировку можно переключать: по общему рейтингу, duel rating, имени, дате добавления и году тайтла.
Карточки персонажей показывают аватар, рейтинг поверх изображения, имя и подпись тайтла.
Public
Профили пользователей
Публичный профиль, редактирование и социальные функции.
У каждого пользователя есть публичная страница `/users/{username}`.
Редактирование собственного профиля вынесено на `/profile/edit`.
Есть локальный аватар, Gravatar, пользовательские CSS-стили, друзья, wall-посты и лайки.
В настройках профиля можно указать дату рождения.
Показ контента 18+ можно включить только после указания даты рождения и только если пользователю уже есть 18 лет.
Если активен хотя бы один коннектор, на странице редактирования появляется раздел связанных учетных записей.
При настроенном Telegram-боте пользователь может привязать Telegram через `/link CODE`.
Если Telegram уже привязан, на странице входа можно авторизоваться через Telegram Login Widget без ввода пароля.
Если сайт открыт внутри Telegram Mini App, система пытается автоматически авторизовать пользователя по привязанному Telegram-аккаунту.
В ACP можно обновить имя, описания и кнопку открытия приложения у Telegram-бота отдельной кнопкой прямо из настроек. Эта же кнопка сразу сохраняет значения в настройках сайта, поэтому после перезагрузки страницы они не теряются.
В ACP есть единая страница "Настройки" с внутренним меню разделов: система, внешний вид, боты и внешние данные.
В режиме Telegram Mini App интерфейс становится компактнее для телефона, а кнопки выхода из аккаунта и отвязки Telegram скрываются.
На телефонах основная навигация переключается в нижнюю панель с иконками, а полный список разделов открывается через кнопку "Сервисы".
На телефонах страница дуэлей использует более компактный режим: шапка скрывается, фильтры открываются по иконке, а строки сравнений становятся плотнее.
В мобильной версии дуэлей оба персонажа должны помещаться в верхнюю часть экрана без лишнего информационного блока.
Кнопка "Пропустить" на дуэлях расположена над критериями, а фильтр каталога персонажей на телефоне сворачивается в строку с кнопкой-иконкой.
CSS и JavaScript подключаются с версией файла, а HTML-страницы отдаются без кэша, чтобы Telegram Mini App и браузеры быстрее подхватывали свежие изменения.
Сайт поддерживает manifest/fullscreen-режим и использует собственную иконку приложения для браузеров и web app.
Если персонаж, тайтл или страница не существуют, сайт показывает отдельную HTML-страницу 404, а preview API возвращает корректный 404 JSON без critical error.
Public
Контент 18+
Как работает ограничение доступа к взрослому контенту.
Контент 18+ скрывается в списках персонажей, дуэлях, preview и на страницах просмотра, если пользователь не включил разрешение.
Для включения показа 18+ нужно указать дату рождения в профиле.
Если пользователю нет 18 лет, доступ к такому контенту не открывается.
При прямом переходе на персонажа или тайтл 18+ система показывает страницу-объяснение с нужными ссылками.
Возрастной статус тайтлов импортируется из Shikimori, IGDB и Kinopoisk, если провайдер его отдает.