Перейти к содержанию

Черновики и редакционный маршрут

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

Файл draft-example.md имеет правильные title, description, topic и order, но сохраняет draft: true. Его тело существует в исходниках и может редактироваться, однако publishedLessons не включает запись. Самостоятельный маршрут тоже исключает черновики. Статический индекс поиска использует ту же выборку, поэтому новый текст не должен случайно появиться через другой канал.

Новый материал без случайной публикации

Наличие черновика не означает существование публичной страницы с надписью «материал готовится». Для нашей модели редакционный статус скрывает запись до готовности. Если продукту нужны страницы-анонсы, следует ввести отдельный тип содержания и понятную политику индексирования. Нельзя смешивать обещанный курс и скрытую редакционную заметку только ради числа страниц в каталоге.

Новая запись начинается с безопасного состояния по умолчанию. Затем автор выбирает допустимую тему, пишет описание и определяет место в последовательности. Описание не должно превращаться в набор поисковых слов; оно объясняет задачу урока в списке. Порядок отражает предпосылки: материал о поисковом индексе не должен появиться перед введением коллекции, если он использует её функции.

Перед переключением статуса нужно рассмотреть внутренние ссылки, название, права на иллюстрации и фактическую границу проверки примера. Текст может быть написан полностью, а учебная программа ещё не выполнена. Это следует обозначить прямо. Редакторский статус не является заменой журналу проверки и не делает ожидаемый вывод автоматически подтверждённым.

Если новый урок продолжает ту же серию, после смены draft его order меняет соседние ссылки. Добавление в середину последовательности затрагивает два прежних материала. Не проверяйте только новую страницу: предыдущий и следующий урок должны теперь вести к правильным соседям. В статическом проекте это изменение произойдёт при следующей согласованной сборке.

PublicPath нужен только для сохранённого адреса. Новому материалу не следует придумывать PHP-расширение ради похожести на исторический сайт. При появлении старого пути обновляется также legacy-paths.json. Это ограничение примера уже описано: до перехода к единому manifest редактор должен контролировать синхронизацию обеих форм.

Ожидаемое состояние этапа — пять публичных материалов и один черновик в исходниках. У нового черновика нет публичного маршрута, поисковой строки и места в карте. Эти условия можно определить из кода, но при подготовке не получен результат выполнения сборщика. Будущая проверка должна рассмотреть все каналы вывода, а не только отсутствие карточки на первой странице каталога.

Файл EDITORIAL.md фиксирует договор для следующего автора. Он описывает действия и ограничения без заявления о готовом производственном процессе. Для ProfessorWeb статьи этой серии тоже остаются локальными черновиками. Публичность записей внутри учебной «Полки» и публикация самого курса на настоящем сайте — разные решения.

Полный файл src/data/lessons/draft-example.md текущего этапа:

---
title: "Будущий урок"
description: "Редакторский черновик, который не должен попасть в публичные списки."
topic: content
order: 6
draft: true
---

Эта запись намеренно исключена из маршрутов, каталога и поиска.

Полный файл EDITORIAL.md текущего этапа:

# Добавление урока

Скопируйте Markdown в src/data/lessons. Начните с draft: true. Выберите topic из схемы, заполните description и order. ID файла служит внутренним ключом; publicPath нужен только для сохранённого адреса.

Перед выпуском согласуйте порядок, ссылки, права на иллюстрации и синхронную карту legacy-paths.json. Перевод draft в false делает материал доступным следующей сборке, но не публикует его на сервер.

Ручной разбор: черновик отсутствует в каталоге, JSON-поиске и списке маршрутов; публичный материал присутствует по одному адресу; предыдущий и следующий урок соответствуют order. Учебная сборка и проверки не выполнялись.

Разбор состояния библиотеки

Редакторский договор помогает избежать состояния, в котором опубликованный список описывает ещё не написанные материалы как готовые. Черновик существует для автора, но не должен вводить посетителя в заблуждение пустой страницей. Если серия выпускается частями, оглавление может объяснить, какие результаты уже доступны, а какие планируются. Это решение нужно оформить явно, не подменяя его случайной фильтрацией без пояснения.

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

Имя файла после начала публикации лучше рассматривать как устойчивый ключ. Можно изменить заголовок и описание, не переименовывая источник только ради совпадения с новой формулировкой. Если переименование необходимо, требуется перенести ID-связи и сохранить публичный URL. У маленького учебного проекта это видно через articleUrl, но реальная библиотека может иметь больше зависимых индексов и внешних ссылок.

Для самостоятельного варианта переведите draft-example в false и оставьте order шесть. Ожидаемый публичный набор станет из шести материалов, что изменит последнюю страницу каталога и навигацию прежнего последнего урока. Затем верните true. Такой опыт полезен тем, что связывает редакционное действие с несколькими представлениями, не требуя отдельно редактировать каждый список вручную.

Не считайте статус written_local_draft оценкой качества содержания. Он сообщает место процесса: текст сохранён, но ещё не выпущен. Может понадобиться редактура, исполнение учебного примера и разрешённая проверка. Прямое указание этих границ помогает планировать работу большой партии материалов. Иначе количество файлов начнёт восприниматься как количество подтверждённых и опубликованных уроков, хотя это разные состояния.

Файл редакционного договора должен развиваться вместе со схемой. Если появятся авторы, даты, серии или изображения, инструкция обязана объяснить их значение и безопасные начальные данные. Не храните старый шаблон, который создаёт записи с уже недопустимыми полями. Хорошая автоматизация начинается с согласованного формата, а не с быстрого копирования большого числа Markdown-файлов.

Внутри учебной Полки пять записей имеют draft false, чтобы показывать модель публичной выборки. Сами статьи курса ProfessorWeb остаются draft true. Эти два уровня нельзя объединять в один статус: пример описывает возможное приложение, а редакционный файл курса описывает текущий заказ. Публикация учебных записей на отдельном настоящем домене не выполнена, как и публикация новых уроков на ProfessorWeb.

Условия для самостоятельного наблюдения

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

Условие Ожидаемое состояние и его граница
Черновик в исходниках Его можно редактировать, но публичная выборка не должна включать запись.
Карточки нет только на главной Этого недостаточно: самостоятельный маршрут и поиск также должны исключать материал.
Запись готова к выпуску Переключение draft требует следующей сборки, не означает мгновенную публикацию на хостинге.
Урок вставлен в середину Меняются соседи двух прежних материалов, которые тоже нуждаются в рассмотрении.
Новому уроку нужен адрес Обычный HTML URL не требует исторического расширения без основания.
Нужен анонс курса Следует определить отдельную модель анонса, не выдавая скрытый черновик за опубликованную страницу.

Оглавление серии, курсы ProfessorWeb и полный архив исходников. Для этого урока выберите lesson-13.

Первичные источники: Collections.

Редакционный статус: локальный черновик. Установка, учебные программы, браузерные сценарии, тесты и публикация не выполнялись. Описанные эффекты ожидаемые.