Учёт существующего контента
Редакционная модель уже определяет, кто принимает решения о новом уроке. Но перед выдачей задания стоит выяснить, не существует ли нужное объяснение в библиотеке. Учёт контента связывает страницы, их учебные результаты и известные ограничения. Результатом этого урока станет маленький реестр, по которому можно отличить новую тему от обновления прежней страницы.
В учебном ProfessorWeb возьмём три объекта: MAT-01 — старый урок LINQ to XML, MAT-02 — серия о статическом сайте из Markdown, PUB-01 — планируемое объяснение сохранения адреса. Идентификаторы и оценки состояния синтетические. Наличие реального URL не означает, что мы провели аудит его текста или измерили посещаемость. Образец реестра находится в lesson-03 архива.
Что является единицей учёта
Одна статья может встречаться в каталоге, оглавлении серии и подборке проекта. Это три способа найти один материал, а не три самостоятельные публикации. За единицу реестра примем материал с устойчивым идентификатором. Отдельно сохраним его публичный адрес и роль в серии. Имя Markdown-файла полезно редактору, но не заменяет адрес, которым пользуется читатель.
Для старого урока укажем /my/LINQ/linq_xml/level7/7_1.php. Для серии — /courses/static-markdown/ только как объект предварительного сопоставления: точное имя действующей страницы нужно подтвердить по проекту перед рабочей интеграцией. В нашем приложении вместо неподтверждённого адреса хранится null и пометка «требуется сверка». Так неизвестное значение не становится выдуманной ссылкой. PUB-01 пока тоже не имеет опубликованного URL.
| ID | Тип | Известный адрес | Редакторское решение |
|---|---|---|---|
| MAT-01 | Старый урок | Путь .php |
Сохранить, предметно сверить |
| MAT-02 | Серия | Не подтверждён | Найти точное оглавление |
| PUB-01 | План | Пока отсутствует | Проверить пересечение целей |
Обратите внимание на различие между «адрес известен» и «содержание актуально». Если путь записан точно, из этого не следует, что пример подходит современной версии технологии. Если текст требует обновления, из этого не следует, что страницу нужно удалить. Реестр должен хранить эти выводы в разных полях, иначе редакционная правка случайно превращается в решение о маршрутизации.
Уровень уверенности
Добавим поля «учебный результат», «дата предметной сверки», «основание оценки» и «следующее действие». Для MAT-01 результат сформулирован предварительно: познакомить с запросами LINQ to XML. Дату проверки оставим пустой. Основание — название и известный путь, а не прочитанный полный корпус. Следующее действие — предметная сверка. Такой реестр честно показывает, какой информации редакции пока не хватает.
Не используйте одно поле «качество: хорошее» для всех решений. Оно не объяснит, нужно ли переписать вступление, заменить устаревший API или добавить переход к следующему уроку. Полезнее короткое замечание с наблюдаемым объектом: «не указана версия примера» или «учебный результат совпадает с планом PUB-01». Замечание имеет силу только вместе с источником наблюдения.
Для новой статьи проверим смысловое пересечение. Если серия MAT-02 уже объясняет связь исходника и публичного пути, возможны три решения. Первое: улучшить существующий урок. Второе: сделать отдельный разбор переноса старых адресов, явно опирающийся на него. Третье: отказаться от дублирующей публикации. Наличие другой формулировки заголовка само по себе не делает материал новым.
Предположим, учебная сверка показала: MAT-02 рассматривает создание нового сайта, а PUB-01 — перенос существующего. Тогда карточка PUB-01 сохраняется, но во вступление добавляется различие исходных условий. Редактор не должен переписывать всё объяснение Markdown ради самостоятельности новой страницы. Достаточно дать минимальные предпосылки и направить к предыдущему материалу, когда читателю требуется подробная основа.
Решение по пробелу
Пробел библиотеки — отсутствие нужного результата для определённой задачи. Это может быть недостающая статья, недостаточный пример или плохо заметная связь между существующими страницами. Если нужный урок есть, но его невозможно найти в оглавлении, новое написание не решит проблему навигации. В реестре такой случай получает действие «исправить доступ», а не «создать дубль».
Для нашей модели зададим четыре действия: сохранить, сверить, обновить, подготовить новый материал. Удаление не является автоматическим следствием устаревания. Особенно осторожно обращаемся с прежними .php-путями: они могут быть частью внешних ссылок. Решение об адресе должно проходить отдельный процесс проекта с сохранением реестра маршрутов; этот урок отвечает за редакционный учёт, а не меняет серверные правила.
Синтетический отчёт в приложении содержит три строки и одну открытую зависимость: найти точный адрес MAT-02. Это маленький, но полезный результат. Большая таблица с двумя тысячами непроверенных оценок выглядела бы внушительно, однако не позволяла бы выбрать безопасное следующее действие. Начинайте с полей, которые действительно помогают принять редакционное решение, затем расширяйте объём реестра.
В after.json добавлен инвентарный срез, а карточки аудитории и ролей сохранены. Ожидается, что при чтении файла вы сможете объяснить, почему PUB-01 пока не является дублем и какое утверждение нужно проверить перед окончательным заданием. Сам файл не содержит результатов реального обхода сайта, HTTP-проверок или аналитической выгрузки. Это состояние редакционной лаборатории.
Для самостоятельного изменения добавьте четвёртый материал, который объясняет только 301-перенаправление. Сопоставьте его результат с сохранением прежнего адреса без переезда. Если различие понятно, две страницы могут дополнять друг друга. Если описание результата одинаково, вернитесь к границам темы. В следующем уроке будем получать предметные объяснения у эксперта и связывать каждое утверждение с основанием.
Когда реестр расширится, добавьте отношение между материалами, а не свободный список похожих названий. Например, PUB-01 «опирается на» MAT-02, а будущий разбор перенаправления «продолжает» PUB-01. Отношение объясняет порядок чтения; оно не создаёт новый публичный адрес. У одной страницы может быть несколько полезных входов, но основной учебный результат сохраняется один. В образце отношение пока имеет статус предположения, потому что MAT-02 не сверена полностью. Это позволяет планировать последовательность, не выдавая её за подтверждённую карту всей библиотеки. Если позднее выяснится, что старая серия содержит другой пример, редактор исправит связь и предпосылки новой статьи. Идентификаторы материалов останутся теми же: изменилось знание о содержании, а не сами объекты учёта. Такой подход особенно полезен при большом количестве прежних страниц и нескольких оглавлениях.