· Тип сайта: информационно-образовательный портал с платным доступом к контенту. · Контент: научные статьи (до 30 тысяч штук, возможно больше). · Разделы статей: · По направлениям (примерно 10 разных). · По языку (русские / иностранные). · Бесплатные / платные. · Доступ: платный (разовый или подписка) ко всем статьям или к отдельным направлениям. · Технологии: · CMS: WordPress (последняя стабильная версия). · Поисковый движок: Elasticsearch (через плагин ElasticPress). · Платежи: WooCommerce + Робокасса (официальный шлюз с поддержкой подписок). · Вёрстка: CSS/JS по готовым макетам (макеты предоставлю). · Адаптивность: под все устройства.
2. Функциональность админки (для редакторов)
· Создание / редактирование / удаление статей (кастомный тип записи article). · Назначение статье: · направления (таксономия direction), · языка (таксономия language), · метки «бесплатная / платная». · Возможность закрыть платную статью от просмотра неавторизованным пользователям (виден только заголовок и краткая аннотация). · Управление доступом к направлениям: какие направления входят в пакеты подписок.
3. Платёжная система и доступ
3.1. Варианты оплаты (через WooCommerce + Робокассу)
· Разовый доступ ко всем статьям (навсегда). · Разовый доступ к выбранным направлениям. · Подписка (рекуррентные платежи) — ежемесячная / ежегодная: · ко всем статьям, · к выбранным направлениям. · Возможность для пользователя в личном кабинете: · видеть свой текущий доступ, · продлить подписку, · отменить автоматическое списание.
3.2. Логика доступа
· Пользователь регистрируется (обычная регистрация WordPress). · После успешной оплаты получает роль или членство (MemberPress / Paid Memberships Pro) с доступом к определённым направлениям или ко всем статьям. · Платные статьи полностью скрыты (или показывается только анонс) для тех, у кого нет соответствующего доступа.
4. Поиск (основное требование)
4.1. Первый тип поиска (мгновенный, с фильтрами и приоритетом)
Реализуется через ElasticPress + кастомные настройки.
Обязательные возможности:
· Поисковая строка на сайте. · При вводе текста — мгновенный выпадающий список (autosuggest) с результатами: · сначала статьи, где совпадение в названии, · затем статьи, где совпадение только в тексте (или в аннотации). · После нажатия Enter → открывается полная страница результатов поиска с кратким резюме каждой статьи. · Фильтры на странице результатов (или в выпадающем списке): · по направлениям (одно или несколько), · по языку, · только платные / только бесплатные, · по типу доступа (есть у пользователя / нет). · Поиск учитывает права доступа: · платные статьи видны в результатах, но текст недоступен без оплаты (показывается заглушка).
4.2. Второй тип поиска — семантический (по смыслу)
Важное уточнение: этот пункт может быть реализован отдельным этапом после запуска основного функционала. Исполнитель должен оценить его отдельно.
Требование к семантическому поиску:
· Поле ввода вопроса (естественным языком). · Система возвращает наиболее релевантные статьи, отвечающие на вопрос (не просто совпадение ключевых слов). · Используется векторный поиск (Elasticsearch с плотными векторами, либо отдельный сервис). · Возможность фильтрации по направлениям и языку. · Желательно выделение фрагмента текста с предполагаемым ответом.
Если не сможете сделать семантический поиск, то укажите это в отклике.
5. Обязательные к выполнению пункты (без которых приёмка не состоится)
· Всё, кроме семантического поиска, должно быть реализовано в полном объёме. · В том числе: · бэкенд на PHP (WordPress + кастомные типы и таксономии), · вёрстка по макетам, · WooCommerce + Робокасса (разовые и рекуррентные платежи), · разграничение доступа к направлениям, · первый тип поиска (мгновенный с ElasticPress и фильтрами).
6. Требования к производительности
· Поиск (первый тип) должен отрабатывать менее 0,5 секунды при одновременной работе 100 пользователей. · Elasticsearch выделяется на отдельный сервер или VPS. · Поддерживается индексация всех статей (включая текст) через ElasticPress.
7. Что хочу получить на выходе:
· Полностью работающий сайт на WordPress. · Исходные коды темы / дочерней темы. · Файлы конфигурации Elasticsearch. · Инструкция по администрированию (как добавлять статьи, менять цены, настраивать доступы). · Документация по поиску (как работают фильтры и приоритеты).
8. Условия отклика
· чётко напишите, берётесь ли за семантический поиск или только за основной функционал (пункты 1–4.1). · Опыт с ElasticPress и WooCommerce Subscriptions — обязателен. · Примерная стоимость такого сайта под ключ (по верхней планке) и стоимость часа вашей работы.