Работа с материалами и статьями

1. Техническая спецификация учебных материалов: форматы, структура, метаданные
Все материалы и статьи на платформе должны соответствовать единой технической спецификации (Tech Spec v.2.1, дата актуализации — февраль 2026). Спецификация фиксирует три обязательных формата: Markdown с расширенным набором блоков (code fences, tables, footnotes, task lists), HTML-фрагмент (для встраивания в шаблоны) и PDF-версия (для офлайн-доступа). К каждому формату применяется контроль целостности: чек-сумма SHA-256 генерируется для всех трёх версий и хранится в блокчейне платформы для защиты от несанкционированных правок.
Структура метаданных включает ровно 12 полей: title, description, keywords (до 10 штук), author, editor, tech_reviewer, date_created, date_modified, version, difficulty_level, estimated_read_time_minutes, required_prerequisites (массив ID курсов). Для статей с кодом обязательно поле compatible_runtimes с массивом версий Node.js, Python, PHP или Go. Все метаданные проходят автоматическую проверку на соответствие JSON Schema (валидатор ajv версии 8.12). При несоответствии материал не публикуется, автор получает отчёт с указанием номера строки и типа ошибки.
- Стандарт заголовков: обязательное использование h2 для основных разделов, h3 — для подразделов, h4 — только для блоков с кодом или примерами. H1 зарезервирован для заголовка страницы. В Markdown-файлах заголовки маркируются двумя решётками и пробелом (## ), в HTML-фрагменте — соответствующими тегами с обязательным атрибутом id для генерации якорей.
- Ограничения на объём: минимальная длина статьи — 2500 символов без учёта кода, максимальная — 12 000 символов. Для материалов с интерактивными элементами (песочница, встроенный компилятор) допустимый максимум — 15 000 символов. Превышение блокируется системой на этапе commit’а.
- Изображения и диаграммы: только формат WebP с максимальным разрешением 1920×1080 пикселей. Схемы и диаграммы должны быть в SVG-формате с встроенным атрибутом aria-label для скринридеров. Все изображения проходят через ImageOptim API для сжатия до 85% качества без потери заметной детализации.
- Встроенный код: обязательное указание языка в открывающем блоке (javascript, python), наличие номеров строк (line-numbers) и подсветки синтаксиса через Prism.js с темой "okaidia". Для каждого блока кода длиннее 15 строк требуется комментарий с описанием, что делает каждая группа строк.
- Ссылки и референсы: все внешние ссылки проверяются еженедельно автоматическим линтером на предмет 404-ошибок и редиректов. Внутренние ссылки должны вести только на страницы с идентификатором версии — если страница обновлена, ссылка помечается флажком "deprecated" до подтверждения редактором. Максимальное количество внешних ссылок на одну статью — 7, внутренних — не ограничено.
2. Процесс ревью и контроль качества: от черновика до публикации
Каждый материал проходит трёхступенчатый процесс ревью, который жёстко регламентирован во времени и метриках. Первый этап — автоматическая валидация: проверка орфографии (словарь русского языка, основанный на Hunspell v1.7.2, пополнен 743 специфическими терминами веб-разработки), проверка читаемости (индекс Флеша-Кинкейда не ниже 65 для русскоязычных текстов), проверка уникальности (пересечение с другими материалами платформы не более 8%). Если хотя бы одна метрика не проходит, материал отклоняется, автор получает детальный отчёт с подсветкой проблемных мест.
Второй этап — техническое ревью: назначенный tech reviewer (должен иметь сертификат не ниже уровня Senior Developer платформы) проверяет корректность всех примеров кода, соответствие выбранных инструментов современным стандартам (на 2026 год в чек-лист входят: актуальность версий библиотек, соответствие ECMAScript 2025 для JS, поддержка PSR-12 для PHP, отсутствие deprecated-функций). Каждый пример кода обязательно компилируется или интерпретируется в изолированном контейнере (Docker-образ с точными версиями рантаймов). Если пример не работает — материал отправляется на доработку с пометкой об ошибке и номером строки.
Третий этап — редакторская вычитка: проверка стилистики, единообразия терминологии (например, запрет на использование "вёрстка" вместо "разметка" в контексте HTML, обязательное использование "интерфейс" вместо "морда" или "лицо" системы), проверка соответствия тона гайду платформы (технический, без излишней пафосности, с фокусом на практические решения). Среднее время прохождения всех трёх этапов — 4 рабочих дня. Для срочных материалов (hotfix-статьи, обновления документации) время сокращается до 12 часов с приоритетным назначением двух ревьюеров параллельно.
3. Версионирование и управление изменениями: Git-подход к учебным материалам
Каждый учебный материал хранится в приватном Git-репозитории платформы с обязательной структурой веток. Основная ветка main — только для опубликованных материалов, ветка dev — для работы, ветки hotfix — для срочных исправлений. Каждое изменение, кроме незначительных исправлений орфографии, требует pull request с минимум одним approve от редактора. Сообщение коммита должно строго соответствовать шаблону: [тип_изменения] #номер_задачи: краткое описание, где тип_изменения принимает значения feat, fix, refactor, style, docs. Пример: [fix] #4127: исправлен синтаксис промисов в примере асинхронной загрузки.
Система автоматически генерирует ченджлог для каждого материала при публикации новой версии. Ченджлог содержит: старую версию, новую версию, дату, список изменений (сгруппированных по типу), имя автора изменений. Студенты видят ченджлог в специальном виджете рядом с содержанием статьи — это позволяет отслеживать, какие уроки обновлялись после их последнего визита. Для материалов с частыми обновлениями (например, статьи о новых версиях фреймворков) предусмотрена функция "подписка на изменения": при обновлении студент получает уведомление в личном кабинете и на email.
- Стандартные метки версий: мажорная (1.x → 2.x) — при полной переработке структуры или изменении более 30% контента, минорная (1.1 → 1.2) — при добавлении нового раздела, обновлении примеров для актуальных версий инструментов, патч (1.1.1 → 1.1.2) — при исправлении ошибок, опечаток, незначительном уточнении формулировок. Мажорные версии проходят полный цикл ревью заново.
- Стратегия обратной совместимости: при публикации мажорной версии старая версия материала не удаляется, а перемещается в раздел "Архив" с пометкой "Устаревшая версия (не рекомендуется для новых студентов)". Доступ к архиву остаётся у всех, кто уже прошёл этот материал, — это позволяет им сверяться с версией, на которой они учились.
- Автоматическое ветвление для переводов: каждый перевод материала создаётся в отдельной ветке с суффиксом языка (main_en, main_ru, main_es). Изменения в основном (русском) материале автоматически генерируют задачу для переводчиков — в их панели управления появляется diff с подсветкой изменённых строк. Перевод считается устаревшим, если отстаёт от оригинала более чем на два коммита или 14 дней.
- Аудит истории правок: любой студент может посмотреть историю правок конкретного раздела статьи — для этого на каждом заголовке h2, h3, h4 есть кнопка "История" (иконка часов). При нажатии открывается модальное окно с хронологией изменений этого блока, включая старый и новый текст, метку версии и имя редактора. Для конфиденциальности данные автора доступны только в обезличенном виде (ID автора).
- Интеграция с CI/CD: при мерже в ветку main автоматически запускается пайплайн: сборка HTML-версии, проверка ссылок валидатором, проверка изображений на соответствие требованиям, расчёт времени чтения, обновление sitemap. Если пайплайн падает, мерж блокируется, ответственный разработчик получает Slack-уведомление с логами ошибок.
4. Специфические требования к материалам разных типов
Материалы делятся на четыре типа, каждый с уникальной спецификацией. Первый тип — "теоретические статьи": минимальное количество практических примеров — 3 на 1000 символов, обязательное наличие summary-блока (не более 5 предложений, выделенных жирным курсивом) в начале статьи, отсутствие маркетинговых формулировок (слова "лучший", "самый эффективный", "уникальный" — под запретом). Второй тип — "практические руководства" (tutorials): каждый шаг должен быть атомарным (одно действие), нумерованным, с обязательным скриншотом или видео-аннотацией для визуальных действий. Допускается максимум 5 шагов без скриншота — только если действие чисто текстовое (например, изменение конфигурационного файла).
Третий тип — "справочные материалы" (reference): строгая структура "Проблема → Причина → Решение → Пример кода → Альтернативы". Для каждого решения указывается уровень сложности (beginner, intermediate, advanced) и время на реализацию в минутах. Справочные материалы должны содержать таблицу совместимости с разными версиями инструментов — например, для статьи о flexbox указывается поддержка в Chrome, Firefox, Safari, Edge начиная с определённой версии (данные берутся из автоматически обновляемой БД caniuse). Четвёртый тип — "кейсы и разборы" (case studies): обязательное указание контекста (какой продукт, какая команда, какой стек), метрик до и после внедрения решения, временных затрат. Без метрик кейс не публикуется, минимум — 3 числовых показателя.
5. Система оценки качества контента: метрики и KPI
Каждый опубликованный материал автоматически оценивается по пяти метрикам, которые собираются без участия пользователей. Первая метрика — "техническая актуальность" (TechFreshness): проверяется дата последнего изменения у всех упомянутых библиотек и инструментов через API GitHub и npm. Если хотя бы одна библиотека не обновлялась более 18 месяцев — материал получает флаг "требуется обновление". Вторая метрика — "время чтения": сравнивается фактическое среднее время чтения (по данным пролистывания и пауз) с заявленным в метаданных. Отклонение более 20% в меньшую сторону сигнализирует о том, что материал слишком сложен для заявленного уровня, в большую — о недостаточной глубине.
Третья метрика — "интерактивность": измеряется доля пользователей (в процентах), которые воспользовались хотя бы одним интерактивным элементом в статье (встроенная песочница, выполнение кода, тест, toggle-блок с дополнительным объяснением). Целевое значение — не менее 35% от всех просмотревших статью. Если показатель ниже — материал помечается как "низкая вовлечённость" и отправляется автору на доработку с рекомендациями добавить интерактивные элементы. Четвёртая метрика — "возвраты": количество уникальных пользователей, которые вернулись к статье повторно в течение 30 дней. Высокие возвраты (более 15% от общего числа просмотров) — индикатор того, что материал используется как справочный, что положительно влияет на рейтинг."
Пятая метрика — "ошибки в коде": после публикации каждый пример кода в статье автоматически запускается в тестовом контейнере раз в 24 часа. Если пример не компилируется или выдаёт ошибку — материал помечается как "требует срочного исправления", автор получает уведомление с точным текстом ошибки и номером строки. Статистика по метрикам доступна автору в личном кабинете в виде дашборда с графиками и историей изменений. Ежеквартально лучшие материалы (по совокупности метрик) получают статус "Рекомендуемый" и выводятся на главную страницу раздела.
Добавлено: 23.04.2026
